Windows Driver Kitを使ってメモリダンプを少しだけ解析してみた

部屋のPCは、なぜかアースソフトPV3を使おうとすると落ちるのです。
PC起動直後はPV.exeを実行できるけど、起動後しばらく立つと駄目。

そんな訳で、原因を少しでも追求しようとWindows Driver Kit (WDK)を使って完全メモリダンプを解析してみたー。
解析といっても、初めての作業なのでさわりだけです。

まずはメモリダンプの採取。
これは、いつも落ちているオペレーションを行えばいいだけ。
具体的には、PCログイン後10分放置して、PV.exeを叩くとブルー画面に早変わり。

見事、狙ったとおりのブルースクリーンですよ。 (ぇ
DSCF1223.jpgDSCF0523.jpg
Stop Code: 0x000024のようです。ただし、この値は信用できない。
なぜなら、前回はStop Code: 0x00001Aだったので(笑)
まー、目的のメモリダンプも手に入ったので、そのまま解析してみますか。


それから下準備。
WDK_01.jpgWDK_02.jpg
「システムのプロパティ」の「詳細設定」より、「環境変数」を選択。
次のものを追加します。
変数名:_NT_SYMBOL_PATH
変数値:"SRV*c:\websymbols*http://msdl.microsoft.com/download/symbols"

変数値はSymbol filesを指定します。上記はMSDLへアクセスするため、ネット環境必須。また、Cドライブ直下のwebsymbolsをキャッシュフォルダとして使用するので、websymbolsフォルダ作成。
既にSymbol filesをダウンロード済の場合は、そのディレクトリを指定すればOKです。。

続いて、Windows Driver Kit (WDK)をダウンロード。
自分の場合は、「GRMWDK_EN_7600_1.ISO」(634MB)でした。
WDK_03.jpgWDK_04.jpg
CDをマウントすると、インストールするものが選べます。
ダンプ解析のみ行うので、Debugging Tools for Windowsを選択。
WDK_05.jpgWDK_06.jpgWDK_07.jpg
インストールフォルダの指定と、規約の同意。
同意後のセットアップが一番右側へ行けば「Finish」を押してセットアップは完了です。

WDK_08.jpgWDK_09.jpg
セットアップが終わると、[スタートメニュー]⇒[すべてのプログラム]に[Debugging Tools for Windows]が出来ているはずです。その中の[WinDbg]がダンプ解析ツール。
WDK_10.jpgWDK_11.jpgWDK_12.jpg
メニューの[File]より[Open Crash Dump...]を選択。
ダイアログが出てくるので、ココでダンプファイルを読み込めばOKです。
デフォルトでは、次の場所に格納されているはず。
%SystemRoot%\MEMORY.DMP

WDK_13.jpgWDK_14.jpgWDK_15.jpg
読み込みを行うと、少し時間がかかった後に初期解析を自動で行ってくれます。
今回は次の通りの表示されました。

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


Loading Dump File [C:\Windows\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 Server 2008/Windows Vista Kernel Version 6002 (Service Pack 2) MP (4 procs) Free x86 compatible
Product: Server, suite: Enterprise TerminalServer SingleUserTS
Built by: 6002.18160.x86fre.vistasp2_gdr.091208-0542
Machine Name:
Kernel base = 0x81e08000 PsLoadedModuleList = 0x81f1fc70
Debug session time: Tue Mar 16 20:40:25.616 2010 (UTC + 9:00)
System Uptime: 0 days 0:10:25.866
Loading Kernel Symbols
...............................................................
................................................................
...........................
Loading User Symbols
................................................................
.........
Loading unloaded module list
........
*******************************************************************************
* *
* Bugcheck Analysis *
* *
*******************************************************************************

Use !analyze -v to get detailed debugging information.

BugCheck 24, {1904aa, a76ea4fc, a76ea1f8, 82045e47}

Probably caused by : Ntfs.sys ( Ntfs!NtfsMapStream+4a )

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


ほとんどの場合、Probably caused by :で現れたものがクラッシュの起因となっています。
今回は、Ntfs.sysですね。

詳細な解析を行うため、!analyze -vを入力。

3: kd> !analyze -v
*******************************************************************************
* *
* Bugcheck Analysis *
* *
*******************************************************************************

NTFS_FILE_SYSTEM (24)
If you see NtfsExceptionFilter on the stack then the 2nd and 3rd
parameters are the exception record and context record. Do a .cxr
on the 3rd parameter and then kb to obtain a more informative stack
trace.
Arguments:
Arg1: 001904aa
Arg2: a76ea4fc
Arg3: a76ea1f8
Arg4: 82045e47

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


EXCEPTION_RECORD: a76ea4fc -- (.exr 0xffffffffa76ea4fc)
ExceptionAddress: 82045e47 (nt!CcMapData+0x000000af)
ExceptionCode: c0000005 (Access violation)
ExceptionFlags: 00000000
NumberParameters: 2
Parameter[0]: 00000000
Parameter[1]: b4cb2400
Attempt to read from address b4cb2400

CONTEXT: a76ea1f8 -- (.cxr 0xffffffffa76ea1f8)
eax=00000000 ebx=0000000e ecx=0000000f edx=00000000 esi=87147b50 edi=b4cb2400
eip=82045e47 esp=a76ea5c4 ebp=a76ea604 iopl=0 nv up ei ng nz ac pe cy
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00010297
nt!CcMapData+0xaf:
82045e47 8a17 mov dl,byte ptr [edi] ds:0023:b4cb2400=??
Resetting default scope

DEFAULT_BUCKET_ID: VISTA_DRIVER_FAULT

PROCESS_NAME: svchost.exe

CURRENT_IRQL: 0

ERROR_CODE: (NTSTATUS) 0xc0000005 - 0x%08lx

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

EXCEPTION_PARAMETER1: 00000000

EXCEPTION_PARAMETER2: b4cb2400

READ_ADDRESS: b4cb2400

FOLLOWUP_IP:
Ntfs!NtfsMapStream+4a
8c88f574 84c0 test al,al

FAULTING_IP:
nt!CcMapData+af
82045e47 8a17 mov dl,byte ptr [edi]

BUGCHECK_STR: 0x24

LAST_CONTROL_TRANSFER: from 8c88f574 to 82045e47

STACK_TEXT:
a76ea604 8c88f574 86264df8 a76ea63c 00000400 nt!CcMapData+0xaf
a76ea62c 8c88f674 86f07458 862600a0 004f2400 Ntfs!NtfsMapStream+0x4a
a76ea6a8 8c89021f 86f07458 86259458 b4b294b0 Ntfs!NtfsReadMftRecord+0x7d
a76ea6d4 8c88fd6a 86f07458 86259458 b4b294b0 Ntfs!NtfsReadFileRecord+0x31
a76ea704 8c8710ee 86f07458 b4b294a8 b4b294b0 Ntfs!NtfsLookupInFileRecord+0x11f
a76ea7bc 8c8a46a9 86f07458 8680e888 a76ea814 Ntfs!NtfsPrefetchFile+0x3aa
a76ea7d4 8c8a08e0 86f07458 8680e888 8680e888 Ntfs!NtfsUserFsRequest+0x39a
a76ea7f4 8c8a078d 86f07458 8680e888 2bed4294 Ntfs!NtfsCommonFileSystemControl+0xe1
a76ea864 81e4c9c6 862593a0 8680e888 8680e888 Ntfs!NtfsFsdFileSystemControl+0x163
a76ea87c 8c60fba7 86236e50 8680e888 00000000 nt!IofCallDriver+0x63
a76ea8a0 8c622a5f a76ea8c0 86236e50 00000000 fltmgr!FltpLegacyProcessingAfterPreCallbacksCompleted+0x251
a76ea8d8 81e4c9c6 86236e50 8680e888 8680e888 fltmgr!FltpFsControl+0xe5
a76ea8f0 8204e6a1 871593f8 8680e888 8680ea18 nt!IofCallDriver+0x63
a76ea910 8204ee46 86236e50 871593f8 00000001 nt!IopSynchronousServiceTail+0x1d9
a76ea9ac 81fac1e5 86236e50 8680e888 00000000 nt!IopXxxControlFile+0x6b7
a76eaa20 81fabfce a76eaaec 00000003 b5b5a908 nt!PfpPrefetchDirectoryStream+0x1a9
a76eaaa8 81fad4f0 00000000 00000002 a76eabe4 nt!PfpVolumePrefetchMetadata+0x37a
a76eab00 81fad7c4 b5b5a000 8574009b a76eabf8 nt!PfpPrefetchRequestPerform+0x25e
a76eab54 81fe0150 a76eabe4 8d317001 857407d7 nt!PfpPrefetchRequest+0x16e
a76eac18 81fef497 027cfb64 00000014 8d317001 nt!PfSetSuperfetchInformation+0x182
a76ead50 81e52c7a 0000004f 00000000 00000014 nt!NtSetSystemInformation+0x908
a76ead50 77195e74 0000004f 00000000 00000014 nt!KiFastCallEntry+0x12a
027cfb40 771953f0 71b93aea 0000004f 027cfb64 ntdll!KiFastSystemCallRet
027cfb44 71b93aea 0000004f 027cfb64 00000014 ntdll!NtSetSystemInformation+0xc
027cfb7c 71b93f78 027cfb98 027cfca4 000000ac sysmain!PfListPrefetch+0xb5
027cfc4c 71b94097 01a5a0ec 027cfca4 056b3b98 sysmain!PfDbDatabasePrefetchPerform+0x847
027cfc88 71b94e36 01a5a0ec 00004000 75b997e0 sysmain!PfDbDatabasePrefetchEx+0xc6
027cfce8 71b94da3 01a59e58 00000000 00000000 sysmain!PfRbPrefetchCore+0x81
027cfd00 75b9d0e9 01a59e58 027cfd4c 771719bb sysmain!PfRbPrefetchWorker+0x74
027cfd0c 771719bb 01a59e58 7563cbbd 00000000 kernel32!BaseThreadInitThunk+0xe
027cfd4c 7717198e 71b94d2f 01a59e58 ffffffff ntdll!__RtlUserThreadStart+0x23
027cfd64 00000000 71b94d2f 01a59e58 00000000 ntdll!_RtlUserThreadStart+0x1b


SYMBOL_STACK_INDEX: 1

SYMBOL_NAME: Ntfs!NtfsMapStream+4a

FOLLOWUP_NAME: MachineOwner

MODULE_NAME: Ntfs

IMAGE_NAME: Ntfs.sys

DEBUG_FLR_IMAGE_TIMESTAMP: 49e0192a

STACK_COMMAND: .cxr 0xffffffffa76ea1f8 ; kb

FAILURE_BUCKET_ID: 0x24_Ntfs!NtfsMapStream+4a

BUCKET_ID: 0x24_Ntfs!NtfsMapStream+4a

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


ブルースクリーンを発生させたモジュールが表示されました。
MODULE_NAME: Ntfs
IMAGE_NAME: Ntfs.sys

完全にファイルシステムのNTFSが起因のようです。

NTFSを見てみるとこんな感じ。

3: kd> lmvm Ntfs
start end module name
8c800000 8c910000 Ntfs (pdb symbols) c:\websymbols\ntfs.pdb\29C63CD7723940CA848DB15075E2B1AB2\ntfs.pdb
Loaded symbol image file: Ntfs.sys
Image path: \SystemRoot\System32\Drivers\Ntfs.sys
Image name: Ntfs.sys
Timestamp: Sat Apr 11 13:14:34 2009 (49E0192A)
CheckSum: 0010C4B9
ImageSize: 00110000
File version: 6.0.6002.18005
Product version: 6.0.6002.18005
File flags: 0 (Mask 3F)
File OS: 40004 NT Win32
File type: 3.7 Driver
File date: 00000000.00000000
Translations: 0409.04b0
CompanyName: Microsoft Corporation
ProductName: Microsoft® Windows® Operating System
InternalName: ntfs.sys
OriginalFilename: ntfs.sys
ProductVersion: 6.0.6002.18005
FileVersion: 6.0.6002.18005 (lh_sp2rtm.090410-1830)
FileDescription: NT File System Driver
LegalCopyright: © Microsoft Corporation. All rights reserved.

よく分からん(笑)

まぁ、これで起因となっているものが分かったので、あとはMicrosoftサポートなどで、モジュールをクエリとしてKBを検索すれば大体は情報出てくるかと。

自動解析だと、このあたりが限界ですかね。
後は、自分でアドレスなどを指定して解析すれば、さらに詳細な情報が手に入りそう。
そのうち、またダンプ採取して試してみよう。

Windowsダンプの極意 エラーが発生したら、まずダンプ解析!Windowsダンプの極意 エラーが発生したら、まずダンプ解析!
アスキー・メディアワークス 2008-11-27
売り上げランキング : 19813

おすすめ平均 star
star物足りない点
star日本語で読むWinDbg
starリリース後のトラブル解析やデバイスドライバのデバッグに

Amazonで詳しく見る
by G-Tools

| コメント(0) | トラックバック(0) |
■Yahoo!オークション おすすめ商品■
Web Services by Yahoo! JAPAN

トラックバック(0)

トラックバックURL: http://type-y.com/mt/mt-tb.cgi/1224

コメントする