Freigeben über


Fehlerüberprüfung 0x133: DPC_WATCHDOG_VIOLATION

Die DPC_WATCHDOG_VIOLATION-Fehlerüberprüfung hat einen Wert von 0x00000133. Diese Fehlerprüfung zeigt an, dass der DPC-Watchdog ausgeführt wurde, entweder da er einen einzelnen lang andauernden DPC (Deferred Procedure Call) erkannt hat oder da das System längere Zeit auf einem Interrupt Request Level (IRQL) von DISPATCH_LEVEL oder höher verbracht hat.

Der Wert von Parameter 1 gibt an, ob ein einzelner DPC ein Timeout überschritten hat oder ob das System einen längeren Zeitraum für IRQL-DISPATCH_LEVEL oder höher aufgewendet hat. DPCs sollten nicht länger als 100 Mikrosekunden ausgeführt werden, und ISRs sollten nicht länger als 25 Mikrosekunden laufen, die tatsächlichen Timeoutwerte auf dem System werden jedoch viel höher festgelegt.

Weitere Informationen über DPCs finden Sie unter Einführung in DPC-Objekte und Windows Internals 7th Edition Part 1 von Pavel Yosifovich, Mark E. Russinovich, David A. Solomon und Alex Ionescu.

Wichtig

Dieser Artikel richtet sich an Programmierer*innen. Wenn Sie ein Kunde sind, der während der Verwendung Ihres Computers einen Bluescreen-Fehlercode erhalten hat, lesen Sie Problembehandlung bei Bluescreen-Fehlern.

DPC_WATCHDOG_VIOLATION-Parameter

Parameter 1 gibt den Typ des Verstoßes an. Die Bedeutung der anderen Parameter hängt von dem Wert von Parameter 1 ab.

Parameter 1 Parameter 2 Parameter 3 Parameter 4 Fehlerursache
0 Die DPC-Zeitzählung (in Takten) Die DPC-Zeitzuteilung (in Takten). umgewandelt in nt!DPC_WATCHDOG_GLOBAL_TRIAGE_BLOCK, das zusätzliche Informationen zu diesem einzelnen DPC-Timeout enthält Ein einzelner DPC oder ISR hat sein Zeitkontingent überschritten. Die problematische Komponente kann in der Regel mit einer Stapelüberwachung identifiziert werden.
1 Der Watchdog-Zeitraum umgewandelt in nt!DPC_WATCHDOG_GLOBAL_TRIAGE_BLOCK, das zusätzliche Informationen zu diesem einzelnen DPC-Timeout enthält Reserved Das System verbrachte kumulativ einen längeren Zeitraum auf dem IRQL DISPATCH_LEVEL oder höher. Die problematische Komponente kann in der Regel mit einer Stapelüberwachung identifiziert werden.

Ursache

Um die Ursache zu ermitteln, sind der Windows-Debugger, Programmiererfahrung und Zugriff auf den Quellcode des fehlerhaften Moduls erforderlich.

Weitere Informationen finden Sie in den folgenden Themen:

Absturzabbildanalyse mit den Windows-Debuggern (WinDbg)

Analysieren einer Kernelmodus-Dump-Datei mit WinDbg

Verwenden der !analyze-Erweiterung und von !analyze

Weitere Informationen zu Windows DPC erhalten Sie unter Windows Internals 7th Edition Part 1 von Pavel Yosifovich, Mark E. Russinovich, David A. Solomon und Alex Ionescu.

Beispiel 1

Die !analyze-Debugerweiterung zeigt Informationen zur Fehlerüberprüfung an und kann bei der Ermittlung der Ursache hilfreich sein.

Parameter 1 = 0

In diesem Beispiel überschreitet die Taktanzahl von 501 die DPC-Zeitzuteilung von 500. Der Bildname gibt an, dass dieser Code beim Auftreten der Fehlerüberprüfung ausgeführt wurde.

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
...

Verwenden Sie die folgenden Debuggerbefehle, um weitere Informationen für Fehler mit einem Parameter von 0 zu sammeln:

k (Display Stack Backtrace), um zu sehen, welcher Code ausgeführt wurde, als der Stoppcode auftrat.

Möglicherweise möchten Sie den Befehl u, ub, uu (Unassemble) verwenden, um genauere Einzelheiten zum ausgeführten Code zu erfahren.

Die Erweiterung !pcr zeigt den aktuellen Status der Processor Control Region (PCR) auf einem bestimmten Prozessor an. In der Ausgabe wird die Adresse des Prcb angezeigt.

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

Sie können den Befehl dt (Display Type) verwenden, um zusätzliche Informationen zu den DPCs und dem DPC Watchdog anzuzeigen. Verwenden Sie als Adresse den in der !pcr-Ausgabe aufgeführten 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

Beispiel 2

Parameter 1 = 1

Bei einem Parameter von 1 darf der Code nicht im fehlerhaften Codebereich anhalten. In diesem Fall besteht ein Ansatz darin, die Ereignisablaufverfolgung zu verwenden, um zu versuchen, nachzuverfolgen, welcher Treiber die normale Ausführungsdauer überschreitet.

Verwenden Sie die Debugerweiterung !analyze, um Informationen zur Fehlerüberprüfung anzuzeigen.

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

Wandeln Sie die Adresse des nt!DPC_WATCHDOG_GLOBAL_TRIAGE_BLOCK um, um Informationen dazu anzuzeigen.

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

Verwenden Sie den Befehl !dpcs, um die in die Warteschlange gestellten DPCs anzuzeigen.

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

Lösung

Um die konkrete Ursache zu ermitteln und eine Codekorrektur zu erstellen, sind Programmiererfahrung und Zugriff auf den Quellcode des fehlerhaften Moduls erforderlich.

Hinweise

Im Allgemeinen wird dieser Stoppcode durch fehlerhaften Treibercode verursacht, der unter bestimmten Bedingungen seine Arbeit nicht innerhalb des vorgegebenen Zeitrahmens abschließt.

Wenn Sie nicht mit dem Windows-Debugger für dieses Problem ausgestattet sind, sollten Sie einige grundlegende Problembehandlungstechniken verwenden.

  • Wenn ein Treiber in der Fehlerüberprüfungsmeldung identifiziert wird, deaktivieren Sie den Treiber, um das Problem zu isolieren. Wenden Sie sich an den Hersteller, um Treiberupdates zu erhalten.

  • Überprüfen Sie das Systemprotokoll in der Ereignisanzeige auf weitere Fehlermeldungen, die Ihnen helfen könnten, das Gerät oder den Treiber zu identifizieren, das bzw. der die Fehlerüberprüfung 0x133 verursacht.

  • Bestätigen Sie, dass die neu installierte Hardware mit der installierten Windows-Version kompatibel ist. Informationen zur benötigten Hardware für Windows 10 finden Sie beispielsweise unter Windows 10-Spezifikationen.

  • Weitere allgemeine Informationen zur Fehlerbehebung finden Sie unter Analysieren von Fehlerüberprüfungs-Bluescreen-Daten.

Siehe auch

Absturzabbildanalyse mit den Windows-Debuggern (WinDbg)

Analysieren einer Kernelmodus-Dump-Datei mit WinDbg

Bug Check Code Reference (Referenz zu Fehlerüberprüfungscodes)