‘DefaultAppPool’ suffered a fatal communication error with the World Wide Web Publishing Service

application-pooldebuggingiis-6visual studio 2010windbg

I am getting Event Log entries every time I access the site:

Event Type: Error
Event Source:   VsJITDebugger
Event Category: None
Event ID:   4096
User:       NT AUTHORITY\NETWORK SERVICE
Computer:   COMPUTER-02
Description:
An unhandled Microsoft .NET Framework exception occurred in w3wp.exe [2908]. Just-In-Time debugging this exception failed with the following error: Debugger could not be started because no user is logged on.

Check the documentation index for 'Just-in-time debugging, errors' for more information.

Data:
0000: 02 00 5c 80               ..\    

System Logs

Event Type: Error
Event Source:   W3SVC
Event Category: None
Event ID:   1002
Date:       28/03/2011
Time:       17:49:28
User:       N/A
Computer:   COMPUTER-02
Description:
Application pool 'DefaultAppPool' is being automatically disabled due to a series of failures in the process(es) serving that application pool.

Application Log

Event Type: Warning
Event Source:   W3SVC
Event Category: None
Event ID:   1011
Date:       28/03/2011
Time:       17:49:28
User:       N/A
Computer:   COMPUTER-02
Description:
A process serving application pool 'DefaultAppPool' suffered a fatal communication error with the World Wide Web Publishing Service. The process id was '3724'. The data field contains the error number. 

Data:
0000: 6d 00 07 80               m..    

I have also followed the advice of Microsoft's Support site without luck. The Network Service account didn't have any problems accessing the registry.

I need to run the site in IIS6 (instead of IIS Express 7.5) as the site runs ASP as well as ASP.NET I need the wildcard mapping for authentication in ASP.

I have completely run out of ideas, as the site was fine in ASP.NET 3.5 (CLR v2…), but this upgrade has completely messed up by debugging.

Any help will be much appreciated.

Best Answer

You will need WinDbg (Debugging Tools for Windows) and DebugDiag.

  1. Install DebugDiag and WinDbg
  2. Ensure you have copied the related framework's SOS.dll to the WinDbg directory.
  3. Add a rule to catch IIS/COM+ processes
  4. On first exceptions, create a full user dump. Limit of 10
  5. Open the website and look at look at DebugDiag, you should find it starting to take full dumps.
  6. Once you have a few memory dumps, load WinDbg and click File->Open Crash Dump and load one of the memory dump.
  7. Type .load sos
  8. Type !clrstack
  9. You will get a stack trace of the error like:
0:016> .load sos
0:016> !clrstack
PDB symbol for clr.dll not loaded
OS Thread Id: 0xa60 (16)
Child SP IP       Call Site
01d2eb5c 7c81a251 [HelperMethodFrame: 01d2eb5c] System.Diagnostics.Debugger.LaunchInternal()
01d2ebac 7a0e0166 System.Diagnostics.Debugger.Launch()*** WARNING: Unable to verify checksum for mscorlib.ni.dll
*** ERROR: Module load completed but symbols could not be loaded for mscorlib.ni.dll

01d2ebd8 04470176 ebiz.Global.Application_Start(System.Object, System.EventArgs)
01d2f1f8 791421bb [DebuggerU2MCatchHandlerFrame: 01d2f1f8] 
01d2f1c4 791421bb [CustomGCFrame: 01d2f1c4] 
01d2f198 791421bb [GCFrame: 01d2f198] 
01d2f17c 791421bb [GCFrame: 01d2f17c] 
01d2f3a0 791421bb [HelperMethodFrame_PROTECTOBJ: 01d2f3a0] System.RuntimeMethodHandle._InvokeMethodFast(System.IRuntimeMethodInfo, System.Object, System.Object[], System.SignatureStruct ByRef, System.Reflection.MethodAttributes, System.RuntimeType)
01d2f41c 79b3d689 System.RuntimeMethodHandle.InvokeMethodFast(System.IRuntimeMethodInfo, System.Object, System.Object[], System.Signature, System.Reflection.MethodAttributes, System.RuntimeType)
01d2f470 79b3d37c System.Reflection.RuntimeMethodInfo.Invoke(System.Object, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, Boolean)
01d2f4ac 79b3bfed System.Reflection.RuntimeMethodInfo.Invoke(System.Object, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo)
01d2f4d0 79b43284 System.Reflection.MethodBase.Invoke(System.Object, System.Object[])
01d2f4dc 67894f4d System.Web.HttpApplication.InvokeMethodWithAssert(System.Reflection.MethodInfo, Int32, System.Object, System.EventArgs)*** WARNING: Unable to verify checksum for System.Web.ni.dll
*** ERROR: Module load completed but symbols could not be loaded for System.Web.ni.dll

01d2f500 678951cb System.Web.HttpApplication.ProcessSpecialRequest(System.Web.HttpContext, System.Reflection.MethodInfo, Int32, System.Object, System.EventArgs, System.Web.SessionState.HttpSessionState)
01d2f550 67b34175 System.Web.HttpApplicationFactory.FireApplicationOnStart(System.Web.HttpContext)
01d2f564 672bfe1c System.Web.HttpApplicationFactory.EnsureAppStartCalled(System.Web.HttpContext)
01d2f59c 672bfd3d System.Web.HttpApplicationFactory.GetApplicationInstance(System.Web.HttpContext)
01d2f5ac 672fbf28 System.Web.HttpRuntime.ProcessRequestInternal(System.Web.HttpWorkerRequest)
01d2f5e0 672fbccd System.Web.HttpRuntime.ProcessRequestNoDemand(System.Web.HttpWorkerRequest)
01d2f5f0 672fb2cd System.Web.Hosting.ISAPIRuntime.ProcessRequest(IntPtr, Int32)
01d2f5f4 6791c30c [InlinedCallFrame: 01d2f5f4] 
01d2f668 6791c30c DomainNeutralILStubClass.IL_STUB_COMtoCLR(Int32, Int32, IntPtr)
01d2f7fc 791425a1 [GCFrame: 01d2f7fc] 
01d2f86c 791425a1 [ContextTransitionFrame: 01d2f86c] 
01d2f8a0 791425a1 [GCFrame: 01d2f8a0] 
01d2f9f8 791425a1 [ComMethodFrame: 01d2f9f8] 

For me anyway, you can see that the Debugger.Launch() is right at the top, and low and behold, my code had it in. It seems that IIS doesn't like that at all if it is your first line of code!