Faulting application name: w3wp.exe,version: 7.5.7601.17514,time
stamp: 0x4ce7a5f8 Faulting module name: KERNELBASE.dll,version:
6.1.7601.17651,time stamp: 0x4e211319 Exception code: 0xe053534f Fault offset: 0x0000b9bc Faulting process id: 0x%9 Faulting
application start time: 0x%10 Faulting application path: %11 Faulting
module path: %12 Report Id: %13
这在prod服务器上随机发生,我无法在其他任何地方重新创建此崩溃.这种情况发生在IIS 6上,我们最近转移到了Windows Server 2008和IIS 7.5,并且崩溃也发生在那里.
如何找到这个的根本原因?
解决方法
https://blogs.msdn.com/b/tess/archive/2009/03/20/debugging-a-net-crash-with-rules-in-debug-diag.aspx
基本上,您将设置DebugDiag 1.2 x64以触发该异常代码,并创建一个完整的userdump.创建转储后,您可以使用DebugDiag为您分析转储.虽然有这个特殊的例外,你可能需要使用WinDbg SOS.
一些更相关的信息:
“对于大多数人可能知道的堆栈溢出,最常见的原因是我们处于某种类型的递归循环中,所以我们真正想知道的是这个堆栈上的内容……它出现的原因是什么只是地址而不是方法名称,因为debug diag不理解.net所以我们必须将转储带到windbg进行分析并检查.net堆栈.
“在windbg中我们可以加载sos(.loadby sos mscorwks)并在活动堆栈上运行!clrstack来获取callstack.”
(如果您运行的是.NET 4,则加载sos的命令为:.loadby sos clr)
最终,您正在寻找的是导致递归的应用程序中的违规代码.加载SOS时出现在WinDbg中的方法名称可能会让您指向正确的方向.