次の方法で共有


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

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

元の KB 番号: 842465

現象

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

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

この問題が発生した場合、次の条件が満たされます。

  • Stop エラーの最初のパラメーターは "0x0000008" です。 (このエラーは二重障害の例外です)。
  • ESP レジスタの上半分でシングルビット エラーが発生したため、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: プロセッサが特定の環境条件の範囲外で動作しているかどうかを判断する

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

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

詳細

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

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

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

  2. WinDbg ツールを実行し、 File を選択し、 Open Crash Dump を選択して、Stop エラー情報を含むメモリ ダンプ ファイルを見つけて、 OK を選択します。

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

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

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

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

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

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

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

    下位の下位の桁を無視すると、ESP レジスタと EBP レジスタの 1 ビットの差は、バイナリ形式で 0000000000000000000000000000000000000000000000000000000000000000000 0000000000 0000000000 000000000 000000000 00000000 00000000 000000000 000000000 000000000 000000000 違いは、16 進数形式の 00080000 です。

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

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

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

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

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

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

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