メモリダンプのエラーコード確認  (WinDbg によるメモリダンプ解析)

 

■ WinDbg の起動

 (1) WinDbg を起動しシンボル ファイルを指定する。「シンボル情報」が「c:\websymbols」であるとき、 シンボル ファイル パスは 「SRV*c:\websymbols*http://msdl.microsoft.com/download/symbols」 と指定する。

 

 (2) メモリダンプ(Crash Dump)を開く。完全メモリダンプ、 カーネル メモリダンプ、 最小メモリダンプ のファイルを指定できます。

 

   

 

 

■ OSによる自動解析

 

メモリダンプ「MEMORY.DMP」のファイルを指定し実行すると、WinDbgの「Command」画面に次のように表示し、「stop エラーコード」と「OSによる自動解析」 ができる。

 

  ●メモリダンプ解析の初期画面の事例
Microsoft (R) Windows Debugger Version 6.7.0005.0
Copyright (c) Microsoft Corporation. All rights reserved.


Loading Dump File [C:\メモリダンプ\dump\MEMORY.DMP] ●完全メモリダンプを指定
Kernel Complete Dump File: Full address space is available

Symbol search path is: SRV*C:\websymbols*http://msdl.microsoft.com/download/symbols
Executable search path is: 
Windows XP Kernel Version 2600 (Service Pack 2) UP Free x86 compatible

  ●メモリダンプされたOSタイプとサービスパックを確認
Product: WinNt, suite: TerminalServer SingleUserTS
Built by: 2600.xpsp_sp2_rtm.040803-2158
Kernel base = 0x804d9000 PsLoadedModuleList = 0x8055cb20
Debug session time: Mon Apr 7 09:55:36.492 2010 (GMT+9)

  ●エラーが発生した時間 (メモリダンプ実行時間)
System Uptime: 0 days 0:10:22.074

  ●OS起動からエラー発生までの時間 (稼働時間)

Loading Kernel Symbols
...................................................................................................................................
Loading User Symbols
.........................................................................................................................
Loading unloaded module list
.....................
*******************************************************************************
* *
* Bugcheck Analysis *
* *
*******************************************************************************

Use !analyze -v to get detailed debugging information. 

  ●「!analyze -v」を左クリックするとOS自動解析がスタートする。

  ●又は「kd>」のコマンドラインに「!analyze -v」「エンタ」と打鍵する。
BugCheck 8E, {c0000005, bf8cec96, b7e82c38, 0} ●「stop エラーコード」
  ●ブルー画面は「stop 8E, {c0000005, bf8cec96, b7e82c38, 0} 」を示す。 「重要」
Probably caused by : win32k.sys ( win32k!HmgQueryAltLock+11 )

Followup: MachineOwner
---------

 

  ●「!analyze -v」でOSが自動解析する。
kd> !analyze -v
*******************************************************************************
* *
* Bugcheck Analysis *
* *
*******************************************************************************
  ●下記は「OSの自動解析」結果 「重要」
KERNEL_MODE_EXCEPTION_NOT_HANDLED (8e)
This is a very common bugcheck. Usually the exception address pinpoints
the driver/function that caused the problem. Always note this address
as well as the link date of the driver/image that contains this address.
Some common problems are exception code 0x80000003. This means a hard
coded breakpoint or assertion was hit, but this system was booted
/NODEBUG. This is not supposed to happen as developers should never have
hardcoded breakpoints in retail code, but ...
If this happens, make sure a debugger gets connected, and the
system is booted /DEBUG. This will let us see why this breakpoint is
happening.
Arguments:
Arg1: c0000005, The exception code that was not handled
Arg2: bf8cec96, The address that the exception occurred at
Arg3: b7e82c38, Trap Frame  
●トラップ(割込)のスタックポインタの場所
Arg4: 00000000

Debugging Details:
------------------


EXCEPTION_CODE: (NTSTATUS) 0xc0000005 - "0x%08lx"

FAULTING_IP: 
win32k!HmgQueryAltLock+11
bf8cec96 8b4004 mov eax,dword ptr [eax+4]
  ●エラーのためトラップが発生した場所のCPUレジスタとプログラム命令
TRAP_FRAME: b7e82c38 -- (.trap 0xffffffffb7e82c38)
ErrCode = 00000000
eax=00000000 ebx=0000ffff ecx=000bdcb0 edx=00000000 esi=e4efd000 edi=00400000
eip=bf8cec96 esp=b7e82cac ebp=b7e82cf4 iopl=0 nv up ei pl nz na po nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00010202
win32k!HmgQueryAltLock+0x11:
bf8cec96 8b4004 mov eax,dword ptr [eax+4] ds:0023:00000004=????????

  ●「????????」とはds空間のアドレス「00000004」にメモリが存在しないことを示す。

   存在しないメモリ空間でmov 命令を実行したためにトラップが発生した。

  ●通常、メモリ空間「00000000」の周辺はOSの禁止領域です。
