2009-03-12 13 views
3

Meine App-Pools halten nach dem Zufallsprinzip Absturz in IIS 6.0 MS Debug Diag zeigt auf kernel32.dll jedes Mal.System.UnauthorizedAccessException in mscorwks.dll verursacht App-Pool-Abstürze

Der Einstiegspunkt ist immer mscorwks! CreateApplicationContext + bbef und das Ergebnis ist immer eine System.UnauthorizedAccessException.

Stack Trace:

Function          Arg 1  Arg 2  Arg 3 
kernel32!RaiseException+3c      e0434f4d  00000001  00000001  
mscorwks!GetMetaDataInternalInterface+84a9  18316b3c  00000000  00000000  
mscorwks!GetAddrOfContractShutoffFlag+ac01  18316b3c  00000000  023cfbd8  
mscorwks!GetAddrOfContractShutoffFlag+ac73  00000000  000e8c88  8038b2d0  
mscorwks!GetAddrOfContractShutoffFlag+aca4  18316b3c  00000000  023cfbe4  
mscorwks!GetAddrOfContractShutoffFlag+acb2  18316b3c  acc05c33  7a399bf0  
mscorwks!CoUninitializeCor+67be    00000000  023cfc1c  023cfc8c  
mscorwks!CoUninitializeCor+87a1    001056e8  79fd87f6  023cfeb0  
mscorwks!CorExitProcess+4ad3     023cfeb0  023cfd20  79f40574  
mscorwks!CorExitProcess+4abf     001056e8  79f405a6  023cfd04  
mscorwks!CorExitProcess+4b3e     000e8c88  00000000  023cfda7  
mscorwks!StrongNameErrorInfo+1ddab    00000000  00000000  023cfeb0  
mscorwks!StrongNameErrorInfo+1e07c    023cfeb0  00000000  00000000  
mscorwks!CoUninitializeEE+4e0b     023cfeb0  023cfe5c  79f7762b  
mscorwks!CoUninitializeEE+4da7     023cfeb0  acc05973  00000000  
mscorwks!CoUninitializeEE+4ccd     023cfeb0  00000000  001056e8  
mscorwks!GetPrivateContextsPerfCounters+f1cd 79fc24f9  00000008  023cff14  
mscorwks!GetPrivateContextsPerfCounters+f1de 79fc24f9  acc058c3  00000000  
mscorwks!CorExeMain+1374      00000000  00000003  00000002  
mscorwks!CreateApplicationContext+bc35   000e9458  00000000  00000000  
kernel32!GetModuleHandleA+df     79f9205f  000e9458  00000000 

Weiß jemand, was das bedeutet und wie man es beheben?

Bearbeiten: Die oben genannten Stack-Ablaufverfolgung erwies sich als ein Symptom und nicht die Ursache. Der obige Stack-Trace zeigt nur den nicht verwalteten Stack an, aber das Problem ist in verwaltetem Code aufgetreten. Ich habe die Schritte in meiner Antwort unten verwendet, um den Crash-Dump zu untersuchen und die gemanagte Ausnahme zu extrahieren.

+0

Macht Ihre App zu der Zeit irgendetwas interessantes? Vielleicht eine andere Baugruppe laden? – David

+1

Möglicherweise. Wir scheinen in der Lage zu sein, den Crash neu zu erschaffen, indem wir auf Crystal-Reports-Berichte stoßen, aber nicht konsequent. –

Antwort

9

Der Verweis auf mscorwks.dll war nur ein Symptom für das Problem. mscorwks.dll ist die DLL, die die Common Language Runtime enthält.

, um die Ursache des Problems zu diagnostizieren, folgte ich die folgenden Schritte:

  1. Verwenden DebugDiag einen Crash-Dump zu erfassen, wenn IIS die app-Pool zurückgeführt.
  2. Öffnen Sie den Crash-Dump unter windbg.
  3. Typ „.loadby sos mscorwks“ (ohne Anführungszeichen) an der windbg Befehlszeile der CLR Debug-Tools
  4. Verwenden Sie den! PrintException Befehl aus der letzten Ausnahme in dem Crash-Dump aufgezeichnet drucken zu laden. Dies ist wahrscheinlich derjenige, der die IIS-app-Pool recycle
  5. verursacht Verwenden Sie das! Clrstack Befehl, um den Stapel auf dem aktuellen Thread zu sehen, der die Ausnahme
  6. Weitere Befehlsreferenzen für windbg warf können here und here finden. Schließlich hat this MSDN blog große Tutorials zur Verwendung von Windbg.

Viel Glück auf Ihrem Debugging-Abenteuer!

+0

Diese Antwort war sehr hilfreich für mich in meinem eigenen Debugging. Vielen Dank! –

0

Ryan, Ich weiß, dass das unbehandelte Ausnahmeverhalten geändert hat. In .NET Framework 1.0 oder 1.1 wurden nicht behandelte Ausnahmen ignoriert. 2.x und später, die unbehandelten Ausnahmen werden den Arbeitsprozess (App-Pool) zum Absturz bringen. Fügen Sie die folgende zu Ihrer web.config haben es ignoriert (aber Sie sollten herausfinden, warum seine Krachen!)

<configuration> 
<runtime> 
<legacyUnhandledExceptionPolicy enabled="true" /> 
</runtime> 
</configuration> 

Dies könnte den Trick. . .

0

Ihre Symbole sind defekt - reparieren Sie sie und Sie erhalten wahrscheinlich einen aussagekräftigeren Anruf-Stack

Verwandte Themen