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.

How to generate a dump file when ASP.NET deadlocks in IIS 6.0


View products that this article applies to.

Summary

When you experience a deadlock in Microsoft Internet Information Services (IIS) 6.0, a message that resembles the following will appear in the Application log:

Event Type: Warning
Event Source: W3SVC-WP
Event Category: None
Event ID: 2262
Date: 7/29/2003
Time: 12:08:58 PM
User: N/A
Computer: ComputerName
Description: ISAPI 'C:\WINNT\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll' reported itself as unhealthy for the following reason: 'Deadlock detected'.

Additionally, a message that resembles the following will appear in the System log:

Event Type: Warning
Event Source: W3SVC
Event Category: None
Event ID: 1013
Date: 7/29/2003
Time: 12:09:34 PM
User: N/A
Computer: ComputerName
Description: A process serving application pool 'DefaultAppPool' exceeded time limits during shut down. The process id was '2756'.For more information, see Help and Support Center at http://support.microsoft.com.

↑ Back to the top


Generate dump files for diagnosis

IIS 6.0 has a new feature that is named Orphan Worker Process. This feature lets you inspect a process that is scheduled to be recycled before the process is terminated. The Orphan Worker Process can be used to attach a debugger to the process and to generate a dump file for investigation.

Note This feature is not enabled when processes run in IIS 5.0 compatibility mode.

Download Debugging Tools for Windows

To download Debugging Tools for Windows, visit one of the following Microsoft Web sites, as appropriate for your situation:

Windows 32-bit version:Windows 64-bit version:Note When you install Debugging Tools for Windows, make sure that you save the files to the following directory:
C:\Debuggers

Create a batch file to execute when a worker process is orphaned

  1. Start Notepad
  2. Paste the following code into Notepad.
    @if "%_echo%"=="" echo off
    setlocal
        set TIMESTAMP=%DATE:~-9%_%TIME%
    set TIMESTAMP=%TIMESTAMP:/=_%
    set TIMESTAMP=%TIMESTAMP::=_%
    set TIMESTAMP=%TIMESTAMP:.=_%
    set TIMESTAMP=%TIMESTAMP: =_%
    set FILENAME=c:\crash_PID_%1_%TIMESTAMP%.dmp
    set LOG=c:\log.txt
    set COMMAND=c:\debuggers\cdb.exe -c ".dump /o /ma %FILENAME%;q" -p %1
    
    echo %COMMAND% > %LOG%
    %COMMAND%
    
    endlocal
  3. Save the file as FileName.cmd. For this example, we will name the file Action.cmd. However, you may name the file as you want.
Note You may have to modify the location of the debuggers and the location where you want the resulting dump file to be generated.

Configure the Orphan Worker Process settings

  1. At the command prompt, type the following command, and then press ENTER:
    cd \Inetpub\adminscripts
  2. To enable the Orphan Worker Process feature, type the following command at the command prompt:
    adsutil.vbs SET W3SVC/AppPools/DefaultAppPool/OrphanWorkerProcess TRUE
    
  3. At the command prompt, set the executable to run when a process is scheduled to be recycled. For example, in this case use the batch file that was created in the "Create a Batch File to Execute When a Worker Process Is Orphaned" section:
    adsutil.vbs SET W3SVC/AppPools/DefaultAppPool/OrphanActionExe "c:\action.cmd"
    adsutil.vbs SET W3SVC/AppPools/DefaultAppPool/OrphanActionParams "%1%" 
    
Note Make sure that the OrphanActionExe option points to the location of the batch file that was created in the "Create a Batch File to Execute When a Worker Process Is Orphaned" section. Also make sure that the identity of the W3wp.exe process has Read and Execute permissions to this file.

Note If you enable IIS to debug worker processes that are reported as unhealthy, make sure that you monitor these released worker processes. IIS does not automatically remove these worker processes from memory. If you do not correctly handle these worker processes, many failed worker processes may be running on your computer. These worker processes can tie up resources that are needed by other processes. You must end these worker processes quickly to free those resources. In some conditions, these worker processes may block metabase access. This causes problems with other worker processes or with the World Wide Web service itself.

↑ Back to the top


References

For more information, visit the following Microsoft Developer Network (MSDN) Web sites:For more information about how to debug a worker process that is reported as unhealthy, visit the following Microsoft Web site:

↑ Back to the top


Keywords: KB828222, kbhowtomaster, kbdebug

↑ Back to the top

Article Info
Article ID : 828222
Revision : 14
Created on : 12/3/2007
Published on : 12/3/2007
Exists online : False
Views : 606