Windowsパソコンが再起動連発病(KP41病)になったので、BSoDの原因をデバッグツールで突き止める【WinDbgのすすめ&情報収集】
「なにもしてないのにパソコンこわれた」をちょくちょく地でいくWindowsマシーンとの格闘です。がんばっていきましょう!!!!
課題
自作PC(Windowsマシーン)がリブートを繰り返すようになり、原因がよくわからず困ったので調査。
発症と症状
- LLM(Gemma3 4B)でCromeDriver系のタスクを回しまくっていたら再起動が発症
- それ以来、これといったトリガーがなく、突如再起動(放置しててもゲームしてても落ちる)
- おなじ構成のパソコンで問題ないことは確認済み
- 完全初期化するとしばらく治ることがある
病名がわかることのメリデメ
・KP41病(Kerne-Power41病)
病名がわかったことで、調査・検索がはかどるようになったと同時に、同源ではない情報が増えるようになってしまいました。
ひとまずKP41病かどうか確認するイベントビュワー
「スタートボタン」を右クリックし、「イベントビュワー」を出し、左のペインから「Windows」→「システム」と進むと、イベントインフォが並ぶので「重大」と出ているものを見ていくと、「Kernel-Power」のイベントID「41」で原因不明の再起動がおきているとわかりました。
ただ、これはなにかの原因で「Blue Screen of Death(BSoD)」になったという情報量しかもっておらず、そういう病気があるわけではありません。むしろBSoDの原因さえ突き止めることができれば、あとは何をすればいいかわかるはずです。
急がば回れ。
ちなみに「BugcheckCode 0」と出ていたら、原因を辿れないということなので、本格的に手探りを強要されます。パソコン大好きなひとになってください。
できるだけ問題の切り分け
【外部接続要因】
コンセントのタコ足・パーツの不完全な差し込み
【特殊状況要因】
ウイルス感染(マルウェア感染)・特定ドライバのバグ混入・ソフトウェア同士のバッティング
【ハードウェア要因】
USB接続機器(USB規格不一致)・電源ユニット・メモリ・CPU・GPU・マザーボード
【ソフトウェア要因】
BIOSバージョン・ファイルシステム・休止状態ファイル・電圧定格・メモリ不足
【設定要因】
電源設定・仮想メモリ設定
KP41病の問題は、BSoDの原因があまりにおおすぎて1ターンで特定できないため、泥沼化するところにあるのではないかと思います。実際の病気でも、医原性だったり心因性だったり、意外なところに原因があったりします。
グラボの抜き差しで治ったというひともいたり、ディスプレイのケーブルの差す位置を変えたら治ったというひともいたので、風邪とおなじぐらい難易度の濃淡がありそうです。
ちなみに私の場合は、BIOSのバージョンアップがいちばん大きな要因だったと思います。
WinDbgアプリによる診断(いちばんおすすめ)
とにもかくにも診断からはじめます。WinDbg(Windows デバッガー)というデバッグツールをインストールして、ダンプファイルをみていきます。
$ winget install Microsoft.WinDbg
ダンプファイルの設定場所を確認する
WinDbgは、エラーが生じたときに自動生成されるダンプファイルを分析してくれるツールなので、まずはダンプファイルとやらがどこに生成されるのか確認します。
「設定」→「システム」→「システムの詳細設定」(システムのプロパティに飛ばされます)→「詳細設定」タブ→「起動と回復」の"設定"ボタン→「ダンプファイル」のパスを確認します。
私の場合は「最小メモリダンプ」「%SystemRoot%¥Minidump」に設定されているようでした。じぶんのパスをコピペするかメモっておいてください。
わかりにくいパスなので、私は最小メモリダンプを「C:\Mini.dmp」、それ以外を「C:\Memory.dmp」にしました。
ダンプを置くためのドライブレター(E:)をつくってもよいと思います。
ダンプファイルが生成されるか確認
C:\Mini.dmp
などと変更したあとはBSoDを待つしかないですが、意図的にBSoDを発生させる公式ツールがあるので、こちらをダウンロードして使います。「notMyfalut」とかいう謎のネーミングではありつつ、Microsoft公式です。
ダウンロードしたら、解凍して、じぶんのベースバージョン(たとえば64)の実行ファイルをクリックし、「Crash」と出るのでクラッシュさせます。ブルースクリーンになったあとに再起動し、フォルダーをひらいて「PC」→「C:」に移動すると、「Mini.dmp」ができているはずです。
ダンプファイルを登録して診断スタート
インストールした「WinDbg」を右クリックで管理者権限で開きます。開いたら、「ファイル」→左カラムの「Start Debugging」の「Open dump file」をクリック。
ここに先ほどのダンプファイルパス「C:\Mini.dmp」を選択。管理者権限ではないとか、なにかの過程でダンプファイルが削除されていたら、エラーになります。ご自身の環境のパス名を入れてください。
ダンプファイルが選択できるようになったら「!analyze -v」で診断します。
ここからは教えられないというか、結果をもとに、どのファイルが問題だったのか辿っていって、削除したり設定変更したりして、あらためてBSoDが生じるかどうか確認してみてください。
このパターンで問題を追いかけていき、最終的に解決しなかったひとの記録は見受けられなかったので、非常に有効な方法だと思います。
とくに「Probably caused by : nvlddmkm.sys」というグラフィックボードドライバまわりのエラーが頻出らしく、レジストリエディターで修正する方法が目立ちました。(グラフィックボードドライバの更新があると、旧式バージョンのファイルとバッティングするのがよくあるエラーらしいです)
それ以外にやってみたこと&ネットで推奨されていること
信頼性モニター
「コントロールパネル」→「システムとセキュリティ」の「コンピューターの状態を確認」→セキュリティとメンテナンスという画面に飛ぶ→「メンテナンス(M)」→「問題の報告」の「信頼性履歴の表示」をクリック。ここに重要なエラーが出ている可能性があります。
電源ユニットのアップグレード
そもそもCPUに電気が足りてないのが原因である可能性が高く、電源ユニットをつよくするのが近道であるのは一定の説得力がありますね。
Windows Update
これで治ったというのは見かけませんでした。
各種ドライバ更新
私はNVIDIAの更新があったのでいちおうやりました。NVIDIAグラフィックドライバーの更新で治らなくて、再インストールで治ったというひともいました。
BIOSアップデート
私はこれがおおきかった印象です。
まずはマザーボードのメーカーとバージョンを確認。
$ wmic baseboard get product,Manufacturer,version,serialnumber
私は「ASUS」の「B250M-BASALT 0811」というモデルだったので、ASUSのダウンロードセンターから最新版をダウンロードして、シングルパーテーションにしたFATフォーマットのUSBメモリに入れます。
再起動直後にBIOSをひらいて、「Advanced Mode」→「ツール」→「ASUS EZ Flash 3 ユーティリティ」→「Storage Devices経由」で最新化。
セキュリティソフトのアンインストール
使用中のセキュリティソフトが引っかかってた、というひとがいました。
完全初期化
長いときは1日ぐらいかかります。プログレス表示が「1%」から進まなくても忍耐。
私の環境では、完全に初期化すればいったん症状はおさまります。ただ、おなじようにハードワークさせると再発症する感じで応急処置っぽい感じでした。サブ機でもめちゃくちゃ面倒なのに、メインとして使っているかたは完全初期化に抵抗あると思います。
$ systemreset -factoryreset
あるいは「設定」→「更新とセキュリティ」→「回復」→「このPCを初期状態に戻す」→「開始する」→「すべて削除する」。
もうひとつの選択肢の個人のファイルを残して初期化するやつは、私のほうではなんの解消にもなりませんでした。
放電
「2時間放置」って言っているひとがけっこういます。
壁のコンセントに差す(タコ足配線をやめる)
カーネルパワー41の問題にかぎらず、けっこう重要です。
PC内の物理的な清掃
よい機会なのでやれたほうがいいです。
メモリなどをちゃんと差す
半ドアみたいな刺さりかたしていると不安定で落ちることはあると思います。
USB接続機器規格
USB接続機器の着脱や調整で治っているひともけっこういました。
USB3.0のほうに面倒くさがって2.0のキーボードを差していたのがよくなかったかもしれません。どうしても3.0しかなくて、2.0のものを差すしかない場合は、2.0のUSBハブを差すことで解消できると思います。(キーボードを認識しないときによくやる手法)
電圧の定格を調整する
BIOSから定格の調整をすることで治ったという話もちらほらあります。
メモリチェック(再起動)
$ mdsched
イベントビュワーの「MemoryDiagnostics-Results」で結果が見られます。
ファイル修復
$ sfc /scannow
ファイルシステム修復
/f
はファイルシステム修復、/r
は不良セクタの回復。
$ chkdsk C: /f /r
イベントビュワーの「Wininit」の最新ログで結果が見られます。
ウイルススキャン
「設定」→「更新とセキュリティ」→「Windowsセキュリティを開く」ボタン→「ウイルスと脅威の防止」→「スキャンのオプション」→「フルスキャン」→「今すぐスキャン」
ページングファイルをいったん無効化(初期化)
「設定」→「システム」→左ペイン「詳細情報」→右ペイン「システムの詳細設定」→「パフォーマンス」の設定ボタン→「詳細設定」タブ→「仮想メモリ」の変更(C)ボタン→「ページングファイルなし(N)」を選択して隣の「設定(S)」をクリック。
SysMainの無効化
「スタートボタン」右クリック→「コンピューターの管理」→左ペイン「サービスとアプリケーション」→「サービス」→「SysMain」右クリック→「プロパティ」→スタートアップ無効&停止→適用
電源設定
「設定」→「システム」→「電源とスリープ」→「電源の追加設定」
- 「バランス」or「高パフォーマンス」
- 左ペイン「電源ボタンの動作を選択する」→「現在利用可能ではない設定を変更します」→「シャットダウン設定」→「高速スタートアップを有効にする(推奨)」のチェックを外す
ハイバネーション(休止状態)禁止
休止モードから戻ろうとすると発症するひとがいるらしく、休止状態の禁止コマンド。休止状態はメモリも食うのでhiberfil.sysを削除。
$ powercfg /a
以下のスリープ状態がこのシステムで利用可能です:
...
$ powercfg /h /size 50
$ powercfg /h off
hiberfil.sysが削除されます
h
はhybernate
の略です。powercfg /hybernate off
としてもオフにできます。
ゲームモード無効化
「設定」→「ゲーム」→左ペイン「ゲームモード」をOFF。
Windowsのハードウェアアクセラレーション無効化
「設定」→「システム」→「ディスプレイ」→「グラフィックの設定」→「ハードウェア アクセラレータによる GPUスケジューリング」をOFF。
GoogleChromeのハードウェアアクセラレーションを無効化
そもそも私と似た環境では、Chronium系を使うとKP41病になるというひとがいました。
「設定」→「システム」→「ハードウェアアクセラレーションが使用可能な場合は使用する」をOFF。
NVIDIA設定
これで治ったというひとを見かけました。
「スタートボタン」→「Nvidia Controll Panel」
- 「3D設定の管理」→「電源管理モード」ディレクティブを「パフォーマンス最大化を優先」
- 「Surround、PhysXの設定」→「PhysX設定」→「プロセッサ」→「じぶんのGPU(RTX 3060)」
スペック
$ systeminfo
OS名:Microsoft Windwos 10 Pro
OSバージョン:10.0.19045 N/A ビルド 19045
システムの種類:x64-based PC
プロセッサ:Intel64 Family 6 Model 158 Stepping 9 GenuineIntel ~3601 Mhz
BIOSバージョン;American Megatrends Inc. 0811, 2017/08/25
物理メモリの合計:16,324 MB
ネットワーク カード:Realtek PCIe GbE Family Controll
# CPU
$ wmic cpu get name,NumberOfLogicalProcessors
Name
Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz
NumberOfLogicalProcessors
8
# メモリ
$ wmic memorychip capacity,speed
capacity
17179869184
speed
2400
# GPU
$ wmic path win32_videocontroller get name
Name
NVIDIA GeForce RTX 3060
# メモリタイプ
DDR4
# VRAMタイプ
GDDR6
# CPUソケット
LGA 1151
参考記事
まとめ
デバッグするなかでパソコンのこと、もっと詳しくなりました。
Discussion