Tutoriel mis à jour le lundi 28 juillet, 2008
Valid XHTML 1.0 Strict
Valid CSS!
Les tutoriels de l'Anneau de sable
Navigation Envoyez ce tutoriel à vos amis(es) Envoyez un courriel au webmaster Imprimez cette page Retour à la page index des tutoriels Retour au menu de Windows XP Analyser les dumps avec WINDBG Revoir la console de récupération

Entretenir et réparer votre système d'exploitation Windows XP

D - Création et analyse d'un Dump

0 - Introduction

Quand Windows rencontre une condition qui peut compromettre le système d'exploitation, le système s'arrête. Cette condition est appelée bug check ou contrôle d'anomalie. Elle est également désignée par le nom d'arrêt du système, d'erreur de noyau, ou d'erreur stop.

Si des vidages de mémoires sur incident sont paramétrés sur le système, un fichier dump ou core dump est généré.

Si un débogueur de noyau (kernel) est actif, le système provoque une rupture. Ainsi le débogueur peut être utilisé pour analyser l'erreur.

Si aucun débogueur n'est actif, un écran bleu est alors affiché avec des informations sur l'erreur. le système est arrêté. Cet écran s'appelle blue screen ou écran bleu (Blue Screen of the Death, BSOD, Écran bleu de la mort, ou encore Malédiction de Bill pour faire drôle !), bug check screen ou écran de contrôle d'anomalie, ou Stop screen, écran d'arrêt .

L'apparence exacte de l'écran bleu dépend de la cause de l'erreur. Ce qui suit est un exemple d'un écran bleu possible signalant une erreur du noyau (le kernel) et du hal avec vidage de la mémoire physique donc création d'un dump :

Premier exemple de BSOD

Dans d'autres circonstances, quelques écrans bleus ressemblent à ceci, signalant le type d'erreur mais sans vidage de la mémoire physique. Il n' y donc pas de génération de dump probablement parce que ce vidage n'a pas été paramétré sur le système :

Deuxième exemple de BSOB

Le code hexadécimal qui suit le mot "STOP" s'appelle "bug check code " ou "Stop code" (code de contrôle d'anomalie). C'est l'élément le plus important sur l'écran et c'est ce code qu'il va falloir noter pour effectuer d'éventuelles recherches. Il est composé de huit chiffres hexadécimaux après le "0x". Dans les exemples ci-dessus, ces codes sont, pour le premier écran "0x00000079" ou tout simplement "0x79" et pour le second "c000021a" qui est en réalité "0xc000021a".

Chaque "bug check code" possède quatre paramètres associés. Dans le premier écran bleu indiqué ici, chacun des quatre paramètres est affiché après le code de contrôle d'anomalie alors que dans le deuxième exemple d'écran bleu, ces paramètres ont été permutés dans le texte explicatif. Indépendamment de la mise en page, ils apparaîtront toujours de manière séquentielle. Si moins de quatre paramètres sont indiqués, on peut en conclure que les paramètres restants ont la valeur "zéro".

Le reste du texte sur l'écran bleu fournit des informations supplémentaires. Pour quelques "bug check codes", on peut avoir une explication de ce qui s'est produit ou des suggestions sur la façon dont il faut traiter le problème. Mais c'est hélas, rarement le cas.

Dans certaines conditions (heureusement exceptionnelles), Windows affichera seulement la première ligne d'un écran bleu. Cela peut se produire si des services vitaux requis pour l'affichage ont été affectés par l'erreur.

Chaque "bug check code" a également un nom symbolique associé. Habituellement ces noms symboliques n'apparaissent pas sur l'écran bleu. Dans les exemples ci-dessus, le premier écran indique le code d'erreur "0x79" dont le nom symbolique est "MISMATCHED_HAL" (erreur produite par une corruption du fichier "ntoskrnl.exe" ou " hal.dll"), et le deuxième "0xC000021A" dont le nom est "STATUS_SYSTEM_PROCESS_TERMINATED " (erreur dans un sous-système du mode utilisateur tel que Winlogon par exemple).

 

1 - Définitions

Partant des indications ci-dessus, nous pouvons définir le dump comme suit :

