事の経緯
常時稼働させるためのWindowsPCを新たに購入して使い始めたものの、数時間放置すると何故か停止してしまう。
使っている間は問題ないし、初期設定をしていた時は落ちなかった気がする。
しかも落ちたときにファンが止まっているのに通電しているようで、火が出そうなくらい熱くなっていて本気で火事の心配になる。
BIOSの設定をいじったり、いくつか問題の切り分けを模索するが改善せず。
諦めかけつつイベントビューアーを眺めていたとき、ダンプファイルが生成されていることに気がつく。
ダンプの解析はハードル高いかも、、と思いながらも一縷の望みにかけてダンプ解析やってみた。
というのが経緯です。
やったこと
- イベントビューアーに
Minidump
とあったので「Windows minidump」のキーワードでググってみる。 - Windowsの機能でクラッシュ時にメモリダンプすることを知る。
- ダンプファイルの保存先は
%SystemRoot%\Minidump
(C:\WINDOWS\Minidump
)と知る。→エクスプローラーで見ると確かにファイルがある。
- ダンプファイルを読み取るツールがいくつかあることを知る。
-
Microsoft WinDbgをMicrosoft Storeからインストール。
- WinDbgを起動し、
ファイル
→Open dump file
でC:\WINDOWS\Minidump
配下に出力されているダンプファイルを読み込む。 -
!analyze -v
のリンクをクリックし解析を実行。
- 以下の出力がされた。(うわ~読みたくない~、、と思った)
8: kd> !analyze -v ******************************************************************************* * * * Bugcheck Analysis * * * ******************************************************************************* WIN32K_POWER_WATCHDOG_TIMEOUT (19c) Win32k did not turn the monitor on in a timely manner. Arguments: Arg1: 0000000000000050, Calling monitor driver to power on. Arg2: ffffc185bd8852c0, Pointer to the power request worker thread. Arg3: 0000000000000000 Arg4: 0000000000000000 Debugging Details: ------------------ *** WARNING: Unable to verify timestamp for amdkmdag.sys KEY_VALUES_STRING: 1 Key : Analysis.CPU.mSec Value: 1031 Key : Analysis.Elapsed.mSec Value: 2190 Key : Analysis.IO.Other.Mb Value: 9 Key : Analysis.IO.Read.Mb Value: 0 Key : Analysis.IO.Write.Mb Value: 30 Key : Analysis.Init.CPU.mSec Value: 171 Key : Analysis.Init.Elapsed.mSec Value: 65423 Key : Analysis.Memory.CommitPeak.Mb Value: 100 Key : Bugcheck.Code.LegacyAPI Value: 0x19c Key : Dump.Attributes.AsUlong Value: 1808 Key : Dump.Attributes.DiagDataWrittenToHeader Value: 1 Key : Dump.Attributes.ErrorCode Value: 0 Key : Dump.Attributes.KernelGeneratedTriageDump Value: 1 Key : Dump.Attributes.LastLine Value: Dump completed successfully. Key : Dump.Attributes.ProgressPercentage Value: 0 Key : Failure.Bucket Value: 0x19C_DRVSETMONITORPOWERSTATE_HANG_amdkmdag!unknown_function Key : Failure.Hash Value: {837c57be-432f-85ea-743f-9e9d66af2d6b} Key : Hypervisor.Enlightenments.ValueHex Value: 1497cf94 Key : Hypervisor.Flags.AnyHypervisorPresent Value: 1 Key : Hypervisor.Flags.ApicEnlightened Value: 1 Key : Hypervisor.Flags.ApicVirtualizationAvailable Value: 0 Key : Hypervisor.Flags.AsyncMemoryHint Value: 0 Key : Hypervisor.Flags.CoreSchedulerRequested Value: 0 Key : Hypervisor.Flags.CpuManager Value: 1 Key : Hypervisor.Flags.DeprecateAutoEoi Value: 0 Key : Hypervisor.Flags.DynamicCpuDisabled Value: 1 Key : Hypervisor.Flags.Epf Value: 0 Key : Hypervisor.Flags.ExtendedProcessorMasks Value: 1 Key : Hypervisor.Flags.HardwareMbecAvailable Value: 1 Key : Hypervisor.Flags.MaxBankNumber Value: 0 Key : Hypervisor.Flags.MemoryZeroingControl Value: 0 Key : Hypervisor.Flags.NoExtendedRangeFlush Value: 0 Key : Hypervisor.Flags.NoNonArchCoreSharing Value: 1 Key : Hypervisor.Flags.Phase0InitDone Value: 1 Key : Hypervisor.Flags.PowerSchedulerQos Value: 0 Key : Hypervisor.Flags.RootScheduler Value: 0 Key : Hypervisor.Flags.SynicAvailable Value: 1 Key : Hypervisor.Flags.UseQpcBias Value: 0 Key : Hypervisor.Flags.Value Value: 4853999 Key : Hypervisor.Flags.ValueHex Value: 4a10ef Key : Hypervisor.Flags.VpAssistPage Value: 1 Key : Hypervisor.Flags.VsmAvailable Value: 1 Key : Hypervisor.RootFlags.AccessStats Value: 1 Key : Hypervisor.RootFlags.CrashdumpEnlightened Value: 1 Key : Hypervisor.RootFlags.CreateVirtualProcessor Value: 1 Key : Hypervisor.RootFlags.DisableHyperthreading Value: 0 Key : Hypervisor.RootFlags.HostTimelineSync Value: 1 Key : Hypervisor.RootFlags.HypervisorDebuggingEnabled Value: 0 Key : Hypervisor.RootFlags.IsHyperV Value: 1 Key : Hypervisor.RootFlags.LivedumpEnlightened Value: 1 Key : Hypervisor.RootFlags.MapDeviceInterrupt Value: 1 Key : Hypervisor.RootFlags.MceEnlightened Value: 1 Key : Hypervisor.RootFlags.Nested Value: 0 Key : Hypervisor.RootFlags.StartLogicalProcessor Value: 1 Key : Hypervisor.RootFlags.Value Value: 1015 Key : Hypervisor.RootFlags.ValueHex Value: 3f7 BUGCHECK_CODE: 19c BUGCHECK_P1: 50 BUGCHECK_P2: ffffc185bd8852c0 BUGCHECK_P3: 0 BUGCHECK_P4: 0 FILE_IN_CAB: 072623-19546-01.dmp TAG_NOT_DEFINED_202b: *** Unknown TAG in analysis list 202b DUMP_FILE_ATTRIBUTES: 0x1808 Kernel Generated Triage Dump BLACKBOXBSD: 1 (!blackboxbsd) BLACKBOXNTFS: 1 (!blackboxntfs) BLACKBOXPNP: 1 (!blackboxpnp) BLACKBOXWINLOGON: 1 CUSTOMER_CRASH_COUNT: 1 PROCESS_NAME: csrss.exe FAULTING_THREAD: ffffc185bd8852c0 STACK_TEXT: ffffab85`2d8ca590 fffff803`2ae40925 : ffffd401`e1651180 00000000`00000000 ffffc185`ac408040 ffffd401`e1651180 : nt!KiSwapContext+0x76 ffffab85`2d8ca6d0 fffff803`2ae41d47 : ffffab85`2d8cab98 ffffc185`b6cf6710 ffffc185`b6e7ea90 00000000`00000000 : nt!KiSwapThread+0xb05 ffffab85`2d8ca820 fffff803`2ae44396 : 00000000`00000000 00000000`00000001 00000000`00000000 00000000`00000000 : nt!KiCommitThreadWait+0x137 ffffab85`2d8ca8d0 fffff803`89fb32cd : ffffc185`d1f027c0 ffffc185`d1f027c0 ffffab85`2d8cad89 ffffab85`2d8caed4 : nt!KeWaitForSingleObject+0x256 ffffab85`2d8cac70 ffffc185`d1f027c0 : ffffc185`d1f027c0 ffffab85`2d8cad89 ffffab85`2d8caed4 00000000`00000000 : amdkmdag+0x1f932cd ffffab85`2d8cac78 ffffc185`d1f027c0 : ffffab85`2d8cad89 ffffab85`2d8caed4 00000000`00000000 ffffab85`2d8caed4 : 0xffffc185`d1f027c0 ffffab85`2d8cac80 ffffab85`2d8cad89 : ffffab85`2d8caed4 00000000`00000000 ffffab85`2d8caed4 ffffc185`b6ee98a0 : 0xffffc185`d1f027c0 ffffab85`2d8cac88 ffffab85`2d8caed4 : 00000000`00000000 ffffab85`2d8caed4 ffffc185`b6ee98a0 fffff803`89deade2 : 0xffffab85`2d8cad89 ffffab85`2d8cac90 00000000`00000000 : ffffab85`2d8caed4 ffffc185`b6ee98a0 fffff803`89deade2 00000000`00003e80 : 0xffffab85`2d8caed4 SYMBOL_NAME: amdkmdag+1f932cd MODULE_NAME: amdkmdag IMAGE_NAME: amdkmdag.sys STACK_COMMAND: .process /r /p 0xffffc185bff14140; .thread 0xffffc185bd8852c0 ; kb BUCKET_ID_FUNC_OFFSET: 1f932cd FAILURE_BUCKET_ID: 0x19C_DRVSETMONITORPOWERSTATE_HANG_amdkmdag!unknown_function OSPLATFORM_TYPE: x64 OSNAME: Windows 10 FAILURE_ID_HASH: {837c57be-432f-85ea-743f-9e9d66af2d6b} Followup: MachineOwner ---------
- ChatGPTに投げてみる。
プロンプトWindows PCが突然停止し、minidumpが生成されました。 このダンプファイルをWinDbgツールにかけたところ、以下の出力が得られました。 障害の原因を調べてください。 WinDbgのメッセージ: 8: kd> !analyze -v ******************************************************************************* * * * Bugcheck Analysis * * * ******************************************************************************* WIN32K_POWER_WATCHDOG_TIMEOUT (19c) ~~以下略~~
- ChatGPT の回答
WinDbgの分析によると、この問題はバグチェックコード`WIN32K_POWER_WATCHDOG_TIMEOUT (19c)`に関連しています。 これは、Win32kがモニターをタイムリーにオンにできなかったことを示しています。特に問題となっているのは、 `amdkmdag.sys`というAMDのグラフィックドライバーファイルです。このファイルに関連する操作 (おそらくモニターの電源をオンにする操作)がタイムリーに完了せず、システムがクラッシュした可能性があります。 解決策として以下の手順を試してみてください。 1. **グラフィックカードドライバのアップデート:** 最新のドライバが存在するかを確認し、 存在する場合はアップデートを行います。 AMDの公式ウェブサイトやデバイスマネージャーからドライバーのアップデートを確認できます。 2. **グラフィックカードドライバの再インストール:** もし最新のドライバに更新しても問題が解決しない場合は、 グラフィックカードのドライバをアンインストールし、再度インストールし直すことを試みてください。 3. **Windowsのアップデート:** Windowsが最新の状態であることを確認してください。 Windows Updateを通じて最新のパッチやアップデートを適用します。 4. **ハードウェアのトラブルシューティング:** 物理的なハードウェアに問題がある可能性もあります。 可能であれば、別のモニターを接続して問題が続くか確認してみてください。 また、グラフィックカード自体が故障している可能性もあります。 以上の手順を試しても問題が解決しない場合は、専門家に相談するか、さらに詳細なシステムの診断が必要かもしれません。
- 少し癖のあるディスプレイにUSB→HDMIで繋いでいる部分が怪しそう。。
それを外したらクラッシュしなくなりました!!🙌
今回の教訓
その1:グラボ周りはOSのクラッシュにつながる可能性が高いと再認識。特に高解像度&デュアル(トリプル)のように負荷がかかる時は注意。
その2:Minidump→WinDbg→ChatGPT の解析は最強!👍
ブルースクリーンや謎のクラッシュ時に思い出そう。
WinDbgは他にも使いこなせると便利そう。