2012-02-06 27 views
3

ライブASP.NET 4.0サイトで、断続的なスタックオーバーフロー例外の原因を見つけようとしています。他のすべてのタイプの例外を無視するカスタム設定を使用して、ADPlus(adplus_old.vbs、新しいadplus.exeではなく)を使用してクラッシュダンプを取得しました(第1の回答を参照:Help catching StackOverflowException with WinDbg and ADPlus)。Windbgとスタックオーバーフローの例外 - クラッシュダンプがありますが、Windbgの出力が意味がありません

私は、アプリケーションが実行されているのと同じサーバーでWindbgを実行しています。サーバーはIntelベースの64ビットWin 2003を搭載しています.WinDbgのバージョンは64ビットで6.12です。例外の原因と思われるアセンブリのPDBファイルを生成し、それらをサイトの/ binフォルダに入れました(PDBファイルがないアセンブリがいくつかありますが、この問題には関係していないと仮定しています)。環境変数_NT_SYMBOL_PATHが/ binフォルダを指していました。 WinDbgはシンボルパスを次のように表示します:C:\ WINDOWS \ Microsoft.NET \ Framework64 \ v4.0.30319; D:\ InetPub \ LiveSites \ MySite \ bin

WinDbgを実行すると、クラッシュダンプを開いた後に.loadby sos clr then!clrstack。出力はかなり小さいです。テストサイトで意図的なS/Oを設定すると、例外を引き起こすメソッドが明確に示されています。何がうまくいかないのですか?

Microsoft (R) Windows Debugger Version 6.12.0002.633 AMD64 
Copyright (c) Microsoft Corporation. All rights reserved. 


Loading Dump File [F:\ADPlus\Crash_Mode__Date_02-03-2012__Time_14-36-11PM\PID-9212__W3WP.EXE_-MySite-__1st_chance_StackOverflow__full_0140_2012-02-04_00-24-45-123_23fc.dmp] 
User Mini Dump File with Full Memory: Only application data is available 

Comment: '1st_chance_StackOverflow_exception_in_W3WP.EXE_-MySite-_running_on_MyServer' 
Symbol search path is: C:\WINDOWS\Microsoft.NET\Framework64\v4.0.30319;D:\InetPub\LiveSites\MySite\bin 
Executable search path is: 
Windows Server 2003 Version 3790 (Service Pack 2) MP (8 procs) Free x64 
Product: Server, suite: Enterprise TerminalServer SingleUserTS 
Machine Name: 
Debug session time: Sat Feb 4 00:24:50.000 2012 (UTC + 0:00) 
System Uptime: 185 days 15:16:43.314 
Process Uptime: 0 days 9:49:58.000 
................................................................ 
................................................................ 
................................................................ 
................................................................ 
..................................... 
Loading unloaded module list 
.. 
This dump file has an exception of interest stored in it. 
The stored exception information can be accessed via .ecxr. 
(23fc.21ec): Stack overflow - code c00000fd (first/second chance not available) 
*** ERROR: Symbol file could not be found. Defaulted to export symbols for clr.dll - 
clr!LogHelp_TerminateOnAssert+0x49e13: 
00000644`7f14d883 894c2448  mov  dword ptr [rsp+48h],ecx ss:00000000`0ee55fc8=00000000 
0:054> .loadby sos clr 
0:054> !clrstack 
PDB symbol for clr.dll not loaded 
OS Thread Id: 0x21ec (54) 
Child SP   IP    Call Site 
000000000eecf138 000006447f14d883 [GCFrame: 000000000eecf138] 
000000000eecf178 000006447f14d883 [ContextTransitionFrame: 000000000eecf178] 
000000000eecf1b8 000006447f14d883 [GCFrame: 000000000eecf1b8] 
000000000eecf3a0 000006447f14d883 [ComMethodFrame: 000000000eecf3a0] 

これは私のADPlusのコマンドです:

adplus_old.vbs -p 12345 -c F:\ADPlus\DumpStackOverflow.cfg 
(where 12345 is the PID of the w3wp.exe process I am attaching to. 

これは私のADPlusの設定ファイルである:実行

<ADPlus> 
<Settings> 
    <RunMode>CRASH</RunMode> 
    <OutputDir>F:\ADPlus</OutputDir> 
</Settings> 
<Exceptions> 
    <Option>FullDumpOnFirstChance</Option> 
    <Option>MiniDumpOnSecondChance</Option> 
    <Option>NoDumpOnFirstChance</Option> 
    <Option>NoDumpOnSecondChance</Option> 
    <Config> 
     <Code>AllExceptions</Code> 
     <Actions1>Void</Actions1> 
     <Actions2>Void</Actions2> 
     <ReturnAction1>GN</ReturnAction1> 
     <ReturnAction2>GN</ReturnAction2> 
    </Config>  
    <Config> 
     <!-- 
     av = AccessViolation 
     ch = InvalidHandle 
     ii = IllegalInstruction 
     dz = IntegerDivide 
     c000008e = FloatingDivide 
     iov = IntegerOverflow 
     lsq = InvalidLockSequence 
     sov = StackOverflowException 
     eh = CPlusPlusEH 
     * = UnknownException 
     clr = NET_CLR 
     bpe = CONTRL_C_OR_Debug_Break 
     ld = DLL_Load 
     ud = DLL_UnLoad 
     epr = Process_Shut_Down 
     sbo = Stack_buffer_overflow 
     --> 
     <Code>sov;sbo</Code> 
     <Actions1>Log;Time;Stack;FullDump;EventLog</Actions1> 
     <CustomActions1>!runaway</CustomActions1> 
     <Actions2>Log;Time;Stack;FullDump;EventLog</Actions2> 
     <CustomActions2>!runaway</CustomActions2> 
     <!-- 
     G = go 
     GN = go unhandled exception 
     GH = go handled exception 
     Q = quit 
     QD = quit and detach 
     --> 
     <ReturnAction1>GN</ReturnAction1> 
     <ReturnAction2>GN</ReturnAction2> 
    </Config> 
    <Config> 
     <Code>clr</Code> 
     <Actions1>Void</Actions1> 
     <Actions2>Log;Time;Stack;FullDump;EventLog</Actions2> 
     <ReturnAction1>GN</ReturnAction1> 
     <ReturnAction2>GN</ReturnAction2> 
    </Config> 
    <Config> 
     <Code>epr</Code> 
     <Actions1>Log;Time;Stack;FullDump;EventLog</Actions1> 
     <Actions2>Void</Actions2> 
     <ReturnAction1>GN</ReturnAction1> 
     <ReturnAction2>GN</ReturnAction2> 
    </Config> 
</Exceptions> 
</ADPlus> 
+0

clr.dllのPDBシンボルがロードされていない=> CLRシンボルをロードする必要があるかもしれません。 .symfix D:\ InetPub \ LiveSites \ MySite \ binとwindbgの.reloadコマンドを試してください – plodoc

+0

ありがとうが、これは違いはありません。 – Laurence

答えて

7

例外に関するより多くの情報を提供することができる "-vを分析!"。

+0

ありがとう!これは私に必要な詳細を私に与えました。私はいつもの!clrstackコマンドがうまくいかなかった理由を理解していませんが、私は必要なものを手に入れました。 – Laurence

+0

私はあなたを完全に愛しています! – NestorArturo

関連する問題