IIS uses worker process (w3wp.exe) to work on requests from clients. Because of a variety of reasons, w3wp.exe may crash which makes the web application unresponsive. Heap Corruption (0xC0000374) is one of the common causes of w3wp.exe crashes. You will find the solution here for an issue caused by a specific bug in System Center Operations Manager.
In the case I worked on, w3wp.exe was crashing every a few minutes. Here is a sample Event Viewer log:
Event ID 1000 – Application Error
Faulting application name: w3wp.exe
Faulting module name: mscorwks.dll
Exception code: 0xc0000005
Root Cause of the w3wp.exe crash
Upon checking the dump file we collected using DebugDiag crash rule, we saw heap corruption.
In w3wp__SharePoint_PID.dmp the assembly instruction at ntdll!RtlReportCriticalFailure+62 in C:\Windows\System32\ntdll.dll from Microsoft Corporation has caused a corrupted heap exception (0xC0000374) when trying to perform an unknown operation on memory location 0x00000000 on thread 105
Heap corruption was detected in w3wp__SharePoint_PID.dmp. However page heap was not enabled in this dump. Please follow the instructions in the recommendation section for troubleshooting heap corruption issues.
Current NTGlobalFlags value: 0x0An exception thrown by a heap memory manager function indicates heap corruption. Please click the ‘PageHeap Flags…’ button in the DebugDiag crash rule configuration dialog to enable PageHeap for the target process and collect another dump. For more information, review the following documents:
How to Use the Debug Diagnostic Tool v1.1 (DebugDiag) to Debug User Mode Processes
Debugging Heap corruption with Application Verifier and Debugdiag
The stack trace showed MicrosoftInstrumentationEngine_x64
which points out the bug mentioned here.
Stack trace:
ntdll!RtlReportCriticalFailure+62
ntdll!RtlpReportHeapFailure+26
ntdll!RtlpHeapHandleError+12
ntdll!RtlpLogHeapFailure+a4
ntdll!RtlFreeHeap+72
ole32!CoTaskMemFree+36
mscorwks!DebuggerMethodInfo::SetInstrumentedILMap+20
mscorwks!Debugger::SetILInstrumentedCodeMap+a1
mscorwks!ProfToEEInterfaceImpl::SetILInstrumentedCodeMap+5d
mscordbc!CorProfInfo::SetILInstrumentedCodeMap+2b
MicrosoftInstrumentationEngine_x64!DllRegisterServer+1dec0
MicrosoftInstrumentationEngine_x64!DllRegisterServer+842d
mscordbc!EEToProfInterfaceImpl::JITCompilationStarted+d3
Solution for w3wp.exe crash caused by Heap Corruption
In order to solve this issue, you should uninstall Microsoft Monitoring Agent (SCOM agent) and restart the machine.
If you need to install it back, install it by using the command provided by Microsoft:
msiexec /i MonAgent.msi NOAPM=1
If this doesn’t solve the issue, please check this post out for other possible reasons of w3wp.exe crashes: 0xc0000005 exception code causes w3wp.exe crashes.
Corruption of the heap may occur because of issues other than the bug I mentioned above. Here is a good post about other root causes: w3wp.exe crashes every 5 minutes with error code 0xc0000374