Resetting default scope

DEFAULT_BUCKET_ID: DRIVER_FAULT

BUGCHECK_STR: 0x8E

PROCESS_NAME: ApSpk2.exe

LAST_CONTROL_TRANSFER: from 8051fea6 to 805359ae

STACK_TEXT:  ●スタックポインタの概要

スタック、プログラム、パラメータ(1/2/3)      、シンボル表記
b7e82800 8051fea6 0000008e c0000005 bf8cec96 nt!KeBugCheckEx+0x1b
b7e82bc8 804e1ada b7e82be4 00000000 b7e82c38 nt!KiDispatchException+0x3b1
b7e82c30 804e1a86 b7e82cf4 bf8cec96 badb0d00 nt!CommonDispatchException+0x4d
b7e82c4c 804e3ff1 00000001 e4efd004 00000000 nt!Kei386EoiHelper+0x18a
b7e82c4c 00010a83 00000001 e4efd004 00000000 nt!KiTrap0E+0xcc ●Trap0E

  ●この下でTrap0E (NMI-14:ページフォルト) が発生
WARNING: Frame IP not in any known module. Following frames may be wrong.
7c94eb90 24a48dc3 00000000 0024648d 90909090 0x10a83
7c94eb94 00000000 0024648d 90909090 24548d90 0x24a48dc3


STACK_COMMAND: kb

FOLLOWUP_IP: 
win32k!HmgQueryAltLock+11
bf8cec96 8b4004 mov eax,dword ptr [eax+4]

SYMBOL_STACK_INDEX: 0

FOLLOWUP_NAME: MachineOwner

MODULE_NAME: win32k

IMAGE_NAME: win32k.sys  ●問題発生のドライバ「win32k.sys」を左クリックすると詳細表示。


DEBUG_FLR_IMAGE_TIMESTAMP: 41107f7a

SYMBOL_NAME: win32k!HmgQueryAltLock+11

FAILURE_BUCKET_ID: 0x8E_VRF_win32k!HmgQueryAltLock+11

BUCKET_ID: 0x8E_VRF_win32k!HmgQueryAltLock+11

Followup: MachineOwner
---------

 

  ●ドライバ「win32k.sys」の詳細表示
kd> lmvm win32k
start       end         module name 

bf800000 bf9c0200 win32k (pdb symbols) C:\websymbols\win32k.pdb\D4893\win32k.pdb

    Loaded symbol image file: win32k.sys
    Image path: \SystemRoot\System32\win32k.sys
    Image name: win32k.sys
    Timestamp: Wed Aug 04 15:17:30 2004 (41107F7A)
    CheckSum: 001CC8A2
    ImageSize: 001C0200
    File version: 5.1.2600.2180
    Product version: 5.1.2600.2180
    File flags: 0 (Mask 3F)
    File OS: 40004 NT Win32
    File type: 3.7 Driver
    File date: 00000000.00000000
    Translations: 0411.04b0
    CompanyName: Microsoft Corporation
    ProductName: Microsoft(R) Windows(R) Operating System
    InternalName: win32k.sys
    OriginalFilename: win32k.sys
    ProductVersion: 5.1.2600.2180
    FileVersion: 5.1.2600.2180 (xpsp_sp2_rtm.040803-2158)
    FileDescription: Multi-User Win32 Driver
    LegalCopyright: (C) Microsoft Corporation. All rights reserved.

 

 

 

 

 

 問題の仮説を立てる (仮説1:ハード・・・ 仮説2:ソフト・・・ 仮説3:他・・・ )
 

■ メモリダンプのコマンドで確認 

WinDbg のCommand画面で「!analyze -v」「エンタ」と打鍵すると、OSがエラーを自動解析する。手順は上記を参照。

 

■ 日本語のWebで確認

日本語版の 「STOP エラー 一覧」 を参照する。

 

■ WinDbg のヘルプで確認

英語版ですがWinDbg のヘルプ画面でもSTOPエラー コード を参照する。より詳細に記載しています。

WinDbg → Help → Contents → Debugging Tools for Windows → Bug Checks (Blue Screens) → Bug Check Code Reference → 「STOPエラー コード」

 

■ マイクロソフト ウェブサイトで確認

下記「Microsoft サポート オンライン」で「技術情報の検索」で類似問題を検索する。

http://support.microsoft.com/default.aspx

 

「!analyze -v」コマンドでの「OSが自動解析」はソフトウェアの観点からエラーを表記しており、その精度もだいぶ向上してきました。

しかし、ソフト的な側面だけではなく、ハード的側面からも問題を想定する必要があります。ここでは原因を絞り込んではならない。