Notice: This website is an unofficial Microsoft Knowledge Base (hereinafter KB) archive and is intended to provide a reliable access to deleted content from Microsoft KB. All KB articles are owned by Microsoft Corporation. Read full disclaimer for more details.

Background Batch Compile May Cause a Deadlock When the Thread Pool Has Been Exhausted


View products that this article applies to.

Summary

When you perform a background batch compile, the compile may cause the Aspnet_wp.exe process to deadlock if all the worker threads are used. When you set the process model to maxWorkerThreads = 20, and then when the number of running Aspnet_wp.exe threads also equals 20, all 20 worker threads wait for a ManualResetEvent to be signaled. A WaitCallback (BatchCompileDirectory) function that cannot run until there is a free thread signals the event. A free thread never occurs. Use all the threads in the thread pool, and then generate a situation that requires a batch compile to simulate this scenario.

You may see the following event logged in the Application log of the Event Viewer:

Event ID: 1003:
Description: Aspnet_wp.exe (PID: <xxx>) was recycled because it was suspected to be in a deadlocked state. It did not send any responses for pending requests in the last 180 seconds.

↑ Back to the top


More information

When a background batch compile causes the deadlock, the worker threads return the following stack trace:
Current frame: 
ChildEBP RetAddr  Caller,Callee
0c06f938 03187c87 (MethodDesc 0x3228200 +0x27 System.Web.Hosting.RecyclableArrayHelper.ReuseIntegerArray)
0c06f940 099f63e2 (MethodDesc 0x3223fc0 +0x1ea System.Web.Hosting.ISAPIWorkerRequest.FlushCachedResponse)
0c06f98c 799de84f (MethodDesc 0x79bac930 +0x57 System.Threading.WaitHandle.WaitOne)
0c06f9b0 099f4389 (MethodDesc 0x322d660 +0x59 System.Web.HttpWriter.GetBufferedLength)
0c06f9c4 099f68a8 (MethodDesc 0x94e68a8 +0x8 System.Web.Compilation.PreservedAssemblyEntry/BackgroundBatchCompiler.BeforeDoneWithSessionHandler)
0c06f9c8 099f4178 (MethodDesc 0x3224970 +0x350 System.Web.HttpRuntime.FinishRequest)

↑ Back to the top


Resolution

How to Obtain the Hotfix

This issue is fixed in the June 2003 ASP.NET Hotfix Package 1.1. For additional information, click the following article number to view the article in the Microsoft Knowledge Base:
821156� INFO: ASP.NET 1.1 June 2003 Hotfix Rollup Package
You cannot obtain this fix individually. You must install the rollup.

Note When you request this hotfix, you receive the rollup.

The English version of this hotfix has the file attributes (or later) that are listed in the following table. The dates and times for these files are listed in coordinated universal time (UTC). When you view the file information, it is converted to local time. To find the difference between UTC and local time, use the Time Zone tab in the Date and Time tool in Control Panel.
	           Date         Time   Version       Size       File name
		   -----------------------------------------------------------------------
		   07-Jun-2003  00:44  1.1.4322.910    253,952  Aspnet_isapi.dll
		   07-Jun-2003  00:44  1.1.4322.910     20,480  Aspnet_regiis.exe
		   07-Jun-2003  00:44  1.1.4322.910     32,768  Aspnet_wp.exe
		   15-May-2003  23:49                   33,522  Installpersistsqlstate.sql
		   15-May-2003  23:49                   34,150  Installsqlstate.sql
		   07-Jun-2003  12:52  1.1.4322.910  1,216,512  System.dll
		   07-Jun-2003  00:39                   14,472  Webuivalidation.js
		   07-Jun-2003  12:52  1.1.4322.910  1,249,280  System.Web.dll

↑ Back to the top


Keywords: KB821155, kbqfe

↑ Back to the top

Article Info
Article ID : 821155
Revision : 3
Created on : 11/13/2003
Published on : 11/13/2003
Exists online : False
Views : 425