System.UnauthorizedAccessException в mscorwks.dll вызывает сбой пула приложений - PullRequest
3 голосов
/ 12 марта 2009

Мои пулы приложений продолжают случайные сбои в IIS 6.0. MS Debug Diag указывает на kernel32.dll каждый раз.

Точка входа всегда mscorwks! CreateApplicationContext + bbef, а результатом всегда является исключение System.UnauthorizedAccessException.

Трассировка стека:

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   

Кто-нибудь знает, что это значит и как это исправить?

Редактировать: Вышеприведенная трассировка стека оказалась симптомом, а не причиной. Приведенная выше трассировка стека показывает только неуправляемый стек, но проблема возникла в управляемом коде. Я использовал шаги в своем ответе ниже, чтобы покопаться в аварийном дампе и извлечь управляемое исключение.

Ответы [ 3 ]

9 голосов
/ 14 сентября 2009

Ссылка на mscorwks.dll была только симптомом проблемы. mscorwks.dll - это dll, содержащая общеязыковую среду исполнения.

Чтобы определить причину проблемы, я выполнил следующие действия:

  1. Используйте DebugDiag для захвата аварийного дампа, когда IIS перезапустил пул приложений.
  2. Открыть аварийный дамп в windbg .
  3. Введите ".loadby sos mscorwks" (без кавычек) в командной строке windbg для загрузки средств отладки CLR
  4. Используйте команду! PrintException, чтобы распечатать последнее исключение, записанное в дамп сбоя. Скорее всего, именно это вызвало перезапуск пула приложений IIS
  5. Используйте команду! Clrstack для просмотра стека в текущем потоке, выдавшем исключение
  6. Дополнительные ссылки на команды для windbg можно найти здесь и здесь . Наконец, в этом блоге MSDN есть отличные руководства по использованию windbg.

Удачи в отладочном приключении!

0 голосов
/ 04 января 2010

Ваши символы сломаны - исправьте их, и вы, вероятно, получите более значимый стек вызовов

0 голосов
/ 04 января 2010

Райан, Я знаю, что поведение необработанных исключений изменилось. из NET Framework 1.0 или 1.1 необработанные исключения игнорировались. 2.x и более поздние, необработанные исключения приведут к падению рабочего процесса (пула приложений). Добавьте следующее в ваш web.config, чтобы он игнорировался (но вы должны выяснить, почему он падает!)

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

Это может помочь. , .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...