0xEA de vérification des bogues : THREAD_STUCK_IN_DEVICE_DRIVER

Le case activée de bogue THREAD_STUCK_IN_DEVICE_DRIVER a la valeur 0x000000EA. Cela indique qu’un thread dans un pilote de périphérique tourne sans fin.

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 THREAD_STUCK_IN_DEVICE_DRIVER

Paramètre Description

1

Pointeur vers l’objet thread bloqué

2

Pointeur vers l’objet DEFERRED_WATCHDOG

3

Pointeur vers le nom du pilote incriminé

4

Dans le débogueur du noyau : Nombre de fois que le bogue « intercepté » case activée 0xEA a été atteint

Sur l’écran bleu : 1

Cause

Un pilote de périphérique tourne dans une boucle infinie, attendant probablement que le matériel devienne inactif.

Cela indique généralement un problème lié au matériel lui-même ou au fait que le pilote de périphérique ne le programme pas correctement. Il s’agit souvent du résultat d’une vidéo incorrecte carte ou d’un pilote d’affichage incorrect.

Résolution

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.

Utilisez la commande .thread (Définir le contexte d’enregistrement) avec le paramètre 1. Utilisez ensuite kb (Retour arrière de la pile d’affichage) pour rechercher l’emplacement où le thread est bloqué.

Si le débogueur du noyau est déjà connecté et en cours d’exécution lorsque Windows détecte une condition de délai d’attente. DbgBreakPoint est alors appelé au lieu de KeBugCheckEx. Un message détaillé est imprimé dans le débogueur. Pour plus d’informations, consultez Envoi de la sortie au débogage.

Ce message inclut ce qui aurait été le bogue case activée paramètres. Étant donné qu’aucune case activée de bogue réelle n’a été émise, la commande .bugcheck (Afficher les données de vérification des bogues) ne sera pas utile. Les quatre paramètres peuvent également être récupérés à partir des variables globales de watchdog en utilisant dd watchdog !g_WdBugCheckData L5 » sur un système 32 bits, ou dq watchdog !g_WdBugCheckData L5 » sur un système 64 bits.

Le débogage de cette erreur de manière interactive, telle que celle-ci, vous permet de trouver un thread incriminé, de définir des points d’arrêt, puis d’utiliser g (Go) pour revenir au code en rotation pour le déboguer davantage.

Sur les machines multiprocesseurs (build de système d’exploitation 3790 ou antérieure), vous pouvez atteindre un délai d’expiration si le thread en rotation est interrompu par une interruption matérielle et qu’une routine ISR ou DPC est en cours d’exécution au moment de la case activée du bogue. Cela est dû au fait que l’élément de travail du délai d’expiration peut être remis et géré sur le deuxième processeur et en même temps. Si cela se produit, vous devez examiner plus en détail la pile du thread incriminé pour déterminer le code de rotation qui a provoqué l’expiration du délai d’attente. Pour ce faire, utilisez la commande dds (Afficher les mots et les symboles).