バグ チェック 0x19: BAD_POOL_HEADER
BAD_POOL_HEADER バグ チェックには、0x00000019の値があります。 これは、プール ヘッダーが破損していることを示します。
重要
この記事は、プログラマー向けです。 コンピューターを使用中に、ブルー スクリーン エラーが表示された場合は、「ブルー スクリーン エラーのトラブルシューティング」を参照してください。
BAD_POOL_HEADER パラメーター
パラメーター 1 は違反の種類を示します。 他のパラメーターの意味は、 パラメーター 1の値によって異なります。
パラメーター 1 | パラメーター 2 | パラメーター 3 | パラメーター 4 | エラーの原因 |
---|---|---|---|---|
0x2 |
チェックされているプール エントリ |
プールブロックのサイズ |
0 |
特殊なプール パターンチェックに失敗しました。 (所有者がプール ブロックを破損している可能性があります)。 |
0x3 |
チェックされているプール エントリ |
読み取り戻し flink フリーリスト値 |
読み取り戻し blink フリーリスト値 |
プールのフリーリストが壊れています。 (正常なリストでは、パラメーター 2、3、および 4 の値は同じである必要があります)。 |
0x5 |
プール エントリの 1 つ |
予約済み |
その他のプール エントリ |
隣接するプール エントリのペアには、相互に矛盾するヘッダーがあります。 そのうちの少なくとも 1 つが破損しています。 |
0x6 |
正しく計算されないエントリが 1 つ |
予約済み |
計算ミスの原因となった無効なエントリ |
プール ブロック ヘッダーの以前のサイズが大きすぎます。 |
0x7 |
0 |
予約済み |
不正なプール エントリ |
プール ブロックヘッダーのサイズが壊れています。 |
0x8 |
0 |
予約済み |
不正なプール エントリ |
プール ブロックヘッダーのサイズがゼロです。 |
0x9 |
正しく計算されないエントリが 1 つ |
予約済み |
計算ミスの原因となった無効なエントリ |
プール ブロックヘッダーのサイズが破損しています (大きすぎます)。 |
0xA |
検出されるべきプール エントリ |
予約済み |
プール エントリが含まれている必要があるページの仮想アドレス |
プール ブロックヘッダーのサイズが壊れています。 |
0xD、0xE、0xF、0x23、0x24、0x25 |
予約済み |
予約済み |
予約済み |
解放されたブロックのプール ヘッダーは、解放後に変更されました。 これは通常、解放されたブロックの前の所有者の責任ではなく、解放されたブロックの前のブロックがオーバーランしたことが原因であることが多いです(ただし、常にそうとは限らない)。 |
0x20 |
検出されるべきプール エントリ |
次のプール エントリ |
予約済み |
プール ブロックヘッダーのサイズが壊れています。 |
0x21 |
解放されているプール ポインター |
プール ブロックに割り当てられたバイト数 |
プール ブロックの後に見つかった破損した値 |
解放されるプール ブロックの後のデータが破損しています。 通常これは、コンシューマー(コールスタック)がブロックをオーバーランしたことを意味します。 |
0X22 |
解放されるアドレス |
予約済み |
予約済み |
解放されているアドレスには追跡エントリがありません。 これは通常、コールスタックが、既に解放されているか、最初に割り当てられなかったポインターを解放しようとしているためです。 |
原因
プールは、現在の要求時に既に破損しています。
これは、呼び出し元が原因である場合と、原因ではない可能性があります。
解決方法
問題の考えられる原因を把握するには、カーネル デバッガーを使用して内部プール リンクをウォークする必要があります。
その後、疑わしいプール タグに特別なプールを使用するか、疑わしいドライバーでドライバー検証ツールの "特別なプール" オプションを使用できます。 !analyze 拡張機能は、疑わしいドライバーを特定するのに役立つ場合がありますが、プール破損者の場合は多くの場合は役に立ちます。
停止コード パラメーターを収集するには、バグ チェックのブルー スクリーン データの分析に関する記述にある手順を実行します。 停止コード パラメーターを使用して、追跡対象の特定の種類のコード動作を決定します。
ドライバーの検証ツール
ドライバーの検証ツールは、リアルタイムで実行してドライバーの動作を調べるためのツールです。 ドライバー コードの回でエラーが発生した場合は、ドライバー コードの該当部分をさらに精査できるように、事前に例外を作成します。 ドライバーの検証ツール マネージャーは、Windows に組み込まれており、すべての Windows PC で使用できます。 ドライバーの検証ツール マネージャーを起動するには、コマンド プロンプトで「Verifier」と入力します。 どのドライバーを検証するかを構成できます。 ドライバーを検証するコードが実行されるとオーバーヘッドが増えるので、可能な限り少ない数のドライバーで試してみてください。 詳細については、「ドライバーの検証ツール」を参照してください。
Windows メモリ診断:
このバグ チェックが一貫性がない場合は、障害のある物理メモリに関連している可能性があります。
Windows メモリ診断ツールを実行して、メモリをテストします。 コントロール パネルの検索ボックスに「Memory」と入力し、[コンピューターのメモリの問題を診断する] を選択します。テストの実行後、イベント ビューアーを使用して、システム ログの下に結果を表示します。 MemoryDiagnostics-Results エントリを探して、結果を表示します。