BSOD - signification de vérification?

4

En me connectant à Windows 7 aujourd'hui, mon PC immédiatement sous BSOD. En utilisant WhoCrashed, je reçois le rapport suivant:

-

  • Le mar 12.02.2013 13:56:20 GMT votre ordinateur s'est écrasé
  • Fichier de vidage sur incident: C: \ Windows \ Minidump \ 021213-27390-01.dmp
  • temps de disponibilité: 00:00:25
  • Ceci est probablement dû au module suivant: ntoskrnl.exe (nt + 0x1AA698)
  • Code de vérification: 0x1000007E (0xFFFFFFFFC0000096, 0xFFFFF80003610698, 0xFFFFF8800614C7B8, 0xFFFFF8800614C010)
  • Erreur: SYSTEM_THREAD_EXCEPTION_NOT_HANDLED_M
  • chemin du fichier: C: \ Windows \ system32 \ ntoskrnl.exe
  • produit: Système d'exploitation Microsoft® Windows®
  • entreprise: Microsoft Corporation
  • la description: Noyau NT & amp; Système
  • Description du contrôle de bogue: Cela indique qu'un thread système a généré une exception que le gestionnaire d'erreurs n'a pas interceptée.

Cela semble être un bogue de pilote logiciel typique et n'est probablement pas causé par un problème matériel. Le crash est survenu dans le noyau Windows. Ce problème est peut-être causé par un autre pilote qui ne peut pas être identifié pour le moment.

-

À présent, mon PC s'était écrasé / gelé de temps en temps et sur des tâches lourdes de performances spécifiques dans le passé, mais la cause en était (je pensais) était un slot RAM défectueux sur ma carte mère. Garder cet emplacement vide a arrêté les crashs.

Aujourd'hui, il s'est écrasé de nouveau et je n'ai rien changé au matériel.

Je sais que je pourrais faire le tour de Google en lisant ce que signifie ce code de vérification, mais récemment, je me suis rendu compte qu’une expérience personnelle de quelqu'un (avec le même problème / vérification) est beaucoup plus utile, surtout que cette personne aurait Solution.

Merci beaucoup!

cr0z3r
la source
1
Tout d'abord ... Mettez à jour tous les pilotes de votre périphérique. Utiliser le mode sans échec pour ajuster les pilotes chargés en même temps que Windows
Ramhound
Je vous remercie! En ce qui concerne ma réponse à Ian Boyd, connaissez-vous un bon logiciel de mise à jour des périphériques? Ou bien la méthode manuelle habituelle reste-t-elle toujours la meilleure pour mettre à jour vos pilotes?
cr0z3r
1
Tout logiciel conçu pour mettre à jour vos pilotes (sauf Windows Update) est une énorme arnaque. Faites-le correctement toi même
Ramhound

Réponses:

10

Dans ce cas, un thread a rencontré l'exception

C0000096: STATUS_PRIVILEGED_INSTRUCTION
          Executing an instruction not allowed in current machine mode.

Cette erreur a été générée par la CPU elle-même. Certains codes ont essayé d'exécuter une instruction qu'il n'est pas autorisé à faire. Cela est probablement dû à une corruption de mémoire. où le code du noyau a essayé d'exécuter des données indésirables.

Ce genre d'erreur est vraiment impossible à cerner. Il y avait une erreur dans "noyau" code qui n'aurait pas dû arriver. Il est extrêmement improbable qu'il existe un bogue logiciel dans le code de Microsoft. qui est quand vous commencez à regarder ailleurs.

  • Conducteurs tiers . Les lecteurs en mode noyau ont un accès complet au matériel physique. Tout bogue parasite dans un pilote tiers (vidéo, son, réseau, USB 3.0, SATA, par exemple) peut corrompre le code ou les données de tout autre élément du système. Prochaines étapes : essayez de supprimer le matériel nouvellement ajouté (afin que certains pilotes tiers ne soient pas chargés), essayez de démarrer en mode sans échec (afin que certains pilotes tiers ne soient pas chargés) ou réinstallez Windows (afin que certains pilotes tiers ne soient pas chargés)
  • Mauvaise RAM . Si un bit était inversé et qu'une instruction parfaitement bénigne était transformée en une instruction différente, non valide, vous pourriez obtenir cette erreur. Prochaines étapes : Retirez la clé USB, déplacez la RAM vers d'autres emplacements, déverrouillez la RAM, changez de source d'alimentation
  • Overclocking . Parfois, des choses extraordinairement étranges peuvent se produire lorsque vous overclockez. Espérons que tout le monde envoie à Microsoft ses vidages mémoire sur incident; parce que Microsoft les étudie. Une erreur courante qu'ils obtiendraient est lorsque la CPU exécute l'instruction:

    xor eax, eax;
    

    C'est une opération extraordinairement simple que le processeur peut exécuter. il s'agit simplement de définir un registre interne de la CPU EAX à zéro. Il n'y a pas façon cela peut échouer sauf quand vous overclockez - ou d'autres problèmes physiques.

tl; dr: Si vous avez éliminé le logiciel, c'est le matériel.

Mettre à jour : Méthodologie de dépannage

Je voulais mentionner les détails que j'ai traversés, presque stupidement en regardant cette erreur.

Le premier était le code de vérification de bugs actuel:

0x1000007E - SYSTEM_THREAD_EXCEPTION_NOT_HANDLED_M

Binging que sur Google donne la page de documentation Microsoft

Vérification de bogue 0x1000007E: SYSTEM_THREAD_EXCEPTION_NOT_HANDLED_M

Cela indique qu'un thread système a généré une exception que le gestionnaire d'erreurs n'a pas interceptée.

