Controllo bug 0x133: DPC_WATCHDOG_VIOLATION
Il controllo dei bug DPC_WATCHDOG_VIOLATION ha un valore pari a 0x00000133. Questo controllo di bug indica che il watchdog DPC è stato eseguito, perché ha rilevato una singola chiamata di procedura posticipata (DPC) a esecuzione prolungata o perché il sistema ha trascorso un tempo prolungato a un livello di richiesta di interrupt (IRQL) di DISPATCH_LEVEL o superiore.
Il valore del parametro 1 indica se un singolo DPC ha superato un timeout o se il sistema ha trascorso un lungo periodo di tempo in IRQL DISPATCH_LEVEL o superiore. I controller di rete non devono essere eseguiti più di 100 microsecondi e gli ISR non devono essere eseguiti più di 25 microsecondi, ma i valori di timeout effettivi nel sistema sono impostati molto più alti.
Per altre informazioni sui DPC, vedere Introduction to DPC Objects and Windows Internals 7th Edition Part 1 (Introduzione agli oggetti DPC e Windows Internals 7th Edition Part 1 ) di Paolo Yosifovich, Mark E. Russinovich, David A. Solomon e Alex Ionovich.
Importante
Questo articolo è destinato ai programmatori. Se si è un cliente che ha ricevuto un codice di errore della schermata blu durante l'uso del computer, vedere Risolvere gli errori della schermata blu.
parametri DPC_WATCHDOG_VIOLATION
Il parametro 1 indica il tipo di violazione. Il significato degli altri parametri dipende dal valore del parametro 1.
Parametro 1 | Parametro 2 | Parametro 3 | Parametro 4 | Causa dell'errore |
---|---|---|---|---|
0 | Conteggio tempo DPC (in tick) | Allocazione temporale DPC (in tick). | cast to nt! DPC_WATCHDOG_GLOBAL_TRIAGE_BLOCK, che contiene informazioni aggiuntive relative a questo singolo timeout DPC | Un singolo DPC o ISR ha superato il tempo di allocazione. Il componente che causa l'errore può in genere essere identificato con un'analisi dello stack. |
1 | Il periodo del watchdog | cast to nt! DPC_WATCHDOG_GLOBAL_TRIAGE_BLOCK, che contiene informazioni aggiuntive relative a questo singolo timeout DPC | Prenotato | Il sistema ha trascorso un lungo periodo di tempo in irQL DISPATCH_LEVEL o superiore. Il componente che causa l'errore può in genere essere identificato con un'analisi dello stack. |
Causa
Per determinare la causa, è necessario che il debugger di Windows, l'esperienza di programmazione e l'accesso al codice sorgente per il modulo di errore.
Per altre informazioni, vedere gli argomenti seguenti:
Analisi del dump di arresto anomalo del sistema usando i debugger di Windows (WinDbg)
Analisi di un file di dump in modalità kernel con WinDbg
Uso dell'estensione !analyze e !analyze
Per altre informazioni su Windows DPC, vedi Windows Internals 7th Edition Part 1 di Paolo Yosifovich, Mark E. Russinovich, David A. Solomon e Alex Ionribu.
Esempio 1
L'estensione di debug !analyze visualizza informazioni sul controllo dei bug e può essere utile per determinare la causa radice.
Parametro 1 = 0
In questo esempio il conteggio dei tick di 501 supera l'allocazione del tempo DPC pari a 500. Il nome dell'immagine indica che questo codice è stato eseguito quando si è verificato il controllo del bug.
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
...
Usare i comandi del debugger seguenti per raccogliere altre informazioni sugli errori con un parametro pari a 0:
k (Visualizza stack backtrace) per esaminare il codice in esecuzione quando si è verificato il codice di arresto.
È possibile usare il comando u, ub, uu (Unassemble) per approfondire le specifiche del codice in esecuzione.
L'estensione !pcr visualizza lo stato corrente dell'area di controllo processore (PCR) in un processore specifico. Nell'output sarà l'indirizzo del 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
È possibile usare il comando dt (Tipo di visualizzazione) per visualizzare informazioni aggiuntive sui CONTROLLER di dominio e sul Watchdog DPC. Per l'indirizzo usare prcb elencato nell'output !pcr:
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
Esempio 2
Parametro 1 = 1
Per il parametro 1, il codice potrebbe non arrestarsi nell'area di codice che causa l'errore. In questo caso, un approccio consiste nell'usare la traccia eventi per tentare di rilevare il driver che supera la durata di esecuzione normale.
Usare l'estensione di debug !analyze per visualizzare informazioni sul controllo dei bug.
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
Eseguire il cast dell'indirizzo del nt! DPC_WATCHDOG_GLOBAL_TRIAGE_BLOCK visualizzare informazioni su di esso.
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
Usare il comando !dpcs per visualizzare i DPC in coda.
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
Risoluzione
Per determinare la causa specifica e creare una correzione del codice, è necessario l'esperienza di programmazione e l'accesso al codice sorgente del modulo di errore.
Osservazioni:
In generale, questo codice di arresto è causato da codice driver difettoso che in determinate condizioni, non completa il lavoro entro l'intervallo di tempo assegnato.
Se non si è dotati di usare il debugger Windows per questo problema, è consigliabile usare alcune tecniche di risoluzione dei problemi di base.
Se un driver viene identificato nel messaggio di controllo dei bug, per isolare il problema, disabilitare il driver. Rivolgersi al produttore per verificare la presenza di aggiornamenti dei driver.
Controllare il log di sistema Visualizzatore eventi per altri messaggi di errore che potrebbero aiutare a identificare il dispositivo o il driver che causa il controllo dei bug 0x133.
Verificare che qualsiasi nuovo hardware installato sia compatibile con la versione installata di Windows. Ad esempio per Windows 10, puoi ottenere informazioni sull'hardware necessario in Specifiche di Windows 10.
Per altre informazioni generali sulla risoluzione dei problemi, vedere Analizzare i dati della schermata blu di controllo dei bug.
Vedi anche
Analisi del dump di arresto anomalo del sistema usando i debugger di Windows (WinDbg)