wired raven

文字通りの日記。主に思ったことやガジェットについて

DPC_WATCHDOG_VIOLATIONの対策

症状

対応

  1. 完全メモリダンプをとる
  2. メモリダンプをWindbgで解析する
  3. ChatGPTにダンプ結果を読み込ませると、原因や調査すべき点を教えてくれるのでそれ頼りに進めた
  4. GeForceドライバーがあやしいと判明
  5. Clean-Toolを使ってドライバーを完全アンインストール
  6. ドライバーをインストールしなおす
  7. DPCのタイムアウト上限を増やした

でひとまず落ち着いた。

ダンプの概要

ファイルを読み込んでから !analyze -v を実行。

DPC_WATCHDOG_VIOLATION (133)
The DPC watchdog detected a prolonged run time at an IRQL of DISPATCH_LEVEL
or above.
Arguments:
Arg1: 0000000000000001, The system cumulatively spent an extended period of time at
    DISPATCH_LEVEL or above.
Arg2: 0000000000001e00, The watchdog period (in ticks).
Arg3: fffff80078f1c340, cast to nt!DPC_WATCHDOG_GLOBAL_TRIAGE_BLOCK, which contains
    additional information regarding the cumulative timeout
Arg4: 0000000000000000

!dpcs コマンドで深堀すると次のような結果が得られた。

CPU Type      KDPC       Function
 0: Normal  : 0xffff9209d6c54d40 0xfffff800796c6ca0 Wdf01000!FxInterrupt::_InterruptDpcThunk
Unable to load image \SystemRoot\System32\DriverStore\FileRepository\nv_dispi.inf_amd64_cc569e59ca39c5fe\nvlddmkm.sys, Win32 error 0n2
 0: Normal  : 0xffff9209d5f91160 0xfffff800967155c0 nvlddmkm
 0: Normal  : 0xffff9209d72daee0 0xfffff80095bcaf20 nvlddmkm
 0: Normal  : 0xfffff80078e3bc00 0xfffff800784fe150 nt!PpmCheckPeriodicStart
 0: Normal  : 0xffff9209d6206ca0 0xfffff800796c6ca0 Wdf01000!FxInterrupt::_InterruptDpcThunk
 0: Normal  : 0xfffff80078e42300 0xfffff800785585c0 nt!KiBalanceSetManagerDeferredRoutine
 0: Normal  : 0xffff9209cc6c7970 0xfffff800786271f0 nt!$$3
 0: Normal  : 0xffff9209cc7dc838 0xfffff800785b5200 nt!EtwpLoggerDpc
 0: Threaded: 0xfffff80071868758 0xfffff8007877a640 nt!KiDpcWatchdog

 7: Threaded: 0xffffe7004e719758 0xfffff8007877a640 nt!KiDpcWatchdog

GeForceのドライバが正しく読み込めてなさそう。

試したけど効果のなかったもの

  • システムファイルの修復
    • DISM /Online /Cleanup-Image /RestoreHealth
    • sfc /scannow
  • ディスクの修復
    • chkdsk /f
  • SATAデバイスドライバを標準に戻す
  • Microsoft Visual C++ 2010 再頒布可能パッケージをアンインストールする
    • そういう記事がヒットしたので削除してみる。このランタイムを利用しているソフトウェアが当然のことながら動かなくなる
  • Memtest
    • メモリ増設時に走らせて問題なしだったが、改めて走らせてみる
      • 問題なし
  • OCCT
    • 負荷テストを1時間、種類を変えたり混合したりで問題なし
  • DDUを使ってグラフィックドライバの完全削除、インストール
  • USB機器の自動電源オフのチェックを外す
  • 外付けSSDを外す
  • NVIDIA オーバーレイを無効にする
  • 仮想メモリの設定変更
    • システム管理にした。メモリフルダンプをとるために増やした
  • 蟹のLANとサウンドのドライバ更新
  • Bluetoothアダプタのドライバ更新
  • NVIDIAコントロールパネルより電源管理モードを「パフォーマンス最大化を優先」
  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\storahci\Parameters\Device\NoLPMSSD追加
  • USBXHCI.SYS でエラーが起きているようなのでドライバーの再インストール
  • UEFIの設定をドスパラの初期設定にあわせる
  • 電源モードを画面から「バランス」に変更

参考

メモ

最初からメモリダンプをとってダンプを解析すれば最速で原因にたどり着けた。メモリダンプの内容は正直、専門外なので操作説明などを読んだり、ChatGPT使ったりして読んだ。ChatGPTがポジティブめのことを言うのでだいぶ助けられた。

マシン自体は今のところ、正常に動作している。原因を絞るためにSSDを交換したり、ソフトやドライバーの更新、不要なソフトのアンインストールを行った結果、トラブル前より動きはよくなった。

Clean-Toolはフォーラムでファイルへのリンクだけ見つけられたけど、配布ページが見つからないのでリンクは省略。

PC関係の設定を変えたらメモをとっておくといくらかトラブルシューティングの足しになるかもしれない。いい感じに設定をテキストで管理できないものか。