Je sais par expérience d’être développeur que si mon application (ou l’un de ses threads) rencontre "exception" et je ne le fais pas "manipuler "L'exception, Windows finira par le gérer en tuant l'application. Si une exception non gérée se produit en mode noyau, le système d'exploitation n'a d'autre choix que de le gérer en arrêtant le noyau. Ce qui m'intéressait, c'est lequel exception était jeté. je assumé (à tort, il s’avère) c’était un "Violation d'accès" .

Je sais que toutes les vérifications de bogues sont accompagnées de quatre paramètres décrivant ce qui s'est réellement passé:

  • Paramètre 1: 0xFFFFFFFFC0000096
  • Paramètre 2: 0xFFFFF80003610698
  • Paramètre 3: 0xFFFFF8800614C7B8
  • Paramètre 4: 0xFFFFF8800614C010

Mais qu'est-ce que cela signifie? Nous revenons ensuite à la page de documentation, qui ne les décrit pas. Mais ça Est-ce que dire:

La vérification de bogue 0x1000007E a la même signification et les mêmes paramètres que vérification de bogue 0x7E (SYSTEM_THREAD_EXCEPTION_NOT_HANDLED).

Excellent. Et cette autre page documente les paramètres:

SYSTEM_THREAD_EXCEPTION_NOT_HANDLED Paramètres

Les paramètres suivants apparaissent sur l'écran bleu.

  • Paramètre 1: Le code d'exception qui n'a pas été traité
  • Paramètre 2: l'adresse où l'exception s'est produite
  • Paramètre 3: l'adresse de l'enregistrement d'exception
  • Paramètre 4: l'adresse de l'enregistrement de contexte

C'est ce que je voulais le code d'exception qui n'a pas été traité . Dans votre cas, c'était le code d'exception:

0xFFFFFFFFC0000096

Je sais, par expérience, que vous utilisez Windows 64 bits, car ce code a une longueur de 64 bits. Vraiment, je ne veux que les 32 bits inférieurs:

0xC0000096

Normalement, je m'attendais à trouver ce code d'erreur dans winerror.h dans mon répertoire de développement; mais ce n'était pas là. Il a fallu un peu de Binging, mais j'ai trouvé cette recherche:

winerror C0000096

conduis-moi à une page sur winehq , qui a déclaré la constante:

STATUS_PRIVILEGED_INSTRUCTION = 0xC0000096

Binging pour cette constante me mène un page de documentation Microsoft canonique :

Exceptions matérielles

STATUS_PRIVILEGED_INSTRUCTION: Exécution d'une instruction non autorisée en mode machine en cours.

Je sais aussi que cette exception est levée par la CPU lui-même . je le sais parce que "Instruction privilégiée" signifie que vous avez essayé d'exécuter une instruction de la CPU que vous n'êtes pas autorisé. Je peux aussi le savoir parce que la page s'appelle Exceptions matérielles .

Nous en sommes donc au stade où du code était en cours d’exécution, qui tentait d’exécuter une instruction du processeur qu’il n’était pas censé exécuter. Il y a deux possibilités:

  • la mémoire était corrompue; le logiciel n'a pas été écrit pour essayer d'exécuter ce code, mais c'est ce qui vient de se retrouver dans la RAM
  • c'est vraiment un logiciel bogué, et il a essayé de faire quelque chose qu'il n'est pas autorisé.

Étant donné que le code de Microsoft est constamment testé sur le terrain dans des millions de machines chaque jour, il est plus probable:

  • être un problème avec votre matériel
  • un bug dans le code de quelqu'un d'autre causant des problèmes

Quoi qu'il en soit, c'était Comment J'ai travaillé sur cette vérification. Peut-être qu'en sachant comment je suis passé par là, cela peut vous aider la prochaine fois que vous rencontrez un problème.

Ian Boyd
la source
Je vous remercie! Recommanderiez-vous un outil spécifique me permettant de vérifier / mettre à jour mes pilotes à leur dernière version, ou devrais-je le faire manuellement?
cr0z3r
1
@ cr0z3r Je n'ai jamais trouvé un seul vérificateur de pilote générique (je parle de ceux qui vérifient tous les pilotes de votre ordinateur, pas de ceux qui vérifient si un pilote spécifique est à jour) qui n'était pas une arnaque / plein de logiciels publicitaires. J'irais vous-même sur le site Web de chaque fabricant.
Scott Chamberlain
@ScottChamberlain C'est précisément ce que je veux dire. Ils proposent toujours une version d'essai répertoriant un milliard de pilotes obsolètes, mais ce n'est qu'après l'achat de leur version pro-super-exclusive que vous êtes (censé être) capable de les mettre à jour automatiquement. Quoi qu’il en soit, c’est le travail manuel. Je vous remercie!
cr0z3r
1
Ce n'est pas sûr de supposer cela. Microsoft ne dispose que des pilotes que les fabricants soumettent à WHQL pour les tests WHQL. Dans mon cas, il s’agissait d’un pilote de jeu de puces réseau vieux de dix ans, plutôt que celui créé l’année dernière. Realtek n'a jamais pris la peine de le soumettre à Microsoft; donc Windows Update ne l’aura pas. C'est pourquoi vous devrez parfois consulter les fabricants. Le chipset USB3.0 de ma carte mère ne possède pas de pilote sur Windows Update; Je devais aller sur leur site web. nVidia ne met pas toujours à jour les pilotes WHQL. Parfois, même les pilotes de chipset de carte mère.
Ian Boyd
1
D'autre part, vous ne voulez pas mettre à jour les pilotes bon gré mal gré. Parfois, le dernier et le plus grand a des bugs qui n'ont pas encore été trouvés. Je préfère faire confiance aux pilotes certifiés WHQL (hors Windows Update). Mais si vous rencontrez un problème, vous n'avez pas d'autre choix que de mettre à jour les pilotes.
Ian Boyd