0x133 de vérification des bogues : DPC_WATCHDOG_VIOLATION

Le case activée de bogue DPC_WATCHDOG_VIOLATION a la valeur 0x00000133. Ce bogue case activée indique que le chien de garde DPC s’est exécuté, soit parce qu’il a détecté un seul appel de procédure différée (DPC) de longue durée, soit parce que le système a passé un temps prolongé à un niveau de demande d’interruption (IRQL) de DISPATCH_LEVEL ou supérieur.

La valeur du paramètre 1 indique si un seul DPC a dépassé un délai d’expiration ou si le système a passé une période prolongée à IRQL DISPATCH_LEVEL ou plus. Les DPC ne doivent pas s’exécuter plus de 100 microsecondes et les ISR ne doivent pas s’exécuter plus de 25 microsecondes, mais les valeurs de délai d’expiration réelles sur le système sont beaucoup plus élevées.

Pour plus d’informations sur les DPC, consultez Introduction to DPC Objects and Windows Internals 7th Edition Part 1 par Pavel Yosifovich, Mark E. Russinovich, David A. Solomon et Alex Ionescu.

Important

Cet article est destiné aux programmeurs. Si vous êtes un client qui a reçu un code d’erreur d’écran bleu lors de l’utilisation de votre ordinateur, consultez Résoudre les erreurs d’écran bleu.

paramètres de DPC_WATCHDOG_VIOLATION

Le paramètre 1 indique le type de violation. La signification des autres paramètres dépend de la valeur du paramètre 1.

Paramètre 1 Paramètre 2 Paramètre 3 Paramètre 4 Cause de l’erreur
0 Nombre de temps DPC (en graduations) Allocation de temps DPC (en cycles). cast en nt ! DPC_WATCHDOG_GLOBAL_TRIAGE_BLOCK, qui contient des informations supplémentaires concernant ce délai d’expiration DPC unique Un seul DPC ou ISR a dépassé son allocation de temps. Le composant incriminé peut généralement être identifié avec une trace de pile.
1 La période de surveillance cast en nt ! DPC_WATCHDOG_GLOBAL_TRIAGE_BLOCK, qui contient des informations supplémentaires concernant ce délai d’expiration DPC unique Réservé Le système a passé une période de temps prolongée à l’IRQL DISPATCH_LEVEL ou au-delà. Le composant incriminé peut généralement être identifié avec une trace de pile.

Cause

Pour déterminer la cause, le débogueur Windows, l’expérience de programmation et l’accès au code source du module défaillant sont nécessaires.

Pour plus d'informations, consultez les rubriques suivantes :

Analyse de vidage sur incident à l’aide des débogueurs Windows (WinDbg)

Analyse d’un fichier de vidage Kernel-Mode avec WinDbg

Utilisation de l’extension !analyze et !analyze

Pour plus d’informations sur Windows DPC, consultez Windows Internals 7th Edition Part 1 par Pavel Yosifovich, Mark E. Russinovich, David A. Solomon et Alex Ionescu.

Exemple 1

L’extension de débogage !analyze affiche des informations sur le bogue case activée et peut être utile pour déterminer la cause racine.

Paramètre 1 = 0

Dans cet exemple, le nombre de graduations de 501 dépasse l’allocation de temps DPC de 500. Le nom de l’image indique que ce code s’exécutait lorsque le bogue case activée s’est produit.

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

Utilisez les commandes de débogueur suivantes pour collecter plus d’informations en cas d’échec avec un paramètre de 0 :

k (Retour arrière de la pile d’affichage) pour examiner le code en cours d’exécution lorsque le code d’arrêt s’est produit.

Vous pouvez utiliser la commande u, ub, uu (Unassemble) pour examiner plus en détail les spécificités d’un code en cours d’exécution.

L’extension !pcr affiche la status actuelle de la région de contrôle du processeur (PCR) sur un processeur spécifique. Dans la sortie se trouve l’adresse du 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

Vous pouvez utiliser la commande dt (type d’affichage) pour afficher des informations supplémentaires sur les contrôleurs de base de données et la surveillance DPC. Pour l’adresse, utilisez le Prcb répertorié dans la sortie !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

Exemple 2

Paramètre 1 = 1

Pour le paramètre 1, le code ne peut pas s’arrêter dans la zone de code incriminable. Dans ce cas, une approche consiste à utiliser le suivi d’événements pour tenter de déterminer quel pilote dépasse sa durée d’exécution normale.

Utilisez l’extension de débogage !analyze pour afficher des informations sur le bogue case activée.

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

Caster l’adresse du nt ! DPC_WATCHDOG_GLOBAL_TRIAGE_BLOCK d’afficher des informations à son sujet.

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

Utilisez la commande !dpcs pour afficher les DPC mis en file d’attente.

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

Résolution

Pour déterminer la cause spécifique et créer un correctif de code, l’expérience de programmation et l’accès au code source du module défaillant sont nécessaires.

Remarques

En général, ce code d’arrêt est dû à un code de pilote défectueux qui, dans certaines conditions, n’effectue pas son travail dans le délai imparti.

Si vous n’êtes pas équipé pour utiliser le débogueur Windows pour résoudre ce problème, vous devez utiliser certaines techniques de dépannage de base.

  • Si un pilote est identifié dans le message de case activée bogue, pour isoler le problème, désactivez-le. Vérifiez auprès du fabricant les mises à jour du pilote.

  • Vérifiez le journal système observateur d'événements pour obtenir des messages d’erreur supplémentaires susceptibles d’aider à identifier le périphérique ou le pilote qui est à l’origine du bogue case activée 0x133.

  • Vérifiez que tout nouveau matériel installé est compatible avec la version installée de Windows. Par exemple, pour Windows 10, vous pouvez obtenir des informations sur le matériel requis dans spécifications Windows 10.

  • Pour obtenir des informations générales supplémentaires sur la résolution des problèmes, consultez Données d’écran bleu.

Voir aussi

Analyse de vidage sur incident à l’aide des débogueurs Windows (WinDbg)

Analyse d’un fichier de vidage Kernel-Mode avec WinDbg

Référence du Code de vérification de bogue