我的客户端在两台生产服务器上安装了一个ASP.NET应用程序(与NLB平衡,但这无关紧要)。 两个服务器每隔3-4小时就会崩溃,并显示以下事件查看器错误:
错误应用程序名称:w3wp.exe,版本:7.5.7601.17514,时间戳:0x4ce7afa2
错误模块名称:clr.dll,版本:4.0.30319.18034,时间戳:0x50b5a783
异常代码:0xc00000fd故障偏移:0x000000000001a840
错误进程id:0xd50
故障应用程序启动时间:0x01ce97fe076d27b4
错误的应用程序路径:c:\ windows \ system32 \ inetsrv \ w3wp.exe
错误模块路径:C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ clr.dll报告ID:e0c90a5f-0455-11e3-8f0e-005056891553
我不知道如何调试或从哪里开始。当崩溃即将发生时,服务器处理器的使用率会跃升至100%并保持不变。故障的过程是w3wp.exe。我甚至不确定我的代码是否产生了错误。这是IIS 7.5。任何指针都将非常感激。
答案 0 :(得分:66)
看起来你有一个StackOverflow Exception,它是由无限递归(一个重复调用自身的函数等)引起的。这不能被常规的try / catch块捕获。您可以使用 DebugDiag 和 WinDbg 跟踪问题。
可以将DebugDiag配置为在发生StackOverflowException时生成故障转储。在https://www.microsoft.com/en-us/download/details.aspx?id=49924下载。
下次发生StackOverflowException时,您将遇到崩溃转储。现在需要解释转储文件。
Windows调试工具是Windows SDK的一部分,可以在http://msdn.microsoft.com/en-US/windows/hardware/gg463009/下载。
SRV*your local folder for symbols*http://msdl.microsoft.com/download/symbols
,但是我只是放入符号的本地文件夹,它工作正常。.loadby sos clr
!CLRStack
在结果中,应该清楚问题是什么(你可能会看到一行显示重复被调用的函数的行。)
答案 1 :(得分:2)
上述答案的一些补充。 开发Explorer扩展,在用户登录时出错。所以对于用户而言,它看起来像是闪烁的屏幕" (当探险家尝试启动并崩溃,然后重启等)。 登录另一个安装了DebugDiag和WinDbg的用户帐户。 我今天(2014年1月13日)使用Windows 8.1和.Net 4.0以及所有最新更新 尝试在本地下载几个符号,但WinDbg因为错误的签名而无法加载clr.pdb。
使用符号在线解决 - 使用" SRV * http://msdl.microsoft.com/download/symbols"作为符号路径。
答案 2 :(得分:0)
另一个原因可能是“无限递归功能”。当发生infitine循环时,Windows尝试避免死锁并禁用相关的应用程序池。
我今天遇到了同样的问题。我有一个递归函数,列出parentproject-sub项目。一个项目设置为自己的父项目,当重用函数尝试列出所有父项目时,无限循环发生。
答案 3 :(得分:0)
我能够查看事件查看器 - > Windows日志 - >系统并找到
应用程序池'DankAppPool'因为自动禁用 服务于该应用程序池的进程中的一系列失败。
在下面:
为应用程序池“DankAppPool”提供服务的进程遭遇致命伤害 Windows进程激活服务的通信错误。该 进程ID是'5704'。数据字段包含错误编号。
和
QueueMonitor服务意外终止。它已经完成了32 时间(s)。将在60000中采取以下纠正措施 毫秒:重启服务。
至少QueueMonitor服务是一个可以开始的地方。