Un dump est la copie de tout ou partie du contenu d'une mémoire vers un autre support, généralement un fichier est aussi appelé "core dump" ou vidage de la mémoire. Ce fichier est créé quand un programme plante. Il contient une image de la mémoire utilisée alors par le programme, qu'on peut analyser pour voir ce qui s'est mal passé. Le dump généré lors d'un crash (plantage) se dit "crash dump". Sous Windows, le dump relatif à la mémoire porte par défaut le nom de "memory.dump". Son emplacement est le répertoire de Windows. Les autres dump sont enregistrés dans le dossier "minidump" de Windows. La création d'un dump n'est pas automatique après chaque apparition d'un écran bleu de la mort. Il faut avoir auparavant déterminé les paramètres de sa création. L'analyse du contenu d'un crash dump nécessite le recours à un outil externe à Windows que Microsoft met gratuitement à la disposition des utilisateurs.

Et puisque nous serons appelés à en parler, voici d'autres définitions utiles :

Kernel : C'est le noyau et le cœur du système. C'est lui qui fait l'interface entre vos applications et votre matériel. Par exemple, il gère la mémoire, donne l'ordre d'exécution des tâches sur le(s) processeur(s), interagit avec vos périphériques via les pilotes matériels (souris, claviers, etc), s'occupe du réseau etc. Le noyau est composé d'une partie statique à laquelle on peut dynamiquement greffer des modules. La partie statique est utilisée lors du démarrage de votre ordinateur et sera toujours chargée en mémoire, tandis que les modules peuvent être chargés seulement une fois la machine démarrée et uniquement en cas de besoin.

HAL : Non ! Ce n'est pas le Super Ordinateur "HAL" du film "2001 : l'Odyssée de l'Espace ! Il désigne le "Hardware Abstraction Layer", la couche d'abstraction matériel qui est une spécification et un utilitaire logiciel qui traque les périphériques du système. Le but du HAL est d'éviter aux développeurs d'implémenter manuellement le code spécifique à un périphérique. A la place, ils peuvent utiliser une couche connectable qui fournit des informations à propos du dit périphérique, tel que cela se passe par exemple lorsqu'un utilisateur branche ou débranche un périphérique USB.

Hexadécimal : Le système hexadécimal est un système de numération utilisant la base 16, c'est à dire 16 chiffres à partir de "0".
Il utilise les 10 premiers chiffres arabes puis les 6 premières lettres de l'alphabet latin : 0 1 2 3 4 5 6 7 8 9 A B C D E F.
L'usage en fut imposé mondialement par l'entreprise IBM qui commença à l'utiliser en 1963. Actuellement, c'est "Le" standard reconnu. Ci après, les correspondances entres les 3 systèmes principaux :

Décimal, base 10 : 0 à 9 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Hexadécimal, base 16 : 0 à F 0 1 2 3 4 5 6 7 8 9 A B C D E F
Binaire, base 2 : 0 à 1 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111

Pour ne pas confondre les nombres exprimés en hexadécimal avec ceux pouvant être textuellement identiques en décimal, ils sont généralement précédés du symbole "#". "#10" en hexa équivaut donc à "16" en décimal ! Tout cela est bien entendu conventionnel et le but demeure l'accessibilité humaine car l'ordinateur quant à lui ne comprend que le "binaire". "0" quand le courant électrique ne passe pas et "1" quand il passe. "0" est égal à "faux" et "1" à "vrai" ! Shématiquement bien sûr !

Voila pour la sémantique et désormais nous parlerons le même langage. Dès lors, la question qui se pose est celle de la méthode. Comment faire en sorte pour qu'à chaque crash un dump soit créé, comment analyser ce dump et avec quels outils ?

       

2 - Paramétrer la création des dump.

D'après ce que nous venons de voir, il serait donc intéressant d'avoir à sa dispositions un "crash dump" à analyser si d'aventure il faudra faire face à un BSOD. Nous allons pour cela demander à Windows d'en écrire un en cas de plantage. Pour réaliser cette opération il suffit de modifier quelques paramètres dans les propriétés du poste de travail. La procédure est la suivante :

  1. Faites un clic droit sur "Poste de travail",
  2. Sélectionnez "Propriétés",
  3. dans le panneau qui s'ouvre, choisissez l'onglet "Avancé",
  4. Dans "Démarrage et récupération" cliquez sur "Paramètres".
Panneau des propriétés avancées du système

Une fois arrivé aux paramètres :

  1. Dans "Écriture des information de débogage", sélectionnez "Image mémoire partielle (64 ko) ". Vous pouvez choisir trois types de dump : image mémoire partielle (64Ko), image mémoire du noyau et image mémoire complète. A moins que vous vouliez entreprendre une analyse très en profondeur, l’image partielle et celle du noyau suffisent amplement.
  2. Il vous est suggéré un répertoire pour l'image mémoire partielle "%SystemRoot%\Minidump". "%SystemRoot%" étant le répertoire "C:\WINDOWS". Nous vous conseillons de ne pas le modifier.
