(Not sure if this is an IIS problem or not, so if this is better suited for SO I'll happily move it...)
We have an IIS-hosted application that is sporadically dying, and the event logs claim that the application pool is reporting itself as unhealthy due to deadlocks. I'm attempting to get a crash dump of the process as it's dying, to see if we can pinpoint the problem.
I have following this Microsoft KB Article #828222, which says there is an option on the application pool to enable "Orphaned Worker Process" analysis. We've followed those steps exactly -- installed the debugger tools, enabled the Orphaned Worker Process option for the application pool, and set up a batch file to run when it happens:
adsutil.vbs SET W3SVC/AppPools/MyAppPool/OrphanWorkerProcess TRUE adsutil.vbs SET W3SVC/AppPools/MyAppPool/OrphanActionExe "c:\debug\dump.cmd" adsutil.vbs SET W3SVC/AppPools/MyAppPool/OrphanActionParams "%1%"
debugdump.cmd essentially just runs
cdb on the PID of the dying process (after computing a unique file name):
c:\debug\cdb.exe -c ".dump /o /ma %FILENAME%;q" -p %1
The IIS side of the configuration seems to be correct -- it does try to run the batch file on the dying process. But it doesn't actually do anything, because according to
Cannot debug pid 3236, NTSTATUS 0xC000010A "An attempt was made to access an exiting process."
The whole point of this option, I assumed, was that IIS would not kill the process before the debugger had a chance to dump it; did I miss something in the configuration?