Comment obtenir une aide lors d'un blocage aléatoire sur une station particulière.
Une station de travail sous Windows a généralement entre 50 et 100 processus qui cohabitent et partagent les ressources (processeurs, RAM, disques...). La sécurité accrue des versions actuelles de Windows permet dans le cas général une cohabitation efficace de tous les processus et services lancés. En effet notamment grâce au multitâche préemptif, à la signature des pilotes, au contrôle des installations involontaires par l'UAC (...), le système assure la bonne marche des applications.
Cependant aucune application n'est à l'abri d'une machine "récalcitrante". Un traitement va s'exécuter sur des centaines de stations, mais sur une station il sera bloqué par un message d'arrêt de Windows "Ce programme va être arrêté...". Plus complexe encore, l'application va fonctionner un temps, puis sans aucun changement apparent va s'interrompre aléatoirement, ou définitivement, avec l'affichage d'une erreur.
Tant qu'il s'agit d'un déclenchement du mécanisme de sécurité du WLangage, il reste possible de rechercher une solution à l'aide du dump de débogage, et d'avoir un scénario de reproduction. Mais lorsqu'il s'agit d'un arrêt par Windows "Ce programme va être arrêté...", "L'application a cessé de fonctionner ... " (il s'agit de GPF - General Protection Fault), les possibilités de recherche s'amenuisent. De plus dans pareil cas :
- il est le plus souvent impossible de parvenir à reproduire le cas sur le poste de développement, malgré la récupération des données de production, et l'application scrupuleuse des actions de l'utilisateur.
- les investigations de base en cas de défaut de configuration ne donnent aucun résultat :
- réinstallation de l'application,
- vérification de l'installation de tous les correctifs Windows update,
- mise à jour des pilotes de périphériques à partir de ceux fournis par les fabricants,
- vérification disque, réseau, RAM,
- retour arrière sur la configuration avec un point de restauration ...
Bien que le Support Technique Gratuit ne puisse pas à distance et sans reproduction découvrir la cause d'une défaillance ponctuelle, il y a cependant une solution pour obtenir au moins une orientation recherches.
En effet Windows peut donner en cas d'arrêt des informations de débogage. Il faut pour cela avoir recours à l'utilitaire "windbg". Voici le processus à appliquer :
- installer les outils de debug de Windows en 32 bits ou en 64 bits suivant le mode de compilation de l'application (une mise à jour du Framework .NET peut être nécessaire),
- lancer le programme dont l'exécution est interrompue anormalement, en le plaçant dans une situation précédent le blocage (ne pas reproduire le blocage à ce stade),
- lancer l'utilitaire Windbg.exe par le menu "Démarrer" de Windows (c:\Program Files\Debugging Tools for Windows (x86)\windbg.exe ou suivant le cas c:\Program Files\Debugging Tools for Windows (x64)\windbg.exe),
- dans l'utilitaire, faire F6 et sélectionner l'application précédemment lancée, valider :
- l'outil de débogage de Microsoft est alors "attaché" au processus,
- saisir dans le champ en bas de l'utilitaire "sxe av" puis valider,
- pour vérification, saisir ensuite "sx" puis valider. La ligne "av access violation - break - not handled" sera alors visible :
- - faire F5, qui va afficher la ligne d'information "*BUSY* Debuggee is running..."
- provoquer le blocage dans l'application,
- l'utilitaire affiche une information de la forme "Access violation - code C00000005",
- saisir dans le champ en bas la commande de sauvegarde : ".dump /ma <NomFichierDump>.dmp"
- l'utilitaire va créer le fichier spécifié et afficher en retour "Creating c:\temp\dump_mon_projet - mini user dump / Dump successfully written".
Le DUMP obtenu est utilisable par notre équipe Développement. Il permet de voir les modules du Framework en cours d'exécution, les appels au système qui n'ont pas pu aboutir. Cela permet donc dans la majeure partie des cas d'orienter les recherches.
Pour faire expertiser ce DUMP, il suffit de le déposer sur un serveur (Web, FTP, partage), et d'utiliser l'assistant accessible par le menu "? ... Requête au Support Technique" de WINDEV. Il faut préciser au travers de l'assistant toutes les informations relatives à la configuration à partir de laquelle le DUMP a été créé, et l'emplacement du DUMP pour son téléchargement.
Source: le blog du ST