panneau de paramétrage de l'écriture du débogage

Et c'est terminé ! A partir de ce moment, si vous croisez un écran bleu de la mort, vous disposerez d'un dump qui vous permettra de savoir ce qui s'est réellement passé !

Comment ?

       

3 - Les outils

Le "Seigneur des fenêtres" Monsieur Bill Gates, nous fournit, et sans bourse délier, deux outils indispensables pour analyser nos dump : "Windbg" avec une interface graphique et "kd" en ligne de commande. Nous utiliserons Windbg, téléchargeable sur le site Microsoft http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx. Dans la rubrique "Download the Debugging Tools for Windows", choisissez la dernière version et pensez à visiter régulièrement ce site car les mises à jour sont fréquentes. Installez les outils (il y en a plusieurs dont "windbg.exe"). L'installation par défaut s'effectue dans "C:\Program Files\Debugging Tools for Windows".
Afin de pouvoir analyser nos dump, Windbg a besoin d'un bibliothèque de codes, les "symboles" qui sont également disponibles en ligne. Nous avons le choix entre télécharger ces symboles en package et les télécharger à la demande. Nous opterons pour la la seconde méthode en laissant l'initiative du choix des symboles à récupérer à Windbg car ces derniers varient non seulement en fonction des systèmes d'exploitation mais aussi des Services Pack et des hotfix (vous savez, tous ces patchs et correctifs de Microsoft du type KB837704 etc.) surtout quand on ne connaît pas les hotfix installés. Ce qui est le cas de l'écrasante majorité des utilisateurs.

Laissons donc faire Windbg mais il faut lui indiquer où aller les chercher et où les stocker. Procédure :

  1. Lancez "windbg.exe",
  2. Dans le menu "File", cliquez sur "Symbol File Path",
  3. Dans la petite fenêtre qui apparaît, tapez :
    "srv*c:\symbols*http://msdl.microsoft.com/download/symbols". Sans les guillemets et n'insérez aucun espace.
  4. Créez dans "C:" un répertoire nommé "symbols" ce qui vous donnera "C:\symbols".
Paramétrage du chemin des symboles pour Windbg

Ainsi, vous n'avez pas à vous tracasser pour choisir les bons symboles car Windbg va charger automatiquement ceux dont il a besoin et les stocker dans le répertoire "c:\symbols". En fonction de la connexion Internet, le téléchargement peut être plus ou moins long, les fichiers symboles étant très gros (près de 200 Mo).

Pour passer à l'exercice d'analyse des dump, il va falloir attendre l'apparition d'un BSOD (écran bleu de la mort), sinon, et dans le cas où vous éprouvez le besoin de vous familiariser avec Windbg, il est possible d'en provoquer un, soit en utilisant un utilitaire externe soit en suivant la procédure décrite par Microsoft dans son article 244139 du 13 octobre 2006. Cette méthode de génération de BSOD nécessitant une intervention sur la base de registre, la plus grande prudence est requise. Sauvegardez votre BDR avant toute manipulation !.

