IIS下的Stackoverflow异常:我可以提供更好的错误消息吗?

时间:2014-10-17 16:19:38

标签: c# iis stack-overflow

我们在IIS下运行的服务可能因堆栈溢出而崩溃。然而,事件日志中发生的事情并不明显。我只看到了

Faulting application name: w3wp.exe, version: 7.5.7601.17514, time stamp: 0x4ce7afa2
Faulting module name: clr.dll, version: 4.0.30319.18444, time stamp: 0x52717f9a

A process serving application pool 'x' suffered a fatal communication error with the
Windows Process Activation Service. The data field contains the error number.

我们有合理的想法如何修复stackoverflow(将我们的一些递归方法切换到迭代方法)。但是,有没有办法将stackoverflow记录到事件日志中?

我知道你无法在.Net中捕获堆栈溢出,但可能是IIS可以处理这个问题。例如。如果我使用故意设计的stackoverflow运行控制台应用程序,我会得到

Process is terminated due to StackOverflowException.

很清楚。

此外,快速失败保护似乎并没有成功:最大​​失败率设置为5,似乎不断重启。

1 个答案:

答案 0 :(得分:0)

使用msft的调试diags。这可以配置为在堆栈溢出时创建进程转储。然后你可以将转储加载到windbg并获得导致溢出的堆栈。 苔丝有很多关于如何做到这一点的信息,包括她博客上的培训课程 http://blogs.msdn.com/b/tess/