0x50 de vérification des bogues : PAGE_FAULT_IN_NONPAGED_AREA
La vérification des bogues PAGE_FAULT_IN_NONPAGED_AREA a la valeur 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
Cette rubrique s’adresse aux développeurs. 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 PAGE_FAULT_IN_NONPAGED_AREA
Paramètre | Description |
---|---|
1 |
Adresse mémoire référencée |
2 |
Après Windows version 1507 (TH1) - x64 0 : Opération de lecture 2 : Opération d’écriture 10 : Exécuter l’opération Après Windows version 1507 (TH1) - x86 0 : Opération de lecture 2 : Opération d’écriture 10 : Exécuter l’opération Après Windows version 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 qui référence la mémoire (si connue) |
4 |
Type d’erreur de page 0x0 - NONPAGED_BUGCHECK_FREED_PTE - L’adresse référencée se trouve sur une entrée de table de page marquée comme gratuite. 0x2 - NONPAGED_BUGCHECK_NOT_PRESENT_PAGE_TABLE L’adresse référencée n’a pas d’entrée de table de page active valide. 0x03 - NONPAGED_BUGCHECK_WRONG_SESSION - Une tentative de référence à une adresse d’espace de session a été effectuée dans le contexte d’un processus qui n’a pas de session. En règle générale, cela signifie que l’appelant tente incorrectement d’accéder à une adresse de session sans obtenir correctement une référence d’objet au processus correct et à l’attacher d’abord. Cette vérification de bogue & sous-type a été utilisée pour la dernière fois dans Windows 10 RS3. Dans Windows 10 RS4 et versions ultérieures, cette erreur est à la place exposée en tant que 0x02 (NONPAGED_BUGCHECK_NOT_PRESENT_PAGE_TABLE). 0x04 - NONPAGED_BUGCHECK_VA_NOT_CANONICAL - Une tentative de référence à une adresse virtuelle non canonique (non canonique) (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 du mode noyau a tenté d’accéder à une adresse virtuelle en mode utilisateur lorsque ce type d’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 dx du débogueur pour afficher ce - dx KiBugCheckDriver
.
Cause
La vérification des bogues 0x50 peut être due à l’installation d’un service système défectueux ou d’un code de pilote défectueux. Le logiciel antivirus peut également déclencher cette erreur, car un volume NTFS endommagé peut être endommagé.
Il 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é à la mémoire ram défectueuse, qu’il s’agit 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 observateur d'événements pour obtenir des messages d’erreur supplémentaires susceptibles d’aider à identifier le périphérique ou le pilote à l’origine de l’erreur. Pour plus d’informations, consultez Ouvrir observateur d'événements. 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 si celui-ci a été répertorié sur l’écran bleu ou est présent dans le journal des événements. Contactez le fournisseur du pilote pour voir si un pilote mis à jour est disponible.
Résolution d’un problème de service système défectueux : Désactivez le service et vérifiez que cela résout l’erreur. Si c’est le cas, contactez le fabricant du service système à propos d’une mise à jour possible. Si l’erreur se produit au démarrage du système, examinez les options de réparation Windows. Pour plus d’informations, consultez les options de récupération dans Windows 10.
Résolution d’un problème logiciel antivirus : Désactivez le programme et confirmez que cela résout l’erreur. Si c’est le cas, contactez le fabricant du programme à propos d’une mise à jour possible.
Résolution d’un problème de volume NTFS endommagé : Exécutez Chkdsk /f /r pour détecter et réparer les erreurs de disque. Vous devez redémarrer le système avant que l’analyse du disque commence sur une partition système. Contactez la fabrication du système de pilote dur pour localiser tous les outils de diagnostic qu’ils fournissent pour le sous-système de disque dur.
Windows Diagnostics de mémoire : exécutez l’outil Diagnostics de 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 sous 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 le matériel a été ajouté au système récemment, supprimez-le pour voir si l’erreur se répète. Si le matériel existant a échoué, supprimez ou remplacez le composant défectueux. Vous devez exécuter des diagnostics matériels fournis par le fabricant du système. Pour plus d’informations sur ces procédures, consultez le manuel du propriétaire pour votre ordinateur.
Pour obtenir des informations générales sur la résolution des problèmes d’écran bleu, consultez Données d’écran bleu et Résolution avancée des problèmes 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 un accès au code source du module d’erreur, il est nécessaire.
En règle générale, l’adresse référencée est en mémoire libérée ou n’est tout simplement pas valide. Cela ne peut pas être protégé par une tentative, sauf un gestionnaire, il ne peut être protégé que par une sonde ou des techniques de programmation similaires. Pour plus d’informations sur la gestion des mémoires tampons et les sondes dans les pilotes de système de fichiers, consultez Gestion des mémoires tampons. Pour plus d’informations sur les meilleures pratiques en matière de développement de pilotes et sur les erreurs courantes commises par les développeurs de pilotes, consultez les meilleures pratiques de développement de pilotes Surface Team.
Utilisez l’extension !analyze debug avec l’option détaillée -v pour afficher des informations sur la vérification des bogues afin de déterminer la cause racine.
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 des bogues s’est produite lorsqu’une zone de mémoire a été lue.
Examinez toutes les sorties !analyser pour obtenir des informations sur ce qui se passait quand la vérification du bogue s’est produite. 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 la pile TEXT pour obtenir des indices sur ce qui s’exécutait lorsque l’échec s’est produit. Si plusieurs fichiers de vidage sont disponibles, comparez les informations pour rechercher du 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 des commandes de débogueur telles que kb (Display Stack Backtrace) pour examiner le code d’erreur.
Utilisez la lm t n
liste des modules chargés dans la mémoire.
Utilisez la commande d, da, db, dc, dd, dD, df, dp, dq, du, dw (Mémoire d’affichage) pour examiner les zones de mémoire référencées par le paramètre 1 et le paramètre 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 n’y a pas de données dans cette zone de mémoire dans le paramètre 1, qui est la zone de 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 a référencé 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 la mémoire incorrecte référencée. Pour plus d’informations sur le processeur X64 et le langage d’assembly, consultez le 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 dissassembler vers l’arrière de l’adresse donnée.
Utilisez la commande r (Registers) pour examiner ce qui a été exécuté en tant que bogue système 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
, il se trouve dans le registre du pointeur d’instruction, rip.
La commande et !pool
la !pte
commande peuvent également être utilisées pour examiner la mémoire.
Utilisez et examinez !memusage
l’état général de la mémoire système.
Pour plus d’informations sur l’utilisation de la mémoire Windows, voir 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 pilotes. Par exemple, le vérificateur de pilotes vérifie l’utilisation des ressources mémoire, telles que les pools de mémoire. S’il voit des erreurs dans l’exécution du code de pilote, il crée de manière proactive une exception pour permettre à cette partie du code du pilote d’être examinée plus en détail. Le gestionnaire du vérificateur de pilotes est intégré à Windows et est disponible sur tous les PC Windows. Utilisez le vérificateur de pilote pour suivre la cause spécifique d’une défaillance.
Pour démarrer le gestionnaire du 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 une surcharge au fur et à mesure qu’il s’exécute. Essayez donc de vérifier le plus petit nombre possible de pilotes. Si un pilote défaillant a été identifié, sélectionnez-le. Pour plus d’informations, consultez Driver Verifier.