On peut dormir tranquilles ! Si "Stop screen" il y a, Windows va nous écrire un dump et Windbg va nous servir pour le décortiquer et ainsi corriger le problème ! Vous êtes prêts ? Prenez une pause café (ou un cachet d'aspirine comme le suggérait récemment un internaute dans un forum !) puis Sabre au clair et à l'assaut !

 

Navigation Envoyez ce tutoriel à vos amis(es) Envoyez un courriel au webmaster Imprimez cette page Retour à la page index des tutoriels Retour au menu de Windows XP Revoir la console de récupération Début de la page Analyser les dumps avec WINDBG

 

Archives
Flux RSS de l'Anneau de Sable
© - Copyright l'Anneau de Sable - Septembre 2006
 Infos

Nos Visiteurs en live Plus de détails sur nos visiteurs

Quelques codes Erreur de l'écran bleu de la mort (BSod)

STOP 0x00000019=BAD_POOL_ HEADER "Pool Header" invalide"

Erreur due au matériel, RAM, ou carte vidéo. Cela peut se produire après des changements de hardware/software sur le système ou l'installation d'une mise à jour de constucteur.
RESOLUTION :
Testez votre RAM pour savoir si votre probleme ne vient pas de là mais généralement c'est un Problème de RAM à 80%.

STOP 0x00000024= NTFS_FILE_SYSTEM

Erreur produite par le fichier ntfs.sys, pilote qui permet à votre ordinateur de lire et d'écrire sur les partitions NTFS. Des composants endommagés de votre disque dur (nappes SCSI ou I.D.E) peuvent également causer cette erreur.
RESOLUTION :
Bootez la machine sur le CD d'installation de Windows XP. Au message de Bienvenue, appuyez sur F10 pour lancer la console de récupération. Tapez la commande chkdsk c: /p et validez. Les fichiers NTFS seront ainsi réparés.

STOP 0x00000051= REGISTRY_ERROR

La base de registre est gravement corrompue.
RESOLUTION :
Cela résulte souvent d'un problème matériel ou d'un système de fichier endomagé.

STOP 0x00000077=KERNEL_STACK_ INPAGE_ERROR

Erreur causée par le fichier "PAGEFILE.SYS" vraisemblablement corrompu à cause d'un block défectueux, ou quand un problème de contrôleur de disque est surnenu.
RESOLUTION :
Si c'est le fichier "PAGEFILE.SYS" qui est corrompu, " AUTOCHK " tentera de le réparer et il y parvient le plus souvent. Si d'autres paramètres sont indiqués, "0xC000009C" et "0xC000016A" signalent tous les deux un mauvais block sur le disque. "0xC0000185" quant à lui rapporte un problème de terminaison ou de connectique SCSI, ou deux périphériques qui utilisent la même interruption. Allez dans la console de récupération et tentez de réparer le disque avec la commande "chkdsk c: /p /r". Pour le matériel, vérifiez votre connectique SCSI. Débranchez vos périphérique puis réinstallez les un à un pour détecter celui qui est la cause de l'erreur.
Sinon le problème peut venir aussi d’un souci matériel sur votre carte mère ou d’une barrette mémoire défectueuse. Il vous est toujours possible de désactiver le cache système dans le BIOS afin de préciser si le problème ne vient pas de la carte mère et de tester les barrettes mémoire l’une après l’autre. Note : Un virus de boot peut provoquer également cette erreur.

STOP 0x0000007A=KERNEL_DATA_ INPAGE_ERROR

Voir l'érreur précedente.

STOP 0x0000007B : INACCESSIBLE_BOOT_DEVICE

Ce problème survient la plupart du temps suite à un changement de carte mère, ou de contrôleur IDE. Une simple modification des pilotes en est parfois la cause également.
RESOLUTION :
Démarrez sur le CD de windows, comme si vous lanciez une installation classique. Arrivé au premier menu, il vous sera proposé de réparer une installation de Windows déjà existante. Validez ce choix, puis sélectionnez le mode console. Logguez vous (le mot de passe administrateur sera nécessaire). Au prompt (C:\WINNT ou C:\WINDOWS\ suivant que vous soyez sous windows 2000 ou XP), tapez : CHKDSK /P /R Validez, puis laissez windows travailler. Cette opération est relativement longue. A l'issue de celle-ci, redémarrez la machine, sauf gros problème du disque, le boot doit se passer normalement. Si le problème persiste, essayez la manipulation suivante :
Démarrez la console de récupération. En ligne de commande, tapez : "fixboot c:" Validez par "Entrée" puis tapez : "exit". Redémarrez votre ordinateur.

Stop 0x00000079 ou Stop 0x79 ou MISMATCHED_HAL

ette erreur peut suivre une mise à jour du BIOS.
RESOLUTION :
Il vous faut dans ce cas procéder à une réinstallation complète de votre système.

UN CONSEIL : NE FLASHEZ PAS VOTRE BIOS SI VOTRE CONFIGURATION FONCTIONNE CORRECTEMENT. UN FLASHAGE VOUS PERMETTRA AU MIEUX DE RÉSOUDRE DES BUGS OU AMÉLIORER UN TOUT PETIT PEU LES PERFORMANCES. LE RISQUE EST FAIBLE MAIS RÉEL.

STOP SYSTEM_THREAD_EXCEPTION_ NOT_HANDLED 0x0000007E (0xc00000005, adresse,adresse,adresse) Kbdclass.sys- address Fc7F1945 base at FC7F1000, Datestamp 3b7d82f3

Cette erreur survient à l'extinction de la machine et est provoqué par un pilote de clavier, en l'occurrence ici Logitech, "Kbdclass.sys" .
1RESOLUTION :
Installez le dernier pilote pour votre souris ou clavier Logitech ou, dans certains cas, désinstallez le programme concerné ( par Ajout/Suppression de programmes ).

STOP SYSTEM_THREAD_EXCEPTION_ NOT_HANDLED 0X0000007E (0XC0000005, 0Xxxxxxxxx, 0Xxxxxxxxx) STV680sys - Add F871a547 base at F8715000, DataStamp 3d071fa5

Se produit au redémarrage de la machine et se rapporte à un pilote qui est là clairement indiqué puisqu'il s'agit de "STV680sys".
RESOLUTION :
Lancez une recherche avec l'explorateur Windows pour trouver ce fichier. Une fois localisé, faites un clic droit dessus et accédez à ses propriétés. Soit est présent un onglet "Version", soit le chemin d’accès doit vous renseigner sur le programme ou le périphérique dont le fichier dépend. Il ne vous reste plus alors qu’à désinstaller le logiciel ou à en faire une mise à jour sur Internet. Il se peut que le simple fait de désactiver le chargement automatique du logiciel en mémoire suffise à résoudre le souci de redémarrage. Utilisez pour cela l’Editeur de configuration système.

STOP 0x0000007E usbhub.sys

Si l’utilisation de la bande passante excède le maximum autorisé par la mise à jour USB 2.0 ou le service pack 1 de Windows XP, ce type d’erreur survient au démarrage.
RESOLUTION :
Une solution de contournement consiste à répartir vos périphériques USB entre les différents ports disponibles ou de les brancher alternativement en fonction de l’utilisation que vous en ferez. Sinon, installez ce correctif Microsoft : "KB822308".

STOP: 0x0000007E Ndis.sys

Procédez à une mise à jour de votre pilote de carte graphique.

Stop 0x0000007F ou Stop 0x7F ou UNEXPECTED_KERNEL_MODE_TRAP

Stop 0x7F indique un problème matériel, un CPU overclocké (Par exemple, si le message apparaît durant le Setup) un problème de carte mère. Mais avant tout, vérifiez si une application, pilote de périphériques ou services ne causent pas cette erreur.
RESOLUTION :
Dans un premier temps, supprimez les applications récemment installées. Si l'erreur se produit en début d’installation, l’écran de bienvenue apparait puis que l’ordinateur s’arrête ou que vous restiez sur un petit tiret clignotant, cela peut survenir sur certains types de CPU chauffant de manière trop importante. Il y a une manière assez simple de s’en rendre compte. Il suffit de baisser la fréquence externe du CPU de manière à l'"underclocker". Une autre solution consiste à appuyer sur la touche F7 quand le système vous propose dans la phase texte de tapoter sur la touche F6. Dès lors, votre ordinateur n’utilisera pas la couche d’abstraction matérielle à interface de configuration et d’énergie avancée (ACPI). Note : Une mise à jour de votre BIOS peut s’avérer nécessaire. Le problème se pose sur de nombreux modèles de cartes mères MSI K7T. Procurez vous le Patch MSI.

STOP 0x0000007F UNEXPECTED_KERNEL_MODE_TRAP

Si la première adresse listée est "0x00000008" essayez de procéder à une mise à jour du Bios de votre ordinateur. Sinon, c'est clairement un souci de microprocesseur, et là ...

STOP 0x1000008E In EMUPIA2K.SYS "KERNEL_MODE_EXCEPTION_NOT_HANDLED_M

C’est un pilote de périphérique non compatible. Voir également :

STOP 0x00000050 PAGE_FAULT_IN_NON_PAGED_ AREA - stop 0x0000008E (0x00000005,adresse,adresse, adresse) win32k.sys adress BF873A32 base at BF800000, datestamp 3d6de5e5

Un cas d’incompatibilité entre la carte mère et le CPU. Une mise à jour du Bios a suffit.

STOP : 0x0000008E Win 32k.sys Contenu du rapport d’erreurs

Il faut faire une mise à jour des pilotes de carte vidéo et carte son (Ce sont les pilotes certifiés Microsoft qui provoquent cette erreur !).

Un problème a été détecté et Windows a été arrêté afin de prévenir tout dommage sur votre ordinateur. PFN-LIST-CORRUPT Informations techniques : Stop : 0x00008E (0XC0000005, 0xXXXXXXX, 0xXXXXXXX, 0x00000000) Win32k.sys - adress BFXXXXXX Base at BF800000 DateStamp XXXXXXXX Début du vidage de la mémoire physique. Vidage de la mémoire physique vers le disque

C’est un problème de barrette mémoire. Procédez au remplacement.

Créer régulièrement des sauvegardes ne coûte rien, juste un peu de temps ... mais cela peut rapporter gros !