w3wp.exe崩溃 - ThreadAbortException

时间:2011-01-12 08:25:59

标签: .net-4.0 crash windbg crash-dumps windows-server-2008-x64

我们遇到了一个无法重现的问题,它是在运行ASP.NET 4的我们的Web服务器(Windows Server 2008 Datacenter 64位,托管在Amazon EC2上)上随机发生的。

它以错误日志中的ASP.NET警告开头(一个奇怪的GET请求,网址很长):

  

例外信息:
     异常类型:HttpException
     异常消息:此请求的URL长度超过配置的maxUrlLength值     在System.Web.HttpRequest.ValidateInputIfRequiredByConfig()
    在System.Web.HttpApplication.PipelineStepManager.ValidateHelper(HttpContext context)

然后出现错误:

  

申请ID:/ LM / W3SVC / 2 / ROOT
  进程ID:4604
  例外:System.Threading.ThreadAbortException
  消息:线程正在中止   StackTrace:在System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr,HttpContext context)上     在System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr managedHttpContext,IntPtr nativeRequestContext,IntPtr moduleData,Int32 flags)
    在System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr managedHttpContext,IntPtr nativeRequestContext,IntPtr moduleData,Int32 flags)

然后是另一个错误:

  

应用程序ID:DefaultDomain
  进程ID:4604
  例外:System.Threading.ThreadAbortException
  消息:线程正在中止   StackTrace:

然后是应用程序错误:

  

错误应用程序w3wp.exe,版本7.0.6002.18005,时间戳0x49e03238,错误模块kernel32.dll,版本6.0.6002.18005,时间戳0x49e041d1,异常代码0xe0434352,错误偏移0x00000000000176fd,进程ID 0x%9,应用程序启动时间为0x%10。

WinDBG的

我设法通过adplus获得转储崩溃,但我真的不知道该寻找什么。我之前使用Windbg对一些stackoverflow进行了故障排除,但我不知道使用哪种方法来解决此错误。

!pe在线程上出现错误:

  

异常对象:00000001c323d948
  异常类型:System.Threading.ThreadAbortException
  消息:线程正在中止   InnerException:
  StackTrace(生成):
  
  StackTraceString:
  HResult:80131530

!clrstack

  

儿童SP IP呼叫站点
  0000000015f7f078 0000000076c176fd [GCFrame:0000000015f7f078]
  0000000015f7f258 0000000076c176fd [GCFrame:0000000015f7f258]

ķ

  

Child-SP RetAddr呼叫站点
  00000000 15f7edf0 000007fe f2826e39 kernel32!RaiseException + 0x39
  00000000 15f7eec0 000007fe f2bbbfb4 clr!RaiseTheExceptionInternalOnly + 0x363
  00000000 15f7eff0 000007fe f2bbc906 clr!RaiseTheException + 0xa4
  00000000 15f7f020 000007fe f2c3b99b clr!BStrFromString + 0x66
  00000000 15f7f050 000007fe f2c3b9a9 clr!RealCOMPlusThrow + 0x3b
  00000000 15f7f0c0 000007fe f2c93156 clr!RealCOMPlusThrow + 0x9
  00000000 15f7f0f0 000007fe f2b229f3 clr!Thread :: RaiseCrossContextException + 0x2a7
  00000000 15f7f310 000007fe f2830886 clr! ?? :: FNODOBFM :: string'+0xafb03
00000000
15f7f4c0 000007fe f27fcce3 clr!UM2MDoADCallBack+0x9e
00000000
15f7f530 000007fe f845ba59 clr!UMThunkStubAMD64+0x273
00000000
15f7f5c0 000007fe f8458f02 webengine4!W3_MGD_HANDLER::ProcessNotification+0x79
00000000
15f7f5f0 000007fe f27d4595 webengine4!ProcessNotificationCallback+0x43
00000000
15f7f620 000007fe f27d3ac8 clr!UnManagedPerAppDomainTPCount::DispatchWorkItem+0x181
00000000
15f7f6d0 000007fe {{1 15f7f770 000007fe f294658f clr!ThreadpoolMgr::NewWorkerThreadStart+0x2e5
00000000
15f7f810 00000000 f29447c6 clr!ThreadpoolMgr::WorkerThreadStart+0x3b
00000000
15f7fbd0 00000000 76c1be3d clr!Thread::intermediateThreadProc+0x7d
00000000
15f7fc00 00000000`00000000 ntdll!RtlUserThreadStart + 0x1d

任何人都知道这可能是什么?或者可以指出我使用Windbg进行分析的正确方向?

编辑: 传入的网址通常如下所示: foo.bar.com/wEPDwULLTE1MTk5MzIzMTFkGAMFFmN0bDAwJGRiMSRkZGxEYXRhYmFzZXMPFCsAAmRkZAU7Y3RsMDAkU2VhcmNoQ2xvdWQxJF9SaWdodENvbHVtbiRfU2VhcmNoQ2xvdWQkbHN2U2VhcmNoVGVybXMPFCsADmRkZGRkZGQ8KwAUAAIUZGRkZgL/D2QFK2N0bDAwJHN1cnZleTEkX1JpZ2h0Q29sdW1uJF9JUiR1c2VyQ29tbWVudHMPFCsAA2VnZGQeuUcvQDsShDIp1k7YjJw70Ry 9 / Q1B9Sd1egrovYgkw == /

但是我在事件日志中发现这样的网址会发生这种情况: foo.bar.com/& (.NET 4中的“危险请求”)

2 个答案:

答案 0 :(得分:0)

您至少应该加载符号,然后查看调用堆栈中显示的正确字符串。

如果您无法处理此类分析,我认为通过http://support.microsoft.com打开支持案例对您有好处。

答案 1 :(得分:0)

我一直试图找出类似的问题。

我发现这篇文章声称确定原因的过程,我认为这实际上是有道理的:

http://blogs.msdn.com/b/asiatech/archive/2012/06/21/how-to-troubleshoot-httpexception-request-timed-out-asp-net-4-0-64-bit.aspx

警告:我无法成功完成所描述的步骤。我将在这里寻求帮助。