1件のコメント

[verifier][windbg][debug] Verifier.exeでのDRIVER_CORRUPTED_EXPOOL(c5)を引き起こすドライバの調査方法(w2k)

※以下に書いてあるのは、私の現段階での理解にもとづく手法です。あまり自信がありません。このあたり詳しい人がいたらコメント等頂けるとうれしいです。

DRIVER_CORRUPTED_EXPOOL(c5)のエラーに関しては、プール領域が不正なドライバによって意図せず書き換えられていることが原因の事がほとんどです。この場合ブルースクリーン発生時のダンプファイルを解析しても、問題が発生している場所にアクセスしたことはわかりますが、何が問題を引き起こしたのかという原因の特定には結び付きません。

0: kd> !analyze -v

*******************************************************************************

* *

* Bugcheck Analysis *

* *

*******************************************************************************

DRIVER_CORRUPTED_EXPOOL (c5)

An attempt was made to access a pageable (or completely invalid) address at an

interrupt request level (IRQL) that is too high. This is

caused by drivers that have corrupted the system pool. Run the driver

verifier against any new (or suspect) drivers, and if that doesn’t turn up

the culprit, then use gflags to enable special pool.

Arguments:

Arg1: 00000000, memory referenced

Arg2: 00000002, IRQL

Arg3: 00000001, value 0 = read operation, 1 = write operation

Arg4: 8046c6e4, address which referenced memory

 

この場合Verifier.exeにてドライバの動作を検証し、問題のドライバを特定することが可能な場合があります。

Windows 2000でのVerifier.exeの設定方法

  1. 問題が発生する端末にてverifier.exeを起動します。
    clip_image002
  2. 「Setting」タブにて以下のオプションを有効にします。
    ・Special pool
    ・Pool tracking
    clip_image005
  3. 同じく「Setting」タブにて、問題があることが疑われるドライバを個別にVerifyするように設定変更します。
    clip_image009
  4. 「Apply」を押したあと、「Exit」を押します。再起動に関する注意がでますので、「OK」を押します。
    clip_image011
  5. システムを再起動します。
  6. 再起動後、再度verifier.exeを起動します。
  7. 問題を再現させます。
  8. 「Global Counters」タブにて状態を確認します。「Succeded」と「Succeeded ? special pool」の値が同じであり、「Failed」の値が0になっているのが正しい状態です。この状態でない場合には、Verify中のドライバに問題が発生したことになります。
    clip_image013

参考情報

1件のコメント

コメントを残す

メールアドレスが公開されることはありません。