[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の設定方法
- 問題が発生する端末にてverifier.exeを起動します。

- 「Setting」タブにて以下のオプションを有効にします。
・Special pool
・Pool tracking

- 同じく「Setting」タブにて、問題があることが疑われるドライバを個別にVerifyするように設定変更します。

- 「Apply」を押したあと、「Exit」を押します。再起動に関する注意がでますので、「OK」を押します。

- システムを再起動します。
- 再起動後、再度verifier.exeを起動します。
- 問題を再現させます。
- 「Global Counters」タブにて状態を確認します。「Succeded」と「Succeeded ? special pool」の値が同じであり、「Failed」の値が0になっているのが正しい状態です。この状態でない場合には、Verify中のドライバに問題が発生したことになります。
