Case activée 0x1E de bogues : KMODE_EXCEPTION_NOT_HANDLED
Le case activée de bogue KMODE_EXCEPTION_NOT_HANDLED a une valeur de 0x0000001E. Le bogue case activée indique qu’un programme en mode noyau a généré une exception que le gestionnaire d’erreurs n’a pas interceptée.
Important
Cet article s’adresse aux programmeurs. Si vous êtes un client Microsoft et que votre ordinateur affiche un code d’erreur écran bleu, consultez Résoudre les erreurs d’écran bleu.
KMODE_EXCEPTION_NOT_HANDLED paramètres
Paramètre | Description |
---|---|
1 | Code d’exception qui n’a pas été géré. |
2 | Adresse à laquelle l’exception s’est produite. |
3 | Paramètre d’informations d’exception 0 de l’enregistrement d’exception. |
4 | Paramètre d’informations d’exception 0 de l’enregistrement d’exception. |
Cause
Pour interpréter ce bogue case activée, vous devez identifier l’exception qui a été générée.
Les codes d’exception courants sont les suivants :
0x80000002 : STATUS_DATATYPE_MISALIGNMENT
Une référence de données non alignée a été rencontrée.
0x80000003 : STATUS_BREAKPOINT
Un point d’arrêt ou ASSERT a été rencontré lorsqu’aucun débogueur de noyau n’a été attaché au système.
0xC0000005 : STATUS_ACCESS_VIOLATION
Une violation d’accès à la mémoire s’est produite. (Le paramètre 4 du bogue case activée est l’adresse à laquelle le pilote a tenté d’accéder.)
Pour obtenir la liste complète des codes d’exception, consultez Valeurs NTSTATUS. Les codes d’exception sont définis dans ntstatus.h, un fichier d’en-tête qui se trouve dans le Kit de pilotes Windows. Pour plus d’informations, consultez Fichiers d’en-tête dans le Kit de pilotes Windows.
Remarques
Si vous n’êtes pas équipé pour déboguer ce problème, vous pouvez utiliser certaines techniques de dépannage de base décrites dans Données d’écran bleu. Si un pilote est identifié dans un message de vérification d’erreur, désactivez-le ou contactez le fabricant pour obtenir les mises à jour.
Incompatibilité matérielle
Vérifiez que tout nouveau matériel installé est compatible avec la version installée de Windows. Par exemple, vous pouvez obtenir des informations sur le matériel requis à Windows 10 spécifications.
Service système ou pilote de périphérique défectueux
Un pilote de périphérique ou un service système défectueux peut provoquer cette erreur. Les problèmes matériels, tels que les incompatibilités du BIOS, les conflits de mémoire et les conflits IRQ, peuvent également générer cette erreur.
Si un pilote est répertorié par son nom dans le message de bogue case activée, désactivez ou supprimez ce pilote. Désactivez ou supprimez tous les pilotes ou services récemment ajoutés. Si l’erreur se produit pendant la séquence de démarrage et que la partition système est mise en forme en tant que système de fichiers NTFS, vous pouvez peut-être utiliser le mode sans échec pour désactiver le pilote dans Gestionnaire de périphériques.
Recherche observateur d'événements z d’autres messages d’erreur susceptibles de vous aider à identifier le périphérique ou le pilote à l’origine de l’case activée 0x1E de bogues. Exécutez également des diagnostics matériels fournis par le fabricant du système, en particulier le scanneur de mémoire. Pour plus d’informations sur ces étapes de résolution des problèmes, consultez le manuel du propriétaire de votre ordinateur.
L’erreur qui génère ce message peut se produire après le premier redémarrage pendant le programme d’installation de Windows ou après la fin du programme d’installation. L’incompatibilité du BIOS système est une cause possible de l’erreur. Vous pouvez résoudre les problèmes du BIOS en mettant à niveau la version du BIOS système.
Résolution
Vous trouverez peut-être difficile d’obtenir une trace de pile lorsque vous déboguez ce problème. L’adresse d’exception (paramètre 2) doit identifier le pilote ou la fonction à l’origine du problème.
Le code d’exception 0x80000003 indique qu’un point d’arrêt ou une assertion codé en dur a été atteint, mais que le système a démarré avec le /NODEBUG
commutateur. Ce problème doit se produire rarement. Si cela se produit à plusieurs reprises, assurez-vous qu’un débogueur de noyau est connecté et que le système est démarré avec le /DEBUG
commutateur.
Si le code d’exception 0x80000002 se produit, le cadre d’interruption fournit des informations supplémentaires.
Cause inconnue
Si la cause spécifique de l’exception est inconnue, envisagez d’utiliser la procédure suivante pour obtenir une trace de pile.
Notes
Cette procédure suppose que vous pouvez localiser NT!PspUnhandledExceptionInSystemThread
. Toutefois, dans certains cas, comme lors d’un incident de violation d’accès, vous ne pourrez pas trouver NT!PspUnhandledExceptionInSystemThread
. Dans ce cas, recherchez ntoskrnl!KiDispatchException
. Le troisième paramètre passé à cette fonction est une adresse de trame d’interruption. Utilisez la commande .trap (display trap frame) avec cette adresse pour définir la valeur correcte dans le contexte du registre. Vous pouvez ensuite effectuer des suivis de pile et émettre d’autres commandes.
Obtenir une trace de pile
Pour obtenir une trace de pile si les procédures de suivi de pile normales échouent :
Utilisez la commande kb (backtrace de la pile d’affichage) pour afficher les paramètres dans la trace de pile. Recherchez l’appel à
NT!PspUnhandledExceptionInSystemThread
. (Si cette fonction n’est pas répertoriée, consultez la note précédente.)Le premier paramètre à
NT!PspUnhandledExceptionInSystemThread
est un pointeur vers une structure. Le pointeur contient des pointeurs vers uneexcept
instruction :typedef struct _EXCEPTION_POINTERS { PEXCEPTION_RECORD ExceptionRecord; PCONTEXT ContextRecord; } EXCEPTION_POINTERS, *PEXCEPTION_POINTERS; ULONG PspUnhandledExceptionInSystemThread( IN PEXCEPTION_POINTERS ExceptionPointers )
Utilisez la commande dd (mémoire d’affichage) sur cette adresse pour afficher les données dont vous avez besoin.
La première valeur récupérée est un enregistrement d’exception. Pour l’enregistrement d’exception, utilisez la commande .exr (afficher l’enregistrement d’exception).
La deuxième valeur est un enregistrement de contexte. Pour l’enregistrement de contexte, utilisez la commande .cxr (display context record).
Une fois la
.cxr
commande exécutée, utilisez lakb
commande pour afficher une trace de pile basée sur les informations d’enregistrement de contexte. Cette trace de pile indique la pile appelante où l’exception non prise en charge s’est produite.
Exemple de case activée de bogues
L’exemple suivant montre un bogue case activée 0x1E sur un processeur x86 :
kd> .bugcheck get the bug check data
Bugcheck code 0000001e
Arguments c0000005 8013cd0a 00000000 0362cffff
kd> kb start with a stack trace
FramePtr RetAddr Param1 Param2 Param3 Function Name
8013ed5c 801263ba 00000000 00000000 fe40cb00 NT!_DbgBreakPoint
8013eecc 8013313c 0000001e c0000005 8013cd0a NT!_KeBugCheckEx+0x194
fe40cad0 8013318e fe40caf8 801359ff fe40cb00 NT!PspUnhandledExceptionInSystemThread+0x18
fe40cad8 801359ff fe40cb00 00000000 fe40cb00 NT!PspSystemThreadStartup+0x4a
fe40cf7c 8013cb8e fe43a44c ff6ce388 00000000 NT!_except_handler3+0x47
00000000 00000000 00000000 00000000 00000000 NT!KiThreadStartup+0xe
kd> dd fe40caf8 L2 dump EXCEPTION_POINTERS structure
0xFE40CAF8 fe40cd88 fe40cbc4 ..@...@.
kd> .exr fe40cd88 first DWORD is the exception record
Exception Record @ FE40CD88:
ExceptionCode: c0000005
ExceptionFlags: 00000000
Chained Record: 00000000
ExceptionAddress: 8013cd0a
NumberParameters: 00000002
Parameter[0]: 00000000
Parameter[1]: 0362cfff
kd> .cxr fe40cbc4 second DWORD is the context record
CtxFlags: 00010017
eax=00087000 ebx=00000000 ecx=03ff0000 edx=ff63d000 esi=0362cfff edi=036b3fff
eip=8013cd0a esp=fe40ce50 ebp=fe40cef8 iopl=0 nv dn ei pl nz ac po cy
vip=0 vif=0
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00010617
0x8013cd0a f3a4 rep movsb
kd> kb kb gives stack for context record
ChildEBP RetAddr Args to Child
fe40ce54 80402e09 ff6c4000 ff63d000 03ff0000 NT!_RtlMoveMemory@12+0x3e
fe40ce68 80403c18 ffbc0c28 ff6ce008 ff6c4000 HAL!_HalpCopyBufferMap@20+0x49
fe40ce9c fe43b1e4 ff6cef90 ffbc0c28 ff6ce009 HAL!_IoFlushAdapterBuffers@24+0x148
fe40ceb8 fe4385b4 ff6ce388 6cd00800 ffbc0c28 QIC117!_kdi_FlushDMABuffers@20+0x28
fe40cef8 fe439894 ff6cd008 ffb6c820 fe40cf4c QIC117!_cqd_CmdReadWrite@8+0x26e
fe40cf18 fe437d92 ff6cd008 ffb6c820 ff6e4e50 QIC117!_cqd_DispatchFRB@8+0x210
fe40cf30 fe43a4f5 ff6cd008 ffb6c820 00000000 QIC117!_cqd_ProcessFRB@8+0x134
fe40cf4c 80133184 ff6ce388 00000000 00000000 QIC117!_kdi_ThreadRun@4+0xa9
fe40cf7c 8013cb8e fe43a44c ff6ce388 00000000 NT!_PspSystemThreadStartup@8+0x40
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour