Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3187 connectés 

  FORUM HardWare.fr
  Programmation
  API Win32

  [Résolu] Gestion des plantages

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Résolu] Gestion des plantages

n°1920921
_wlof_
Posté le 03-09-2009 à 14:57:17  profilanswer
 

Bonjour à tous,
 
J'ai un problème un peu spécial, que je n'ai pas la moindre idée de comment résoudre...
 
Je travaille sur une application assez complexe, composée d'un tas de threads différents. Parfois, cette application plante (et oui, ça arrive). Quand c'est le cas, j'obtiens la fenêtre Windows de plantage, avec l'adresse mémoire concernée, etc.
 
Le problème, c'est quand tant que cette fenêtre Windows n'est pas fermée, tous les autres threads de l'application continuent de fonctionner normalement. C'est un problème car cette application effectue un travail critique. En cas de plantage, il faut la redémarrer.
 
Donc, questions :
1. Est-ce que c'est normal que tant qu'on ne ferme pas la fenêtre Windows de plantage, le reste de mon application continue de tourner ?
2a. Si non, à quoi est-ce que ça pourrait être dû ?
2b. Si oui, comment faire pour détecter le plantage / faire planter l'application complètement ?
 
Help me Obi-Wan Kenobi, parce que là je pédale dans la semoule !

Message cité 1 fois
Message édité par _wlof_ le 03-09-2009 à 16:20:14
mood
Publicité
Posté le 03-09-2009 à 14:57:17  profilanswer
 

n°1920930
tpierron
Posté le 03-09-2009 à 15:20:53  profilanswer
 

_wlof_ a écrit :

1. Est-ce que c'est normal que tant qu'on ne ferme pas la fenêtre Windows de plantage, le reste de mon application continue de tourner ?
2a. Si non, à quoi est-ce que ça pourrait être dû ?
2b. Si oui, comment faire pour détecter le plantage / faire planter l'application complètement ?


 
1. Oui, c'est tout à fait normal. Lorsque ton thread execute une mauvaise instruction, l'exception CPU est capturée par l'OS qui t'affiche le dialogue, sans déranger les autres threads. Ce n'est que lorsque tu fermes le dialogue que le processus est détruit.
2. Deux façons d'empécher ça :

  • Désactiver le rapport d'erreur en cas de crash (http://answers.google.com/answers/threadview/id/433370.html). C'est un peu violent dans la mesure où plus aucun rapport ne sera généré.
  • Une autre méthode que j'utilise avec MinGW (il doit certainement y avoir la même chose pour Visual Studio ou autre), c'est d'intercepter les exceptions CPU avant Windows. Dr MinGW fournit une dll (exchndl.dll), qui si elle est chargée au démarrage du programme (LoadLibrary("exchndl.dll" )), va intercepter les exceptions, te créer un fichier texte .RPT au niveau de l'application et faire un stacktrace, puis terminer le programme. Edit: ça ne fonctionne qu'avec MinGW, car la dll ne sait lire que les blocs de debug de gcc.


Message édité par tpierron le 03-09-2009 à 15:22:47
n°1920939
_wlof_
Posté le 03-09-2009 à 15:46:35  profilanswer
 

Merci de la réponse. En fait entre temps j'ai découvert la fonction SetUnhandledExceptionFilter() qui permet de définir un comportement spécifique au lieu d'appeler le "debugger" (le générateur de rapport d'erreur) Windows standard.
 
Je suis encore en train de tester, mais ça a l'air de me permettre de faire exactement ce que je veux : générer un rapport (via MiniDumpWriteDump) et tuer l'application.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  API Win32

  [Résolu] Gestion des plantages

 

Sujets relatifs
Produit matriciel avec Mysql [Résolu][Résolu] Fuite mémoire, que libérer ?
[RESOLU]Arrondi à partir d'une chaine de caractère[résolu][Velocity & Hudson] Templates non copiés dans le classpath
SDL_GetRGB (résolu)Gestion des sauts de pages en VBA !
[Résolu] Génération flux RSS - Format de date[Résolu] [BATCH] Tracer la commande delete
[Algo][Résolu]Générer tous les accords.sendAndLoad pas de retour sous flash {résolu}
Plus de sujets relatifs à : [Résolu] Gestion des plantages


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR