Windows BSOD「SYSTEM_THREAD_EXCEPTION_NOT_HANDLED」発生!原因の.sysファイルをWinDbgで特定し解決する方法

Windows

はじめに:突然のブルースクリーンに怯えない!

Windowsを利用していると、突然画面が青くなり、見慣れないエラーメッセージと共にPCが再起動してしまう「ブルースクリーン・オブ・デス」(BSOD)に遭遇することがあります。その中でも、「SYSTEM_THREAD_EXCEPTION_NOT_HANDLED」は比較的よく見られるエラーの一つです。

このエラーは、システムスレッドがハンドルされていない例外を生成したことを意味し、多くの場合、デバイスドライバーの不具合が原因で発生します。しかし、「どのドライバーが原因なのか?」を特定するのは一筋縄ではいきません。本記事では、この厄介なエラーの根本原因となっている特定の.sysファイルを特定し、問題を解決するための具体的な手順を、初級者から中級者の方にも分かりやすく解説します。

「SYSTEM_THREAD_EXCEPTION_NOT_HANDLED」とは?

このエラーは、Windowsカーネルモードで動作するスレッドが、適切なエラーハンドリングなしに予期せぬ例外を発生させた場合に表示されます。OSの安定性を保つための重要なプロセスが中断されるため、システム全体がクラッシュしてブルースクリーンに至ります。主な原因は以下の通りです。

  • デバイスドライバーの不具合または破損: 最も一般的な原因です。特にグラフィック、ネットワーク、オーディオなどのドライバーが疑われます。
  • ハードウェアの故障: メモリやストレージなどのハードウェアに問題がある場合。
  • Windowsシステムの破損: システムファイル自体が破損している場合。
  • マルウェア感染: 稀にマルウェアがシステムファイルを破損させることもあります。

今回は、この中でも最も可能性の高い「デバイスドライバーの不具合」に焦点を当て、その原因となる.sysファイルの特定方法を解説します。

BSOD発生時の初動対応:イベントビューアーを確認する

ブルースクリーンが発生した後、まず最初に確認すべきはWindowsのイベントログです。ここにエラーの詳細が記録されていることがあります。

イベントビューアーの起動

  1. Windowsキー + Rを押して「ファイル名を指定して実行」を開きます。
  2. eventvwr.mscと入力し、Enterキーを押します。

ログの確認

  1. イベントビューアーの左ペインで「Windowsログ」->「システム」を選択します。
  2. 中央のリストで、ブルースクリーンが発生した時刻に近い「エラー」または「重大」レベルのログを探します。
  3. 特に「BugCheck」というソースを持つイベントに注目してください。ここにエラーコードや、場合によっては問題の.sysファイル名が直接記載されていることがあります。

イベントビューアーで明確な情報が得られなくても心配ありません。次のステップで、より詳細な情報を得るための強力なツールを使用します。

根本原因を特定する:ミニダンプファイルをWinDbgで解析する

Windowsはブルースクリーン発生時、システムのメモリの一部を「ミニダンプファイル」として保存します。このファイルを解析することで、エラーの発生源を特定できます。

ミニダンプファイルとは?

ミニダンプファイル(.dmpファイル)は、ブルースクリーン発生時のシステムメモリのスナップショットです。これには、エラーコード、ロードされていたドライバーのリスト、スタックトレースなど、問題の原因を特定するために必要な情報が含まれています。

通常、以下のパスに保存されています。

C:\Windows\Minidump\

ここに.dmpファイルが複数存在する場合、最新の日付のものが最近のブルースクリーンに対応しています。

WinDbgのインストールと設定

ミニダンプファイルを解析するには、「Debugging Tools for Windows」に含まれるWinDbgというツールを使用します。これはMicrosoftが提供する公式のデバッグツールです。

Windows SDKのダウンロード

  1. Microsoftの公式サイトから「Windows SDK」をダウンロードします。
    https://developer.microsoft.com/ja-jp/windows/downloads/windows-sdk/
  2. インストーラーを実行し、「Debugging Tools for Windows」のみを選択してインストールします。他のコンポーネントは不要です。

WinDbgの起動とシンボルパスの設定

  1. スタートメニューから「WinDbg (X64)」または「WinDbg Preview」を起動します。
  2. WinDbgを初めて使用する場合、シンボルパスの設定が必要です。シンボルとは、プログラムの実行可能ファイルに含まれる変数名や関数名などの情報で、デバッグ時に人間が理解できる形式で情報を表示するために必要です。
    「File」メニューから「Symbol File Path…」を選択し、以下のパスを設定します。

    SRV*c:\symbols*https://msdl.microsoft.com/download/symbols

    「OK」をクリックして設定を保存します。

ミニダンプファイルの解析手順

ミニダンプの読み込み

  1. WinDbgで「File」メニューから「Open Crash Dump…」を選択します。
  2. C:\Windows\Minidump\フォルダに移動し、最新の.dmpファイルを選択して「開く」をクリックします。
  3. WinDbgがダンプファイルをロードし、自動的に基本的な解析を開始します。

!analyze -v コマンドの実行

ダンプファイルがロードされたら、コマンドプロンプト(kd>と表示されている部分)に以下のコマンドを入力し、Enterキーを押します。

!analyze -v

このコマンドは、最も詳細な解析を実行し、ブルースクリーンの原因に関する広範な情報を提供します。

解析結果の読み解き方:犯人探し

