代码之家  ›  专栏  ›  技术社区  ›  Asbjørn Ulsberg

初始化集合时W3WP崩溃

  •  1
  • Asbjørn Ulsberg  · 技术社区  · 16 年前

    PreApplicationStartMethodAttribute . 初始化时,将实例化一个实现我定义的接口的集合。当我实例化此集合时,w3wp.exe会崩溃,事件日志中有以下两个不可理解的条目:

    Faulting application name: w3wp.exe, version: 7.5.7600.16385, time stamp: 0x4a5bd0eb
    Faulting module name: clr.dll, version: 4.0.30319.1, time stamp: 0x4ba21eeb
    Exception code: 0xc00000fd
    Fault offset: 0x0000000000001177
    Faulting process id: 0x1348
    Faulting application start time: 0x01cb0224882f4723
    Faulting application path: c:\windows\system32\inetsrv\w3wp.exe
    Faulting module path: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll
    Report Id: c6a0941e-6e17-11df-864d-000acd16dcdb
    

    Fault bucket , type 0
    Event Name: APPCRASH
    Response: Not available
    Cab Id: 0
    
    Problem signature:
    P1: w3wp.exe
    P2: 7.5.7600.16385
    P3: 4a5bd0eb
    P4: clr.dll
    P5: 4.0.30319.1
    P6: 4ba21eeb
    P7: c00000fd
    P8: 0000000000001177
    P9: 
    P10: 
    
    Attached files:
    
    These files may be available here:
    
    
    Analysis symbol: 
    Rechecking for solution: 0
    Report Id: c6a0941e-6e17-11df-864d-000acd16dcdb
    Report Status: 0
    

    如果删除集合的实例化,应用程序将正常启动。如果我离开实例化,w3wp就会崩溃。如果修改接口,w3wp仍然会崩溃。我已经尝试了我能想到的每一个变体,主题是保持实例化,但是做其他事情的方式不同,但是w3wp仍然崩溃。

    我最大的问题是我完全不知道w3wp为什么会崩溃。这不是StackOverflowException或任何具体的东西,我得到的只是上面引用的那些不聪明的垃圾。

    DebugDiag 和 IISState 调试w3wp进程,但DebugDiag仅在x64中用于转储后分析(我在Windows 7 x64上运行,因此w3wp进程是64位的),当我尝试运行它时,IISStat说:

    D:\Programs\iisstate>IISState.exe -p 9204 -d
    Symbol search path is: SRV*D:\Programs\iisstate\symbols*http://msdl.microsoft.com/download/symbols
    
    IISState is limited to processes associated with IIS.
    If you require a generic debugger, please use WinDBG or CDB.
    They are available for download from http://www.microsoft.com/ddk/debugging.
    This error may also occur if a debugger is already attached to the process
    being checked.
    
    Incorrect Process Attachment
    

    我还尝试添加一个HTTP模块,如中所述 KB-911816 把这个加到我的 web.config 文件:

    <configuration>
      <runtime>
        <legacyUnhandledExceptionPolicy enabled="true" />
      </runtime>
    </configuration>
    

    2 回复  |  直到 15 年前
        1
  •  1
  •   Asbjørn Ulsberg    15 年前

    我将回答我自己的问题来结束这个问题,尽管我意识到这并不是解决各种可能导致W3WP崩溃的问题的唯一方法。

    RouteTable.Routes 它可能引发了一个异常(可能是由于在ASP.NET生命周期的早期还没有初始化自身)。推迟与…的沟通 路径表 直到后来解决了问题。

    虽然这不是一个对每个人都有效的解决方案,但它对我有效,我发现这个问题非常模糊,我会把它留给任何人来评论和回答,因为我在任何地方都找不到关于这个问题的现有帖子,所以在将来可能会有很好的参考价值。

        2
  •  0
  •   Lex Li    16 年前

    利用windows最新调试工具中的ADplus.exe捕获崩溃转储。那么转储分析应该会告诉你是什么导致了车祸,

    http://www.microsoft.com/whdc/devtools/debugging/default.mspx

    http://www.microsoft.com/downloads/details.aspx?FamilyID=6b6c21d2-2006-4afa-9702-529fa782d63b&displaylang=en

    版本6.12.2.633是必须的,因为它只包含adplus.exe的工作副本(请注意,不应使用adplus.vbs)。