
Windows10PCのハードウェアがWindows11の基準を満たしておらず、Windoows11へアップグレードできない状態だったのですが、このほどCPU、マザーボード等ごっそり新しいものに変え、Windows10→Windows11へアップグレードしました。
自作PCですが、組み立て後あっさり起動しました。
(いつもはうまく起動せず、BIOS調整などするのですが、今回は一回でうまくいきました)
その後Windows11へアップグレードしました。
ところが、アップグレード後ブルースクリーンが発生するようになりました。
色々調べて対処できましたので、備忘録として記録いたします。
今回の現象
朝PCに電源を入れると、約30分後にブルースクリーンになる現象が3日連続で発生しました。
ただ、1度ブルースクリーンが発生すると、その日は2度とブルースクリーンになりませんでした。
ここで疑問がわきました。
- なぜ朝1回だけブルースクリーンにになるのか?
ブルースクリーンが発生する要因は、「ハードウェア要因」「ドライバー関連要因」「ソフト要因」が考えられます。
ハードウェアならば、メモリの問題、ドライバー関連ならばグラフィックドライバーの整合性など、ソフト要因ならば、古すぎるソフトが入っているなどです。
ですが、これらの要因であれば1日に複数回ブルースクリーンが発生してもおかしくないのですが、なぜか朝1回だけ発生します。
これも謎です。
まずは原因を調査
たまたま1回だけ発生したブルースクリーンならば、ほおっておいてもよいレベルですが、毎朝発生するとなれば何かしらの対処が必要です。
ブルースクリーンが発生すると、画面にエラーメッセージとStop codeが表示されます。
Stop codeをネットで調べると、おおよその原因がわかります。
マイクロソフトのStop code一覧
今回は「SYSTEM_SERVICE_EXCEPTION」というStop codeでした。
マイクロソフトのサイトでStop codeを調べてみると、「とにかく具合が悪い」というような内容でした。
というのも、ハードウェア要因、ドライバー要因、システムファイル破損要因など、要因が多岐にわたり、特定の原因に絞るのがむつかしい原因でした。
そこで、メモリダンプ(MEMORY.DMP)を解析することにしました。
ブルースクリーンが発生すると、MEMORY.DMPファイルが生成されます。
MEMORY.DMPには、ブルースクリーンになってしまった要因が記録されています。
この記録を調べることで、より具体的な問題点を調べることができます。
■MEMORY.DMPファイルの保存場所
Windows11ならばたいてい以下の場所にあります。
C:\Windows\MEMORY.DMP
■MEMORY.DMPファイルの解析に使うソフト
Windbgというアプリを使用します。
マイクロソフトのアプリで、マイクロソフトストアからダウンロードインストールできます。
マイクロソフトストアで、「Windbg」と検索するとアプリが表示されます。
WindbgでMEMORY.DMPを調べる方法
WindbgでMEMORY.DMPを調べる方法は、わかってしまえば簡単です。
主に以下のようにやります。
- Windbgを管理者権限で起動する
- 該当のMEMORY.DMPファイルを開く
- !analyze -vを打ち込む
- 解析結果をChatGPTにペーストして原因を調べてもらう
Windbgを管理者権限で起動する
まずはWindbgを管理者権限で起動します。
管理者権限でないと、「MEMORY.DMPファイルを開く権限がないため開けません」となることがあります。
該当のMEMORY.DMPファイルを開く
Windbgの「ファイル」メニューからMEMORY.DMPファイルを開きます。
!analyze -vを打ち込む
kd> 欄に!analyze -v コマンドを打ち込み、ENTERキーを押します。
これをすると、MEMORY.DMPの内容を解析してくれます。
解析結果をChatGPTにコピーペーストして原因を調べてもらう
Windbgで解析した内容は、わかる人にはわかりますが、そうでない場合、何が書いてあるのかさっぱりわかりません。
そこで、ChatGPTに解析結果を張り付けすると、ChatGPTが解析内容をわかりやすく教えてくれます。
解析した結果以下の要因に絞られました
Windbgの解析結果をChatGPTに要約してもらったところ、以下の要因に絞られました。
- グラフィックドライバーの要因(古いドライバーが残っているなど)
- Windowsシステムファイルの破損
- メモリの不具合(ハード故障)
- ソフトウェアの競合・不具合
- ハードウェア障害
絞ったといっても多岐にわたります。
なので、除外してもよいものを洗い出しました。
これは除外してもよいと思えた要因
ソフトウェアの競合・不具合は除外
今回Windows10からWindows11へアップグレードしたので、それ以降新しいソフトウェアはインストールしていません。もしかしたら、Windows10はOKでWindows11はNGというソフトがあったかもしれませんが、Windows10とWindows11の互換性を考えると、「大は小を兼ねる」の理屈で除外してもよいと考えました。
ハードウェア障害は除外
今回ハードウェアはすべて一新し、新品にしたのでハードウェア障害は考えにくいと思いました。
不良品という線もありますが、もしそうだったとしても、他の要因の対処をしないとハードウェア障害とも言い切れないため、ひとまず除外です。
メモリの不具合を検査
ブルースクリーンはたいていメモリに関連した現象で発生します。
メモリ自体に不具合があった場合は、メモリ交換する必要があります。
その判断をするために、以下のチェックをしました。
- Windows標準機能のメモリ診断を実行
- Memtest86によるメモリ診断を実行
Windows11には、メモリ診断機能があります。
アプリ検索から「メモリ診断」を検索すると出てきます。
実行すると、再起動し、30分ほど検査しました。
結佐の結果エラーがないことをまず確認しました。
さらに、Memtest86によるメモリ診断をしました。
Memtest86はフリーソフト版/有償ソフト版があり、私はフリーソフト版で検査しました。
メモリが物理故障しているかどうかを診断するだけならばフリーソフトで十分です。
Memtest86はかなり入念にメモリを検査します。
そのためものすごい時間がかかります。
PCの性能や、メモリの容量によって異なりますが、今回は32GBのメモリで約6時間かかりました。
場合によっては、寝る前にMemtest86チェックを開始したほうがよいくらいでした。
検査の結果メモリにエラーはなく、メモリ交換の必要はありませんでした。
グラフィックドライバーをクリーン再インストール
次にやったのは、グラフィックドライバーの更新です。
もともとWindows10の時に、nvidiaのグラフィックボードを使っていました。
ですが、Windows11にアップデートして、別のnvidiaのグラフィックボードにしました。
古いドライバーが残っている可能性が高く、これが悪さをしている可能性があります。
chatGPTもその要因を指摘していました。
そこで、グラフィックドライバーを再インストールしました。
再インストールとっても、もともとインストールされているドライバーをすべて削除する「クリーンインストール」を行いました。
具体的には、再インストールの際に、オプションで「クリーンインストール」を選択(チェックボックスにチェック)するだけでした。
少なくともこれで、古いグラフィックドライバーは削除されたはずです。
(nvidiaからnvidaへのドライバー更新のためクリーンインストールで消えますが、ドライバーのメーカーが異なる場合は、古いドライバーは消えないので注意!)
さらにシステムファイルの修復を実行
chatGPTの示したブルースクリーンの要因として、システムファイルの破損というものがありました。
破損という状態は穏やかではありませんが、確かに破損していると、不安定になるのは必定です。
ですが、Windowsにはシステムファイルを修復してくれるありがたい機能があります。
これを実行しました。
実行すると、「破損していたシステムファイルを修復しました」
と表示されました。
ほんとに壊れていたのか?
と思いましたが、2回目の実行をするとエラーメッセージが出なかったため、うまく修復できたようです。
■システム修復のやりかた
注意:かなりデリケートな作業のため、自信がない場合はやらないほうが無難です。失敗するとパソコンが壊れるリスクがあります。
コマンドプロンプトを管理者権限で実行し、以下のコマンドを入力しENTERキーを押します。
DISM /Online /Cleanup-Image /RestoreHealth
これは、Windowsのシステムイメージを修復してくれます。
パソコンによっては時間がかかる場合があります。
ちなみに今回は20分ほどかかりました。
(62.3%で止まり、そのまま20分ほど待っていたら100%になりました)
ここで待てずに再起動などすると、パソコンが壊れる可能性があります。とにかく待つことを推奨します。
DISMコマンドの処理が終わったら、次のコマンドを入力しENTERキーを押します。
sfc /scannow
これは、破損したシステムファイルを修復してくれます。
windows内に保存されているシステムイメージファイルを元に修復するため、先にDISMコマンドでシステムイメージファイルを修復してから実行するほうが確実です。
それでもブルースクリーンが発生し続けました。
いろいろ試してもう大丈夫だろうと思いましたが、次の日以降もブルースクリーンが発生し続けました。
stop code:はKERNEL_MODE_HEAP_CORRUPTIONです。
不思議なのは、元電源を切断している状態からPCの電源を入れると、30分以内にブルースクリーンが発生していることです。
それ以降は元電源を一度切らない限り、ブルースクリーンは発生しませんでした。
1日1回、PC起動時にブルースクリーンが発生するなぞ現象が発生し続けました。
その都度memory.dmpをwindbgを使ってログをとり、chatgptに解析してもらいました。
各種ドライバーの再インストール(マザーボードのメーカーサイトからダウンロード)、ブルースクリーン原因の可能性のあるアプリの削除など何日も試しましたが、現象は改善しませんでした。
電源断状態からPCを立ち上げているので、BIOSのfast bootをオフにしたり、高速スタートアップもオフにしましたが、それでもブルースクリーンが発生しました。
windows updateを機に現象が改善
そんなある日、windows updateがかかりました。(KB5064081)
すると、ブルースクリーンが発生しなくなりました。
いままで元電源が切れている状態からPCの電源を入れると、30分以内にブルースクリーンが発生してたものが、半日たっても発生せず、その日は1度もブルースクリーンが発生しませんでした。
それ以降ブルースクリーンが発生せず
windows11のアップデートの次の日、朝からいつものように元電源が切れた状態からPCを起動しましたが、1時間たっても、2時間たっても、ブルースクリーンは発生しなくなりました。
Windows11にアップグレードしてから毎日ブルースクリーンが発生していたので、明らかに現象の改善が見られました。
chatgptに事実を伝え、見解を聞いてみると、ブルースクリーン時のログにあった原因と思われるドライバー付近の修正が入ったので、現象の改善につながったか、windows10時代の古いドライバー類が、windows11のアップデートにより新しく刷新されたためだろう。ということでした。
2週間ほどこのブルースクリーン現象に悩まされましたが、今回のケースではwindows11のアップデートで改善しました。chatgptに解析してもらいながら、いろいろ対処したことは、直接的な原因改善には至りませんでしたが、ブルースクリーン現象を調べるスキルが上がったように思います。
無論、すべてのブルースクリーン現象の改善に当てはまるわけではありませんが、参考程度になれば幸いです。