Asp.net 迁移到Win 2008后w3wp中的堆栈溢出

Asp.net 迁移到Win 2008后w3wp中的堆栈溢出,asp.net,iis,stack-overflow,production-environment,w3wp,Asp.net,Iis,Stack Overflow,Production Environment,W3wp,我们已经将ASP.NET 4应用程序迁移到新服务器(2008 R2)上,并且受到严重的生产问题的困扰—ASP.NET工作进程中偶尔出现堆栈溢出 这些将记录在事件日志中: Faulting application name: w3wp.exe, version: 7.5.7601.17514, timestamp: 0x4ce7afa2 Faulting module name: clr.dll, version: 4.0.30319.269, time stamp: 0x4ee9d6e1 Ex

我们已经将ASP.NET 4应用程序迁移到新服务器(2008 R2)上,并且受到严重的生产问题的困扰—ASP.NET工作进程中偶尔出现堆栈溢出

这些将记录在事件日志中:

Faulting application name: w3wp.exe, version: 7.5.7601.17514, timestamp: 0x4ce7afa2
Faulting module name: clr.dll, version: 4.0.30319.269, time stamp: 0x4ee9d6e1 
Exception code: 0xc00000fd 
Fault offset: 0x0000000000003fbc 
Faulting process id: 0x17ec 
Faulting application start time: 0x01cdb8e2663f86bc 
Faulting application path: c:\windows\system32\inetsrv\w3wp.exe 
Faulting module path: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll 
Report Id: 45eb70a1-24da-11e2-a0b9-005056ba357d

有时故障模块是MVCR100YL CLR0400 .DLL,它来自VC++ +可重新分发的,但我认为C++在项目

的任何地方都没有使用过。 Windows非常友好地记录了在VisualStudio中打开的转储。它抱怨“w3wp.exe没有加载任何符号”,因此我只有在尝试调试时才设法进行反汇编,而调用堆栈只是一个条目:

clr.dll!000007fef9afd01b()

这是在发生故障的模块为clr.dll的情况下。在异常的另一种情况下,当模块为MSVCR100_CLR0400.dll时:

MSVCR100_CLR0400.dll!000007fef9a3c9fa()
[以下帧可能不正确和/或缺失,没有为MSVCR100_CLR0400.dll加载符号] MSVCR100_CLR0400.dll!000007fef9a57fcb()
MSVCR100_CLR0400.dll!000007fef9a33ee4()
MSVCR100_CLR0400.dll!000007fef9a33f5d()
clr.dll!000007fef9b05a08()

看起来相当有说服力的是,错误不是来自我的代码,而是真正来自CLR/ASP.NET内部-我编写了一个测试应用程序,通过无限递归强制堆栈溢出。我得到转储,在VS中分析它,当我调试时,我精确地到达递归调用的行

另一方面,故障出现在应用程序中的特定行,因此它不是某种随机影响-但它不是每次都出现,只是偶尔出现,并且从未在生产环境之外重现

这也不是一个并发性问题——只记录了一个在线用户

不用说,我已经尝试过基本的故障排除技术——到处都尝试catch,每行之后都记录日志,应用程序出错——什么都没有。执行只是在某个点停止,我在Windows日志中得到错误条目


应用程序池处于集成模式,在为此目的创建的服务帐户下运行。

CLR没有损坏,请再次检查您的代码。我知道,指责编译器通常是错误的指控-但这种知识在这种情况下没有帮助,因为我无法“检查我的代码”。捕捉ASP.NET异常的方法多种多样,我已经尝试了几乎所有我能想到的方法-我所能看到的是,如上所述,这是一个堆栈溢出异常,它来自CLR模块。