Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La PAGE_FAULT_IN_NONPAGED_AREA vérification de bogue a une valeur de 0x00000050. Cela indique que la mémoire système non valide a été référencée. En règle générale, l’adresse mémoire est incorrecte ou l’adresse mémoire pointe vers la mémoire libérée.
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.
PAGE_FAULT_IN_NONPAGED_AREA Paramètres
Paramètre | Descriptif |
---|---|
1 |
Adresse mémoire référencée |
2 |
Version postérieure à Windows 1507 (TH1) - x64 0 : Opération de lecture deux: Opération d’écriture 10 : Exécuter l’opération Version après Windows 1507 (TH1) - x86 0 : Opération de lecture deux: Opération d’écriture 10 : Exécuter l’opération Version après Windows 1507 (TH1) - Arm 0 : Opération de lecture 1 : Opération d’écriture 8 : Exécuter l’opération Avant Windows 1507 (TH1) Version x64 / x86 0 : Opération de lecture 1 : Opération d’écriture |
3 |
Adresse de la mémoire référencée (si elle est connue) |
4 |
Type de défaut de page 0x0 - NONPAGED_BUGCHECK_FREED_PTE - L’adresse référencée figure sur une entrée de table de pages marquée comme libre. 0x2 - NONPAGED_BUGCHECK_NOT_PRESENT_PAGE_TABLE L’adresse référencée n’a pas d’entrée de table de pages active valide. 0x03 - NONPAGED_BUGCHECK_WRONG_SESSION - Une tentative de référence à une adresse d’espace de session a été faite dans le contexte d’un processus qui n’a pas de session. En règle générale, cela signifie que l’appelant tente de manière incorrecte d’accéder à une adresse de session sans obtenir correctement une référence d’objet pour le processus correct et de s’y attacher au préalable. Cette vérification de bogue et ce sous-type ont été utilisés pour la dernière fois dans Windows 10 RS3. Dans Windows 10 RS4 et versions ultérieures, cette erreur est plutôt affichée sous la forme 0x02 (NONPAGED_BUGCHECK_NOT_PRESENT_PAGE_TABLE). 0x04 - NONPAGED_BUGCHECK_VA_NOT_CANONICAL - Une tentative de référence à une adresse virtuelle non canonique (illégale) (paramètre 1) a été tentée. L’appelant ne doit jamais essayer d’accéder à cette adresse. 0xF - NONPAGED_BUGCHECK_USER_VA_ACCESS_INCONSISTENT - Le code en mode noyau a tenté d’accéder à une adresse virtuelle en mode utilisateur alors que cet accès n’est pas autorisé. |
Si le pilote responsable de l’erreur peut être identifié, son nom est imprimé sur l’écran bleu et stocké en mémoire à l’emplacement (PUNICODE_STRING) KiBugCheckDriver. Vous pouvez utiliser la commande debugger dx pour afficher ceci - dx KiBugCheckDriver
.
La cause
Les 0x50 de vérification des bogues peuvent être causées par l’installation d’un service système défectueux ou d’un code de pilote défectueux. Un logiciel antivirus peut également déclencher cette erreur, tout comme un volume NTFS corrompu.
Cela peut également se produire après l’installation d’un matériel défectueux ou en cas de défaillance du matériel installé (généralement liée à une RAM défectueuse, qu’il s’agisse de la mémoire principale, du cache de RAM L2 ou de la RAM vidéo).
Remarques
Journal des événements : Consultez le journal système dans l’Observateur d’événements pour obtenir des messages d’erreur supplémentaires qui peuvent aider à identifier le périphérique ou le pilote à l’origine de l’erreur. Recherchez dans le journal système des erreurs critiques qui se sont produites dans la même fenêtre temporelle que l’écran bleu.
Résolution d’un pilote défectueux : Examinez le nom du pilote s’il est répertorié sur l’écran bleu ou s’il figure dans le journal des événements. Contactez le fournisseur du pilote pour savoir si un pilote mis à jour est disponible.
Résolution d’un problème de service système défectueux : Désactivez le service et confirmez que cela résout l’erreur. Si c’est le cas, contactez le fabricant du service système au sujet d’une éventuelle mise à jour. Si l’erreur se produit au démarrage du système, examinez les options de réparation de Windows. Pour plus d’informations, consultez Options de récupération dans Windows 10.
Résolution d’un problème de logiciel antivirus : Désactivez le programme et confirmez que cela résout l’erreur. Si c’est le cas, contactez le fabricant du programme au sujet d’une éventuelle mise à jour.
Résolution d’un problème de volume NTFS corrompu : Exécutez Chkdsk /f /r pour détecter et réparer les erreurs de disque. Vous devez redémarrer le système avant le début de l’analyse du disque sur une partition système. Contactez le fabricant du système de disque dur pour trouver les outils de diagnostic qu’il fournit pour le sous-système de disque dur.
Diagnostics de la mémoire Windows : Exécutez l’outil de diagnostic de la mémoire Windows pour tester la mémoire physique. Sélectionnez le bouton Démarrer, puis sélectionnez le Panneau de configuration. Dans la zone de recherche, tapez Mémoire, puis sélectionnez Diagnostiquer les problèmes de mémoire de votre ordinateur. Une fois le test exécuté, utilisez l’Observateur d’événements pour afficher les résultats dans le journal système. Recherchez l’entrée MemoryDiagnostics-Results pour afficher les résultats.
Résolution d’un problème matériel défectueux : Si du matériel a été ajouté au système récemment, retirez-le pour voir si l’erreur se reproduit. Si le matériel existant est défagé, retirez ou remplacez le composant défectueux. Vous devez exécuter les tests de diagnostic matériels fournis par le fabricant du système. Pour plus de détails sur ces procédures, consultez le manuel d’utilisation de votre ordinateur.
Pour obtenir des informations générales sur le dépannage de l’écran bleu, consultez Analyser les données de vérification des bogues et Dépannage avancé pour le problème d’erreur d’arrêt ou d’erreur d’écran bleu.
Résolution
Pour déterminer la cause spécifique et créer un correctif de code, une expérience de programmation et l’accès au code source du module défectueux sont nécessaires.
En règle générale, l’adresse référencée se trouve dans la mémoire libérée ou n’est tout simplement pas valide. Cela ne peut pas être protégé par un try - sauf handler - il ne peut être protégé que par une sonde ou des techniques de programmation similaires. Pour plus d’informations sur la gestion de la mémoire tampon et les sondes dans les pilotes de système de fichiers, consultez la section Gestion de la mémoire tampon. Pour plus d’informations sur les meilleures pratiques de développement de pilotes et les erreurs courantes commises par les développeurs de pilotes, consultez Meilleures pratiques de développement de pilotes Surface Team.
Utilisez l’extension de débogage !analyze avec l’option -v détaillée pour afficher des informations sur la vérification des bogues afin de déterminer la cause première.
2: kd> !analyze -v
*******************************************************************************
* *
* Bugcheck Analysis *
* *
*******************************************************************************
PAGE_FAULT_IN_NONPAGED_AREA (50)
Invalid system memory was referenced. This cannot be protected by try-except.
Typically the address is just plain bad or it is pointing at freed memory.
Arguments:
Arg1: ffffffff00000090, memory referenced.
Arg2: 0000000000000000, value 0 = read operation, 1 = write operation.
Arg3: fffff80240d322f9, If non-zero, the instruction address which referenced the bad memory
address.
Arg4: 000000000000000c, (reserved)
Dans cet exemple, le paramètre 2 indique que la vérification du bogue s’est produite lors de la lecture d’une zone de mémoire.
Regardez toute la sortie de !analyze pour obtenir des informations sur ce qui se passait lorsque la vérification du bogue a eu lieu. Examinez MODULE_NAME et le FAULTING_MODULE pour voir quel code est impliqué dans le référencement de la mémoire système non valide.
Examinez le TEXTE DE LA PILE pour obtenir des indices sur ce qui était en cours d’exécution lorsque l’échec s’est produit. Si plusieurs fichiers de vidage sont disponibles, comparez les informations pour rechercher le code commun qui se trouve dans la pile.
Utilisez la commande .trap fournie dans la sortie !analyze pour définir le contexte.
TRAP_FRAME: fffff98112e8b3d0 -- (.trap 0xfffff98112e8b3d0)
Utilisez les commandes du débogueur telles que use kb (Display Stack Backtrace) pour examiner le code défectueux.
Utilisez le pour lister les lm t n
modules chargés dans la mémoire.
Utilisez la commande d, da, db, dc, dd, dd, df, dp, dq, du, dw (Display Memory) pour examiner les zones de mémoire référencées par les paramètres 1 et 3.
2: kd> db ffffffff00000090
ffffffff`00000090 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ?? ????????????????
ffffffff`000000a0 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ?? ????????????????
ffffffff`000000b0 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ?? ????????????????
ffffffff`000000c0 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ?? ????????????????
ffffffff`000000d0 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ?? ????????????????
ffffffff`000000e0 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ?? ????????????????
ffffffff`000000f0 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ?? ????????????????
ffffffff`00000100 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ?? ????????????????
Dans ce cas, il ne semble pas qu’il y ait des données dans cette zone de la mémoire dans le paramètre 1, qui est la zone de la mémoire qui tentait d’être lue.
Utilisez la commande !address pour examiner le paramètre 3 qui est l’adresse de l’instruction qui fait référence à la mémoire incorrecte.
2: kd> !address fffff80240d322f9
Usage: Module
Base Address: fffff802`40ca8000
End Address: fffff802`415fb000
Region Size: 00000000`00953000
VA Type: BootLoaded
Module name: ntoskrnl.exe
Module path: [\SystemRoot\system32\ntoskrnl.exe]
Utilisez u, ub, uu (Unassemble)Dissasemble avec le paramètre 3, pour examiner qui a fait référence à la mauvaise mémoire. Pour plus d’informations sur le processeur x64 et le langage assembleur, consultez Processeur x64.
2: kd> u fffff80240d322f9
nt!RtlSubtreePredecessor+0x9:
fffff802`40d322f9 488b4810 mov rcx,qword ptr [rax+10h]
fffff802`40d322fd eb07 jmp nt!RtlSubtreePredecessor+0x16 (fffff802`40d32306)
fffff802`40d322ff 488bc1 mov rax,rcx
fffff802`40d32302 488b4910 mov rcx,qword ptr [rcx+10h]
fffff802`40d32306 4885c9 test rcx,rcx
fffff802`40d32309 75f4 jne nt!RtlSubtreePredecessor+0xf (fffff802`40d322ff)
fffff802`40d3230b c3 ret
fffff802`40d3230c c3 ret
Permet ub
de désassembler à l’envers à partir d’une adresse donnée.
Utilisez la commande r (Registres) pour examiner ce qui était exécuté lorsque le bogue système était vérifié.
2: kd> r
Last set context:
rax=ffffffff00000080 rbx=0000000000000000 rcx=ffffa68337cb7028
rdx=7a107838c48dfc00 rsi=0000000000000000 rdi=0000000000000000
rip=fffff80240d322f9 rsp=ffff840c96510958 rbp=ffffffffffffffff
r8=ffffffffffffffff r9=0000000000000000 r10=7ffffffffffffffc
r11=ffff840c96510a10 r12=0000000000000000 r13=0000000000000000
r14=0000000000000000 r15=0000000000000000
iopl=0 nv up ei ng nz na pe nc
cs=0010 ss=0018 ds=0000 es=0000 fs=0000 gs=0000 efl=00010282
nt!RtlSubtreePredecessor+0x9:
fffff802`40d322f9 488b4810 mov rcx,qword ptr [rax+10h] ds:ffffffff`00000090=????????????????
Dans ce cas fffff80240d322f9
, c’est dans le registre du pointeur d’instructions, rip.
La !pte
commande and !pool
peut également être utilisée pour examiner la mémoire.
Utilisez !memusage
et pour examiner l’état général de la mémoire système.
Pour plus d’informations sur l’utilisation de la mémoire Windows, consultez Windows Internals 7th Edition Part 1 par Pavel Yosifovich, Mark E. Russinovich, David A. Solomon et Alex Ionescu.
Vérificateur de pilotes
Driver Verifier est un outil qui s’exécute en temps réel pour examiner le comportement des conducteurs. Par exemple, Driver Verifier vérifie l’utilisation des ressources mémoire, telles que les pools de mémoire. S’il détecte des erreurs dans l’exécution du code du pilote, il crée de manière proactive une exception pour permettre à cette partie du code du pilote d’être examinée plus en profondeur. Le gestionnaire de vérificateur de pilotes est intégré à Windows et est disponible sur tous les PC Windows. Utilisez le vérificateur de pilote pour rechercher la cause spécifique d’une défaillance.
Pour démarrer le gestionnaire de vérificateur de pilotes, tapez Vérificateur à l’invite de commandes. Vous pouvez configurer les pilotes que vous souhaitez vérifier. Le code qui vérifie les pilotes ajoute de la surcharge au fur et à mesure de son exécution, alors essayez de vérifier le plus petit nombre de pilotes possible. Si un pilote défectueux a été identifié, sélectionnez-le. Pour plus d’informations, consultez Type de débogage.