!analyze -vコマンドの出力は非常に長いですが、以下の項目に注目してください。

  • BUGCHECK_CODE: ブルースクリーンのエラーコードです。今回は0x1000007e (SYSTEM_THREAD_EXCEPTION_NOT_HANDLED)が表示されます。
  • MODULE_NAME: 最も重要な項目です。問題を引き起こした可能性のあるモジュール(多くの場合.sysファイル)の名前が表示されます。
  • IMAGE_NAME: MODULE_NAMEと同様に、問題のドライバーファイル名を示します。
  • FAILURE_BUCKET_ID: Microsoftが内部的に使用するエラーの分類IDです。このIDとMODULE_NAMEを組み合わせることで、オンラインで類似のケースを検索するのに役立ちます。
  • STACK_TEXT: エラー発生時の関数の呼び出し履歴です。ここに、問題のあるドライバーの関数名が含まれていることがあります。

例:解析結果の抜粋

... (中略) ...
MODULE_NAME: nvlddmkm

IMAGE_NAME:  nvlddmkm.sys

DEBUG_FLR_IMAGE_TIMESTAMP:  632617f1

STACK_COMMAND:  .thread ; .cxr ; kb

FAILURE_BUCKET_ID:  0x7E_nvlddmkm+16a03e

OS_VERSION:  10.0.19044

BUILDLAB_SET:  wsl_update_debug_client

OSPLATFORM_TYPE:  x64

OSNAME:  Windows 10

FAILURE_ID_HASH_STRING:  km:0x7e_nvlddmkm+16a03e

... (後略) ...

この例では、MODULE_NAME: nvlddmkm および IMAGE_NAME: nvlddmkm.sys と表示されています。これはNVIDIAグラフィックドライバーに関連するファイルです。このように、特定の.sysファイル名が特定できれば、そのファイルがどのデバイスやソフトウェアに属しているかを調べることができます。

よくある.sysファイルと対応するデバイス/ソフトウェアの例

  • nvlddmkm.sys: NVIDIAグラフィックドライバー
  • atikmpag.sys / atikmdag.sys: AMDグラフィックドライバー
  • igdkmd64.sys: Intelグラフィックドライバー
  • rtwlanu.sys / netr28ux.sys: Realtek製Wi-Fiアダプタードライバー
  • e1g6032e.sys: Intel製イーサネットアダプタードライバー
  • bcmwl63a.sys: Broadcom製Wi-Fiアダプタードライバー
  • aswVmm.sys: Avastアンチウイルスソフトウェア
  • mbam.sys: Malwarebytesアンチマルウェアソフトウェア

もし見慣れない.sysファイル名が出た場合は、Google検索などでファイル名を調べて、どのソフトウェアやデバイスに関連しているかを確認してください。

特定した問題のあるドライバーを対処する

問題の.sysファイルが特定できたら、それに対応するドライバーまたはソフトウェアに対して以下の対処を試みます。

ドライバーの更新

最も推奨される解決策です。最新のドライバーは、以前のバージョンのバグ修正や互換性改善を含んでいることが多いです。

  1. デバイスマネージャーを開きます(Windowsキー + X -> 「デバイスマネージャー」)。
  2. 問題のデバイス(例:ディスプレイアダプター、ネットワークアダプターなど)を見つけ、右クリックして「ドライバーの更新」を選択します。
  3. 「ドライバーを自動的に検索」を試すか、メーカーのウェブサイトから最新ドライバーをダウンロードして「コンピューターを参照してドライバーを検索」で手動で指定します。

ドライバーのロールバック

最近ドライバーを更新した後に問題が発生した場合、以前の安定したバージョンに戻すことで解決することがあります。

  1. デバイスマネージャーで問題のデバイスを右クリックし、「プロパティ」を選択します。
  2. 「ドライバー」タブに移動し、「ドライバーを元に戻す」ボタンがあればクリックします。

ドライバーのアンインストール(セーフモードでの実行推奨)

ドライバーの更新やロールバックがうまくいかない場合、一度ドライバーを完全に削除し、PCを再起動してWindowsに標準ドライバーをインストールさせるか、最新のものをクリーンインストールします。

  1. セーフモードでWindowsを起動します。BSODが発生して通常起動できない場合でもセーフモードなら起動できる可能性があります。
    (PC起動中にF8キーを連打するか、Windows回復環境から「トラブルシューティング」->「詳細オプション」->「スタートアップ設定」->「セーフモードを有効にする」を選択します。)
  2. セーフモードでデバイスマネージャーを開き、問題のデバイスを右クリックして「デバイスのアンインストール」を選択します。
  3. 「このデバイスのドライバーソフトウェアを削除します」にチェックを入れてアンインストールします。
  4. PCを再起動します。Windowsが自動的に汎用ドライバーをインストールするか、デバイスメーカーのウェブサイトから最新のドライバーをダウンロードして手動でインストールします。

まとめ:安定したWindows環境のために

「SYSTEM_THREAD_EXCEPTION_NOT_HANDLED」は厄介なブルースクリーンエラーですが、WinDbgを使ってミニダンプファイルを解析することで、その根本原因である.sysファイルを特定し、効果的に対処することが可能です。

この手順をマスターすれば、突然のブルースクリーンに遭遇しても落ち着いて対応できるようになります。日頃からデバイスドライバーを最新の状態に保ち、不審なソフトウェアはインストールしないように心がけることが、安定したPC環境を維持する上で最も重要です。もしもの時は、この記事を参考に、ぜひご自身でトラブルシューティングに挑戦してみてください。

コメント

タイトルとURLをコピーしました