
約 6 か月前に、コンピューターのハードウェア (新しいマザーボード、CPU、RAM など) をアップグレードしました。つい最近まで、コンピューターは問題なく動作していました。今朝、コンピューターを操作したら、BSOD が発生しました。WinDbg を使用してミニダンプを分析しました。これらの結果の分析を手伝ってくれる人はいませんか?
最初の結果は次のとおりです。
Use !analyze -v to get detailed debugging information.
BugCheck 101, {31, 0, fffff88002f65180, 2}
Probably caused by : Unknown_Image ( ANALYSIS_INCONCLUSIVE )
Followup: MachineOwner
実行すると、!analyze -v
次の出力が得られました。
CLOCK_WATCHDOG_TIMEOUT (101)
An expected clock interrupt was not received on a secondary processor in an
MP system within the allocated interval. This indicates that the specified
processor is hung and not processing interrupts.
Arguments:
Arg1: 0000000000000031, Clock interrupt time out interval in nominal clock ticks.
Arg2: 0000000000000000, 0.
Arg3: fffff88002f65180, The PRCB address of the hung processor.
Arg4: 0000000000000002, 0.
Debugging Details:
------------------
BUGCHECK_STR: CLOCK_WATCHDOG_TIMEOUT_4_PROC
CUSTOMER_CRASH_COUNT: 1
DEFAULT_BUCKET_ID: VISTA_DRIVER_FAULT
PROCESS_NAME: svchost.exe
CURRENT_IRQL: d
STACK_TEXT:
fffff880`08c33328 fffff800`02d268c9 : 00000000`00000101 00000000`00000031 00000000`00000000 fffff880`02f65180 : nt!KeBugCheckEx
fffff880`08c33330 fffff800`02cd9497 : fffff880`00000000 fffff800`00000002 00000000`00002711 00000000`00000000 : nt! ?? ::FNODOBFM::`string'+0x4e2e
fffff880`08c333c0 fffff800`02c13895 : fffff800`02c39460 fffff880`08c33570 fffff800`02c39460 00000000`00000000 : nt!KeUpdateSystemTime+0x377
fffff880`08c334c0 fffff800`02ccb173 : fffff800`02e44e80 00000000`00000001 00000000`00000001 fffff800`02c52000 : hal!HalpHpetClockInterrupt+0x8d
fffff880`08c334f0 fffff800`02ca4661 : fffff800`02e44e80 fffff800`02e52cc0 00000000`00000046 fffff800`02cca6dc : nt!KiInterruptDispatchNoLock+0x163
fffff880`08c33680 fffff800`02fd8def : 00000000`00000000 fffff880`08c33b60 00000000`00000000 fffff880`00de20b9 : nt!KeFlushProcessWriteBuffers+0x65
fffff880`08c336f0 fffff800`02fd9449 : 00000000`004d5d60 fffff800`02fc54de 00000000`00000000 fffffa80`085c1b60 : nt!ExpQuerySystemInformation+0x13af
fffff880`08c33aa0 fffff800`02ccded3 : 00000000`00000000 fffff880`08c33b60 ffffffff`fffe7960 000007fe`fcd30bd8 : nt!NtQuerySystemInformation+0x4d
fffff880`08c33ae0 00000000`77c4167a : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : nt!KiSystemServiceCopyEnd+0x13
00000000`00fbefd8 00000000`00000000 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : 0x77c4167a
STACK_COMMAND: kb
SYMBOL_NAME: ANALYSIS_INCONCLUSIVE
FOLLOWUP_NAME: MachineOwner
MODULE_NAME: Unknown_Module
IMAGE_NAME: Unknown_Image
DEBUG_FLR_IMAGE_TIMESTAMP: 0
FAILURE_BUCKET_ID: X64_CLOCK_WATCHDOG_TIMEOUT_4_PROC_ANALYSIS_INCONCLUSIVE
BUCKET_ID: X64_CLOCK_WATCHDOG_TIMEOUT_4_PROC_ANALYSIS_INCONCLUSIVE
Followup: MachineOwner
私の推測では、CPU (Intel Core i5-2400 Quad-Core) のプロセッサの 1 つに何らかの問題が発生したようです。ただし、この特定のエラーは、他の何らかの問題の症状である可能性もあります。
グーグルで調べたクロックウォッチドッグタイムアウト (101)ハードウェア関連のさまざまなフォーラムに多数の投稿がありました。いくつか読んでみると、問題はプロセッサにはあまり関係がなく、スタック トレース内の他の何か (通常はドライバー) に原因があるようです。これが今回のケースである場合、それがKeUpdateSystemTime
原因であると想定しても安全でしょうか? スタック トレースを正しく読み取っているかどうか、またはさらに分析するにはどうすればよいかわかりません。
良いニュースは、これが(今のところ)一度だけ発生し、(まだ)再発していないことです! :-)
更新: 2011-09-12
ミニダンプから次のコマンドを実行しました。
!thread @@c++((nt!_kprcb *)0xfffff88002f65180)->CurrentThread)
そして、次の出力を受け取りました。
GetPointerFromAddress: unable to read from fffff80002f01000
THREAD fffffa800952db60 Cid 0074.0110 Teb: 000007fffffd5000 Win32Thread: 0000000000000000 RUNNING on processor 0
Impersonation token: fffff8a001fc0060 (Level Delegation)
GetUlongFromAddress: unable to read from fffff80002e40ba4
Owning Process fffffa8009527060 Image: svchost.exe
Attached Process N/A Image: N/A
fffff78000000000: Unable to get shared data
Wait Start TickCount 14245338
Context Switch Count 6898658
ReadMemory error: Cannot get nt!KeMaximumIncrement value.
UserTime 00:00:00.000
KernelTime 00:00:00.000
Win32 Start Address 0x000007feff54a808
Stack Init fffff88008c33c70 Current fffff88008c33830
Base fffff88008c34000 Limit fffff88008c2e000 Call 0
Priority 27 BasePriority 8 UnusualBoost 0 ForegroundBoost 0 IoPriority 2 PagePriority 5
上記と同じスタック トレースが続きます。
答え1
基本的に、プロセッサの 1 つが、他のプロセッサの 1 つがクロック割り込みの受信を停止したことを検出します。この状態を検出したプロセッサはバグチェックを行い、どのプロセッサがハングしたかを通知します。
fffff88002f65180, The PRCB address of the hung processor.
すると、「ハングしたプロセッサは何をしていたのか」という疑問が生じます。その答えは、次のコマンドを使用して得ることができます。
!thread @@c++((nt!_kprcb *)0xfffff88002f65180)->CurrentThread)
ただし、ミニダンプしかないため、うまくいかない可能性があります。うまくいかない場合は、カーネル サマリー ダンプを作成するようにシステムを設定し、クラッシュが再度発生するのを待ちます。