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

标签 .net debugging crash

我的应用程序池在 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   

有人知道这意味着什么以及如何解决它吗?

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

最佳答案

对 mscorwks.dll 的引用只是问题的一个症状。 mscorwks.dll 是包含公共(public)语言运行时的 dll。

为了诊断问题的根本原因,我按照以下步骤操作:

  1. 使用DebugDiag当 IIS 回收应用程序池时捕获故障转储。
  2. 打开 windbg 中的故障转储.
  3. 在windbg命令行中输入“.loadby sos mscorwks”(不带引号)以加载CLR调试工具
  4. 使用 !PrintException 命令打印故障转储中记录的最后一个异常。这很可能是导致 IIS 应用程序池回收的原因
  5. 使用 !clrstack 命令查看当前抛出异常的线程的堆栈
  6. 更多有关windbg的命令引用可以找到herehere 。最后,this MSDN blog有关于使用 Windbg 的精彩教程。

祝您的调试之旅好运!

关于.net - mscorwks.dll 中的 System.UnauthorizedAccessException 导致应用程序池崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/640210/

相关文章:

.net - 用函数式语言编写纯函数时如何避免不必要的计算?

.net - VSTO 工具 Outlook 2010 区分约会和 session

debugging - 崩溃调试Win32 App

c# - 如何在 WPF 的富文本框中禁用撤消?

c# - 使用 Stopwatch 分析 .NET 应用程序

ios - Xcode 突然停止调试应用程序

JavaScript 函数未在 Firefox 中定义?

ios - 核心数据错误 - 语句仍处于事件状态 - 在主线程中

javascript - 一段 Javascript 代码导致浏览器出现不可预测的崩溃

c++ - 如何准确定位程序崩溃的位置