バグ チェック 0x19: BAD_POOL_HEADER

BAD_POOL_HEADER バグ チェックには、0x00000019の値があります。 これは、プール ヘッダーが破損していることを示します。

重要

この記事は、プログラマー向けです。 コンピューターを使用中に、ブルー スクリーン エラーが表示された場合は、「ブルー スクリーン エラーのトラブルシューティング」を参照してください。

BAD_POOL_HEADER パラメーター

パラメーター 1 は違反の種類を示します。 他のパラメーターの意味は、パラメーター 1 の値によって異なります。

パラメーター 1 パラメータ 2 パラメーター 3 パラメーター 4 エラーの原因

0等2

チェックされているプール エントリ

プールブロックのサイズ

0

特殊なプール パターンチェックに失敗しました。

(所有者がプール ブロックを破損している可能性があります)。

0x3

チェックされているプール エントリ

読み取り戻し flink フリーリスト値

読み取り戻し blink フリーリスト値

プールのフリーリストが壊れています。

(正常なリストでは、パラメーター 2、3、および 4 の値は同じである必要があります)。

0x5

プール エントリの 1 つ

予約されています。

その他のプール エントリ

隣接するプール エントリのペアには、相互に矛盾するヘッダーがあります。 そのうちの少なくとも 1 つが破損しています。

0x6

正しく計算されないエントリが 1 つ

予約されています。

計算ミスの原因となった無効なエントリ

プール ブロック ヘッダーの以前のサイズが大きすぎます。

0x7

0

予約済み

不正なプール エントリ

プール ブロックヘッダーのサイズが壊れています。

0酒8

0

予約済み

不正なプール エントリ

プール ブロックヘッダーのサイズがゼロです。

0x9

正しく計算されないエントリが 1 つ

予約されています。

計算ミスの原因となった無効なエントリ

プール ブロックヘッダーのサイズが破損しています (大きすぎます)。

0xA

検出されるべきプール エントリ

予約されています。

プール エントリが含まれている必要があるページの仮想アドレス

プール ブロックヘッダーのサイズが壊れています。

0xD、0xE、0xF、0x23、0x24、0x25

予約済み

予約済み

予約済み

解放されたブロックのプール ヘッダーは、解放後に変更されました。 これは通常、解放されたブロックの前の所有者の責任ではなく、解放されたブロックの前のブロックがオーバーランしたことが原因であることが多いです(ただし、常にそうとは限らない)。

0x20

検出されるべきプール エントリ

次のプール エントリ

予約されています。

プール ブロックヘッダーのサイズが壊れています。

0x21

解放されているプール ポインター

プール ブロックに割り当てられたバイト数

プール ブロックの後に見つかった破損した値

解放されるプール ブロックの後のデータが破損しています。 通常これは、コンシューマー(コールスタック)がブロックをオーバーランしたことを意味します。

0X22

解放されるアドレス

予約済み

予約済み

解放されているアドレスには追跡エントリがありません。 これは通常、コールスタックが、既に解放されているか、最初に割り当てられなかったポインターを解放しようとしているためです。

原因

プールは、現在の要求時に既に破損しています。

これは、呼び出し元が原因である場合と、原因ではない可能性があります。

解決方法

問題の考えられる原因を把握するには、カーネル デバッガーを使用して内部プール リンクをウォークする必要があります。

その後、疑わしいプール タグに特別なプールを使用するか、疑わしいドライバーでドライバー検証ツールの "特別なプール" オプションを使用できます。 !analyze 拡張機能は、疑わしいドライバーを特定するのに役立つ場合がありますが、プール破損者の場合は多くの場合は役に立ちます。

ブルー スクリーン データで説明されている手順を使用して、停止コード パラメーターを収集します。 停止コード パラメーターを使用して、追跡対象の特定の種類のコード動作を決定します。

ドライバーの検証ツール

ドライバーの検証ツールは、リアルタイムで実行してドライバーの動作を調べるためのツールです。 ドライバー コードの回でエラーが発生した場合は、ドライバー コードの該当部分をさらに精査できるように、事前に例外を作成します。 ドライバーの検証ツール マネージャーは、Windows に組み込まれており、すべての Windows PC で使用できます。 ドライバーの検証ツール マネージャーを起動するには、コマンド プロンプトで「Verifier」と入力します。 どのドライバーを検証するかを構成できます。 ドライバーを検証するコードが実行されるとオーバーヘッドが増えるので、可能な限り少ない数のドライバーで試してみてください。 詳細については、「ドライバーの検証ツール」を参照してください。

Windows メモリ診断:

このバグ チェックが一貫性がない場合は、障害のある物理メモリに関連している可能性があります。

Windows メモリ診断ツールを実行して、メモリをテストします。 コントロール パネルの検索ボックスに「Memory」と入力し、[コンピューターのメモリの問題を診断する] を選択します。テストの実行後、イベント ビューアーを使用して、システム ログの下に結果を表示します。 MemoryDiagnostics-Results エントリを探して、結果を表示します。