停止 7F、ESP レジスタの単一ビット エラーが原因で0x00000008 (二重障害) エラーが発生する

この記事では、特定のプロセッサ エラーが原因でコンピューターにエラー メッセージ0x00000008、STOP 0x0000007Fに対するソリューションを提供します。 このエラー メッセージは、コンピューターで実行されているプロセッサの ESP レジスタで単一ビット エラーが発生したときに表示される場合があります。

適用対象: Windows Server 2012 R2
元の KB 番号: 842465

現象

1 つ以上の Intel Xeon プロセッサを実行しているコンピューター、または他のプロセッサを実行しているコンピューターでは、次の例のような Stop エラー メッセージが表示されることがあります。

STOP 0x0000007F (0x00000008、0x00000000、0x00000000、0x00000000) UNEXPECTED_KERNEL_MODE_TRAP

この問題が発生すると、次の条件が満たされます。

  • Stop エラーの最初のパラメーターは "0x0000008" です。 (このエラーは二重障害例外です)。
  • ESP レジスタの上半分で 1 ビット エラーが発生したため、ESP レジスタの値は現在のスレッドのスタック範囲外です。

原因

この問題は、コンピューター内の 1 つ以上のプロセッサが次の場合に発生します。

  • コンピューターの基本的な入出力システム (BIOS) によって適用されないマイクロコード更新が必要です。

  • 破損または欠陥がある。

  • 温度、電力、またはその他の条件のために、指定された範囲外で動作しています。

解決方法

この問題を解決するには、次のいずれかのトラブルシューティング方法を使用します。

方法 1: プロセッサがマイクロコード更新プログラムの運用リビジョンを実行しているかどうかを判断する

マイクロコード更新では、プロセッサの内部実装ロジックのエラッタ (バグ) が修正されます。 マイクロコード更新プログラムをプロセッサ自体に永続的に格納することはできません。また、コンピューターが起動するたびにプロセッサに読み込む必要があります。 マイクロコードの更新プログラムは、コンピューターの BIOS または Update.sys ドライバーによって適用できます。

コンピューターにインストールされている Intel プロセッサに現在適用されているマイクロコード更新プログラムのリビジョンを特定するには、次の手順に従います。

  1. Intel プロセッサ識別ユーティリティをダウンロードします。

  2. 症状が発生しているコンピューターに Intel プロセッサ識別ユーティリティをインストールして実行します。

  3. プロセッサごとに次の CPU 情報を書き留めます。

    • CPU ファミリ
    • CPU モデル
    • CPU ステップ実行
    • CPU リビジョン

    CPU ファミリ、CPU モデル、CPU ステッピングの値は、特定の種類のプロセッサを識別します。 CPU リビジョン値は、適用されるマイクロコード更新プログラムのリビジョンを識別します。

  4. マイクロコード更新プログラムのリビジョンが、特定のプロセッサで使用できる最新のリビジョンであるかどうかを判断するには、コンピューターの製造元に問い合わせてください。 リビジョンが最新でない場合は、最新のマイクロコード更新リビジョンを適用する更新された BIOS をコンピューターの製造元に依頼してください。

この記事で説明する現象は、CPU ファミリ、CPU モデル、CPU ステップの値がそれぞれ 15、2、および 9 で、ServerWorks チップセットを使用するマザーボードにインストールされている Intel Xeon プロセッサで最も頻繁に観察されています。 (CPU ファミリ、CPU モデル、CPU ステッピングの 16 進値はそれぞれ F、2、および 9 です)。これらのプロセッサが正しく機能するには、0x18 以降のリビジョン値が必要です。 (0x18は、10 進値の 24 に相当します)。

リビジョン値 0 は、コンピューターにインストールされているプロセッサのマイクロコード更新プログラムがコンピューター BIOS に正しくないことを示します。 使用しているプロセッサをサポートするマイクロコード更新リビジョンで BIOS を更新する必要があります。

Intel では、既知の問題を回避するために、最新のマイクロコード更新プログラムのリビジョンを適用することをお勧めします。

方法 2: プロセッサが破損しているか欠陥があるかを判断する

影響を受けるコンピューターにインストールされているプロセッサに運用マイクロコード更新リビジョンが適用されていて、この記事で説明されている現象が、同じプロセッサを実行している同じモデルのすべてのコンピューターで発生しない場合、プロセッサに欠陥がある可能性があります。

プロセッサが破損しているか欠陥があるかを判断するには、症状が発生していないコンピューターにプロセッサを移動します。

警告

プロセッサを変更する場合は、コンピューターの製造元によって提供される指示に従うか、適切に認定されたハードウェア技術者に問い合わせてプロセッサを変更します。

症状は、交換プロセッサを持つ元のコンピュータ上で発生し続けるが、元のプロセッサを持つ他のコンピュータでは発生しない場合、問題はおそらく損傷または欠陥プロセッサによって引き起こされません。

症状は、交換プロセッサを持つ元のコンピュータ上で発生し続けず、元のプロセッサを持つ他のコンピュータで発生する場合は、問題はおそらく損傷または欠陥プロセッサによって引き起こされます。 この場合は、元のプロセッサを交換するために、コンピューターの製造元に問い合わせてください。

この記事で説明されている現象が発生しているコンピューターに、1 つのプロセッサが複数ある場合は、すべてのプロセッサを他のコンピューターに移動します。 結果が、これらのプロセッサの 1 つ以上に欠陥がある可能性があることを示している場合は、プロセッサを一度に 1 つずつ移動して、欠陥のあるプロセッサまたはプロセッサを決定します。

方法 3: プロセッサが特定の環境条件の範囲外で動作しているかどうかを判断する

