debugging mscorwks.dll中的System.UnauthorizedAccessException导致应用程序池崩溃

drkbr07n  于 2023-01-05  发布在  其他
关注(0)|答案(3)|浏览(148)

我的应用程序池在IIS 6.0 MS调试诊断中总是随机崩溃,每次都指向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

有人知道这意味着什么以及如何修复吗?

    • 编辑:**上述堆栈跟踪结果是症状而不是原因。上述堆栈跟踪只显示了非托管堆栈,但问题发生在托管代码中。我使用下面答案中的步骤深入研究故障转储并提取托管异常。
42fyovps

42fyovps1#

对mscorwks.dll的引用只是该问题的一个症状。mscorwks.dll是包含公共语言运行库的dll。
为了诊断问题的根本原因,我执行了以下步骤:
1.使用DebugDiag可在IIS回收应用程序池时捕获故障转储。
1.打开windbg中的故障转储。
1.在windbg命令行中键入.“loadby sos mscorwks”(不带引号)以加载CLR调试工具
1.使用!PrintException命令打印故障转储中记录的最后一个异常。这很可能是导致IIS应用程序池回收的异常
1.使用!clrstack命令查看引发异常的当前线程上的堆栈
1.更多关于windbg的命令参考可以在这里和here找到。最后,this MSDN blog有关于使用windbg的很棒的教程。
祝你调试冒险好运!

ybzsozfc

ybzsozfc2#

您的符号已损坏-修复它们,您可能会获得更有意义的调用堆栈

7eumitmz

7eumitmz3#

Ryan,我确实知道未处理的异常行为已更改。在NET Framework 1.0或1.1中,未处理的异常被忽略。在2.x和更高版本中,未处理的异常将使工作进程(应用程序池)崩溃。请将以下内容添加到web.config以使其被忽略(但您应该找出其崩溃的原因!)

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

这个可能有用。

相关问题