3

I am receiving a "Thread was being aborted." in the stack trace of my ASP.NET application. I am attempting to use the WinDbg technique described here to diagnose: http://blogs.msdn.com/b/asiatech/archive/2012/06/21/how-to-troubleshoot-httpexception-request-timed-out-asp-net-4-0-64-bit.aspx Right now I am just trying to catch this in the sample asp.net application provided. I can get the asp.net application to timeout but I can't get the dump described in the article to generate. I think I need help from a WinDbg person to understand where I am going wrong. I am including the WinDbg entries. My output is a bit different but I can't tell which address to use in the aspnet_timeout.cfg file described.

0:038> .symfix
0:038> .loadby sos clr
0:038> !name2ee system.web.dll System.Web.RequestTimeoutManager+RequestTimeoutEntry.TimeoutIfNeeded
Module:      59201000
Assembly:    System.Web.dll
Token:       0600699b
MethodDesc:  592926e4
Name:        System.Web.RequestTimeoutManager+RequestTimeoutEntry.TimeoutIfNeeded(System.DateTime)
JITTED Code Address: 593f4200
0:038> !U 593f4200
preJIT generated code
System.Web.RequestTimeoutManager+RequestTimeoutEntry.TimeoutIfNeeded(System.DateTime)
Begin 593f4200, size 29. Cold region begin 59d14150, size 23
Hot region:
*** WARNING: Unable to verify checksum for C:\Windows\assembly\NativeImages_v4.0.30319_32\System.Web\ccb5cc864818531ed9725d02d3d078a6\System.Web.ni.dll
>>> 593f4200 55              push    ebp
593f4201 8bec            mov     ebp,esp
593f4203 57              push    edi
593f4204 56              push    esi
593f4205 8bf1            mov     esi,ecx
593f4207 8b4e10          mov     ecx,dword ptr [esi+10h]
593f420a 8d4508          lea     eax,[ebp+8]
593f420d ff7004          push    dword ptr [eax+4]
593f4210 ff30            push    dword ptr [eax]
593f4212 3909            cmp     dword ptr [ecx],ecx
593f4214 e85f83f5ff      call    System_Web_ni+0x14c578 (5934c578) (System.Web.HttpContext.MustTimeout(System.DateTime), mdToken: 060025f7)
593f4219 8bf8            mov     edi,eax
593f421b 85ff            test    edi,edi
593f421d 0f852dff9100    jne     System_Web_ni+0xb14150 (59d14150)
593f4223 5e              pop     esi
593f4224 5f              pop     edi
593f4225 5d              pop     ebp
593f4226 c20800          ret     8
Cold region:
59d14150 8bce            mov     ecx,esi
59d14152 e849bb6cff      call    System_Web_ni+0x1dfca0 (593dfca0) (System.Web.RequestTimeoutManager+RequestTimeoutEntry.RemoveFromList(), mdToken: 0600699a)
59d14157 b9508f4859      mov     ecx,offset System_Web_ni+0x288f50 (59488f50) (MT: System.Web.HttpApplication+CancelModuleException)
59d1415c e8ef4c63ff      call    System_Web_ni+0x148e50 (59348e50) (System_Web_ni)
59d14161 8bd0            mov     edx,eax
59d14163 c6420401        mov     byte ptr [edx+4],1
59d14167 8bcf            mov     ecx,edi
59d14169 e89a0963ff      call    System_Web_ni+0x144b08 (59344b08) (System_Web_ni)
59d1416e e9b0006eff      jmp     System_Web_ni+0x1f4223 (593f4223)

aspnet_timeout.cfg

<ADPlus Version='2'>
      <!-- Configuring ADPlus to log all first chance exceptions -->
      <!-- Will still create full dump for any type of second chance exceptions -->
  <KeyWords>
     <keyword Name="loadbysos"> .loadby sos clr</keyword>
     <keyword Name="GetJIT"> !name2ee System.web.dll System.Web.RequestTimeoutManager+RequestTimeoutEntry.TimeoutIfNeeded </keyword>
     <keyword Name="JITAddress"> .foreach /pS 0n13 ( record {!name2ee System.web.dll System.Web.RequestTimeoutManager+RequestTimeoutEntry.TimeoutIfNeeded}) { r $t1= ${record}; bp $t1+0xb14150 ".dump /ma /u ${AdpDumpDirEsc}\\Full Request timed out ${AdpProcName}_.dmp;g"; .printf"*breakpoint list*\n"; bl}        </keyword>
  </KeyWords>
   <Settings>
                  <Option>  NoDumpOnFirst  </Option>
                  <RunMode> CRASH </RunMode>
  </Settings>
  <PreCommands>
         <DebugActions> loadbysos; GetJIT; JITAddress </DebugActions>
  </PreCommands>
</ADPlus>
4

1 回答 1

4

此日志显示您在某处有 TimeOut。但是您的计算机上必须有其他事件显示在您已超时的女巫页面中。

如果您有很多次超时,您首先需要找到导致该问题的页面,可能是保存会话的下载页面,或者需要比超时设置更多时间运行的页面。

此执行超时在 web.config 上设置,默认值为 110 秒:

<system.web>
    <httpRuntime executionTimeout="110"/>
</system.web>
于 2013-02-02T22:01:53.003 回答