室温が過度に高い、換気が悪い、ほこりが蓄積すると、プロセッサなどの電子部品が不規則に動作する可能性があります。 ファンの誤動作や風路の遮断は、換気の問題を引き起こす可能性があります。 コンピュータの内部または空気通路がほこりっぽい場合、またはコンピュータが特定の場所にのみインストールされたときに症状を示す場合は、システムの過熱が要因である可能性があります。 コンポーネントがクリーンされていること、ファンが正しく機能していること、および空気通路が妨げられていないことを確認します。 さらに、コンピューターが配置されている部屋が適切に換気されていることを確認します。 部屋の温度は、コンピューターの製造元によって指定された動作範囲内である必要があります。

電圧が指定された電圧以上または変動すると、プロセッサやその他の電子部品が不規則に動作する可能性があります。 電源が正しくない、または一貫性のないメイン、コンピューターの電源が過負荷または不適切に機能しているか、マザーボード回路が正しく機能していないと、誤った電圧または一貫性のない電圧がプロセッサに供給される可能性があります。 これらの問題のいずれかが症状の原因であるかどうかを確認するには、適切な技術者に問い合わせてください。

詳細

STOP 0x0000007F エラーの詳細については、「 Windows ベースのコンピューターでエラーを停止0x0000007F」を参照してください。

ESP レジスタは、スタック ポインター レジスタとも呼ばれます。 スタックは、スレッドの実行の現在の状態に関する情報を格納するために使用されるメモリ内のデータ構造です。 スレッドのスタックは、進行中の関数呼び出し、それらの関数に渡されるパラメーター、およびそれらの関数によって使用される変数を追跡するために使用されます。 ESP レジスタの値は、スタックの現在の最上位を指す必要があります。 ESP の値が正しくない場合は、正しくない情報または無効なアドレスを指している可能性があります。 ESP の値が無効なアドレスを指している場合は、二重エラー例外が発生する可能性があります。

STOP エラーが ESP レジスタの単一ビット エラーの結果であるかどうかを判断するには、次の手順に従います。

  1. Windows 用 Microsoft デバッグ ツールをインストールします。

  2. WinDbg ツールを実行し、[ ファイル] を選択し、[ クラッシュ ダンプを開く ] を選択して、エラーの停止情報を含むメモリ ダンプ ファイルを見つけて、[ OK] を選択します

  3. コマンドを !analyze -v 実行して、ダンプ ファイルの自動分析を取得します。

  4. コマンドの出力を調べて、 !analyze -v 出力に二重障害状態が表示されているかどうかを確認します。 二重障害状態が存在する場合は、コマンドを .tss 28 実行して、二重障害時のシステム状態を表示します。 一般に、この値は EBP レジスタの値に比較的近い値です。

  5. コマンドを !thread 実行して、現在のスレッドのスタック範囲を表示します。 通常、ダブルフォールト例外は、ESP レジスタの値が、現在のスレッドのスタック用に予約されているアドレスの範囲外にある場合に発生します。

    この特定のスレッドが実行されている場合、ESP レジスタ値は常に Stack Base 値 (f5d2a000) と Limit 値 (f5d27000) の間にある必要があります。 通常、ESP レジスタの値は現在の値 (f5d29c9c) に比較的近い値です。 (現在の値は、Stack Base 値と Limit 値の間でもあります)。

    また、 コマンドを実行!pcrしてスタック範囲の値をチェックすることもできます。

    値は NtTib.StackLimit 、スタック範囲の下限を表します。 値は NtTib.StackBase 、ESP の最近の値を表します。 この値は NtTib.StackBase 、ESP レジスタの現在の値と比較して、現在の ESP レジスタ値に単一ビット エラーがあるかどうかを識別するのに役立ちます。

  6. コマンドを .formats esp ^ ebp 実行して、ESP レジスタと EBP レジスタの値の違いを表示します。 EBP レジスタのスタック ポインター値は、単一ビット エラーを除き、ESP レジスタのスタック ポインター値に近くなります。 このコマンドは、特にエラーがバイナリ形式で表示される場合に、エラーを含む単一の高次ビットを頻繁に表示します。

    下位の下位桁を無視した場合、ESP レジスタと EBP レジスタの 1 ビットの差は、バイナリ形式で 000000000000 0000000000 です。 違いは、16 進形式の 00080000 です。

    この 1 ビット エラーにより、ESP レジスタに正しくない値が含まれます。 値が正しくないと、二重障害例外、バグ チェック、システム クラッシュが発生します。

特定のハードウェアの詳細を取得するには、次の手順に従います。

  1. コマンドを !cpuinfo 使用して CPU バージョン情報を取得します。

    クラッシュ ダンプ ファイルを分析するときに Update Signature 値が常に正確に報告されるとは限りませんが、通常、[ 署名の更新 ] フィールドは、CPU に適用されるマイクロコード更新リビジョンを示します。

  2. コマンドを !pcitree 使用して、既存の周辺機器接続インターフェイス (PCI) デバイスのベンダー ID とデバイス識別子 (VenDev ID) を検索します。

    リストされている PCI デバイスごとに、各行の最初の 8 桁の 16 進値 (DWORD) は VenDev ID です。 ベンダー ID は、実際には、この値の 2 番目の 4 桁です。 たとえば、一覧に表示される最初のデバイスの VenDev ID は0x00141166です。 デバイス ID が0x0014され、ベンダー ID が0x1166。 ServerWorks のベンダー ID が0x1166。 そのため、この出力は、ServerWorks チップセットを使用するマザーボードにインストールされているプロセッサからの出力です。

この資料に記載されているサードパーティ製品は、マイクロソフトと関連のない他社の製品です。 明示的か黙示的かにかかわらず、これらの製品のパフォーマンスや信頼性についてマイクロソフトはいかなる責任も負わないものとします。