バグ チェック 0x133: DPC_WATCHDOG_VIOLATION
DPC_WATCHDOG_VIOLATION バグ チェックには、0x00000133 の値があります。 このバグチェックは、DPC ウォッチドッグが実行されたことを示しています。これは、実行時間の長い 1 回の遅延プロシージャ 呼び出し (DPC) が検出されたか、システムが DISPATCH_LEVEL 以上の割り込み要求レベル (IRQL) で長時間費やしたためです。
パラメーター 1 の値は、1 つの DPC がタイムアウトを超えたかどうか、またはシステムが IRQL DISPATCH_LEVEL 以上で長期間を累積して費やしたかどうかを示します。 DPCは100マイクロ秒以上、ISRは25マイクロ秒以上実行しないでください。しかし、システム上の実際のタイムアウト値はもっと長く設定されています。
DPC の詳細については、 Introduction to DPC Objects と Windows Internals 7th Edition Part 1 (Pavel Yosifovich、Mark E. Russinovich、David A. Solomon、Alex Ionescu) を参照してください。
重要
この記事は、プログラマー向けです。 コンピューターを使用中に、ブルー スクリーン エラーが表示された場合は、 「ブルー スクリーン エラーのトラブルシューティング」を参照してください。
DPC_WATCHDOG_VIOLATION パラメーター
パラメーター 1 は違反の種類を示します。 他のパラメーターの意味は、 パラメーター 1の値によって異なります。
パラメーター 1 | パラメーター 2 | パラメーター 3 | パラメーター 4 | エラーの原因 |
---|---|---|---|---|
0 | DPC 時間カウント (ティック単位) | DPC 時間割り当て (ティック単位)。 | nt!DPC_WATCHDOG_GLOBAL_TRIAGE_BLOCK。この単一の DPC タイムアウトに関する追加情報が含まれています | 1 つの DPC または ISR が時間割り当てを超えました。 通常、問題のあるコンポーネントはスタック トレースで識別できます。 |
1 | ウォッチドッグ期間 | nt!DPC_WATCHDOG_GLOBAL_TRIAGE_BLOCK。この単一の DPC タイムアウトに関する追加情報が含まれています | 予約済み | システムは、累積してIRQL DISPATCH_LEVEL 以上で長期間を費やしました。 通常、問題のあるコンポーネントはスタック トレースで識別できます。 |
原因
原因を特定するには、Windows デバッガー、プログラミング エクスペリエンス、および障害が発生しているモジュールのソース コードへのアクセスが必要です。
詳細については、以下のトピックを参照してください。
Windows デバッガー (WinDbg) を使用したクラッシュ ダンプ分析
WinDbg によるカーネル モード ダンプ ファイルの分析
!analyze 拡張コマンド と !analyzeの使用
Windows メモリ使用率の詳細については、 「Windows Internals 7th Edition Part 1 by Pavel Yosifovich, Mark E. Russinovich, David A. Solomon and Alex Ionescu を参照してください。
例 1
!analyze デバッグ拡張コマンドは、バグ チェックに関する情報を表示し、根本原因の特定に役立ちます。
パラメーター 1 = 0
この例では、ティックカウントが 501 で、DPC 時間割り当て 500 を超えています。 イメージ名は、バグ チェックの際にこのコードが実行されたことを示します。
0: kd> !analyze -v
*******************************************************************************
* *
* Bugcheck Analysis *
* *
*******************************************************************************
DPC_WATCHDOG_VIOLATION (133)
The DPC watchdog detected a prolonged run time at an IRQL of DISPATCH_LEVEL
or above.
Arguments:
Arg1: 0000000000000000, A single DPC or ISR exceeded its time allotment. The offending
component can usually be identified with a stack trace.
Arg2: 0000000000000501, The DPC time count (in ticks).
Arg3: 0000000000000500, The DPC time allotment (in ticks).
Arg4: 0000000000000000
...
IMAGE_NAME: BthA2DP.sys
...
次のデバッガー コマンドを使用して、パラメーターが 0 のエラーの詳細情報を収集します。
k (スタック バックトレースの表示) : 停止コードが発生したときに実行されていたコードを確認します。
u、ub、uu (アンアセンブル) コマンドを使用して、実行されていたコードの詳細を詳しく調べることもできます。
!pcr 拡張は、特定のプロセッサ上のプロセッサ制御領域 (PCR) の現在の状態を表示します。 出力では、Prcb のアドレスになります。
0: kd> !pcr
KPCR for Processor 0 at fffff8035f5a4000:
Major 1 Minor 1
NtTib.ExceptionList: fffff80368e77fb0
NtTib.StackBase: fffff80368e76000
NtTib.StackLimit: 0000000000000000
NtTib.SubSystemTib: fffff8035f5a4000
NtTib.Version: 000000005f5a4180
NtTib.UserPointer: fffff8035f5a4870
NtTib.SelfTib: 000000b6d3086000
SelfPcr: 0000000000000000
Prcb: fffff8035f5a4180
Irql: 0000000000000000
IRR: 0000000000000000
IDR: 0000000000000000
InterruptMode: 0000000000000000
IDT: 0000000000000000
GDT: 0000000000000000
TSS: 0000000000000000
CurrentThread: fffff80364926a00
NextThread: ffffe40b77c12040
IdleThread: fffff80364926a00
dt (表示タイプ) コマンドを使用すると、DPC および DPC ウォッチドッグに関する追加情報を表示できます。 このアドレスには、!pcr 出力に記載されている Prcb を使用します。
dt nt!_KPRCB fffff80309974180 Dpc*
0: kd> dt nt!DPC_WATCHDOG_GLOBAL_TRIAGE_BLOCK fffff803648fa320
+0x000 Signature : 0xaebecede
+0x004 Revision : 1
+0x006 Size : 0x10
+0x008 DpcWatchdogProfileOffset : 0x84a8
+0x00c DpcWatchdogProfileLength : 0x8200
例 2
パラメーター 1 = 1
パラメーター 1 の場合、コードが問題のあるコード領域で停止しない可能性があります。 この場合の 1 つの方法は、イベント トレースを使用して、どのドライバーが通常の実行時間を超えているかを追跡することです。
Use the !analyze デバッグ拡張機能を使うことで、バグ チェックに関する情報が表示されます。
0: kd> !analyze -v
*******************************************************************************
* *
* Bugcheck Analysis *
* *
*******************************************************************************
DPC_WATCHDOG_VIOLATION (133)
The DPC watchdog detected a prolonged run time at an IRQL of DISPATCH_LEVEL
or above.
Arguments:
Arg1: 0000000000000001, The system cumulatively spent an extended period of time at
DISPATCH_LEVEL or above. The offending component can usually be
identified with a stack trace.
Arg2: 0000000000001e00, The watchdog period.
Arg3: fffff803648fa320, cast to nt!DPC_WATCHDOG_GLOBAL_TRIAGE_BLOCK, which contains
additional information regarding the cumulative timeout
Arg4: 0000000000000000
nt!DPC_WATCHDOG_GLOBAL_TRIAGE_BLOCKのアドレスをキャストして、情報を表示します。
0: kd> dt nt!DPC_WATCHDOG_GLOBAL_TRIAGE_BLOCK fffff803648fa320
+0x000 Signature : 0xaebecede
+0x004 Revision : 1
+0x006 Size : 0x10
+0x008 DpcWatchdogProfileOffset : 0x84a8
+0x00c DpcWatchdogProfileLength : 0x8200
!dpcs コマンドを使用して、キューに登録された DPC を表示します。
3: kd> !dpcs
CPU Type KDPC Function
0: Normal : 0xfffff8035f5ac290 0xfffff80363e15630 nt!PpmPerfAction
Failed to read DPC at 0xffffe40b77190dd8
0: Threaded: 0xfffff8035f5ac3d8 0xfffff80363f27d70 nt!KiDpcWatchdog
解決方法
固有の原因を特定してコードを修正するには、プログラミングの経験と、障害が発生しているモジュールのソース コードへのアクセス権が必要です。
解説
一般に、この停止コードは、特定の条件下では割り当てられた時間枠内でその作業を完了しないドライバー コードの障害が原因で発生します。
この問題に対して、Windows デバッガーの取り組みについて不明な場合は、いくつかの基本的なトラブルシューティング手法を使用する必要があります。
バグ チェック メッセージでドライバーが特定された場合、問題を切り分けるために、ドライバーを無効にします。 ドライバーの更新プログラムについては、製造元にお問い合わせください。
イベント ビューアーのシステム ログで、このバグ チェック 0x133 の原因になっているデバイスまたはドライバーの特定に役立つ可能性がある追加のエラー メッセージを調べます。
インストールされた新しいハードウェアが、インストールされている Windows のバージョンと互換性があることを確認します。 たとえば、Windows 10 の場合、 Windows 10 の仕様で必要なハードウェアに関する情報を取得できます。
その他の一般的なトラブルシューティング情報については、バグ チェックのブルー スクリーン データの分析に関する記述を参照してください。
関連項目
Windows デバッガー (WinDbg) を使用したクラッシュ ダンプ分析