Détecter le plantage d'une application.

Signaler
Messages postés
18
Date d'inscription
lundi 13 décembre 2004
Statut
Membre
Dernière intervention
21 décembre 2007
-
Messages postés
18
Date d'inscription
lundi 13 décembre 2004
Statut
Membre
Dernière intervention
21 décembre 2007
-
Bonjour,

J'ai une application, en l'ocurrence Acrobat Distiller, qui tourne sur un
poste en continu (session toujours ouverte). J'ai un service windows qui crée
des fichiers PostScript et qui les dépose dans des répertoires que le
Distiller parcoure et les transforme en pdf.

Le problème est que j'ai un exemple de fichier PostScript qui fait planter
complètement Acrobat Distiller. J'ai l'erreur standard :

"Acrobat Distiller a rencontré un problème et doit fermer. Nous vous prions
de nous excuser pour le désagrément encouru.
Si vous étiez...."
+ un bouton "Débogage" + un bouton "Envoyer le rapport d'erreurs" + un
bouton "Ne pas envoyer"

Est-ce que lorsqu'il y a ce type d'erreur commune à toutes applications
windows, on peut la détecter ? En gros, je voudrais que mon service puisse
scruter si ce type d'erreur a été détecté pour Acrobat Distiller et après la
gestion du plantage étant manuelle, envoyer un e-mail à l'administrateur pour
relancer Acrobat Distiller ( ça, aucun pb).

Merci d'avance.

A+

5 réponses

Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
74
Je pense qu'il serait plus simple de detecter si le process distiller est lancé....
et de le lancer, le cas échéant...

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
69
Date d'inscription
jeudi 6 novembre 2003
Statut
Membre
Dernière intervention
3 octobre 2006

Je crois que Renfield à raison tu aura du mal à détecter à distance si  Acrobat Distiller est planté. Par contre tu peux faire un petit programme à installer sur le serveur qui lance l'appli et qui boucle en continue jusqu'à la fin de l'appli pour verifier si son code exit est correct. Si c'est pas le cas il relance l'application est le tour est joué. J'avais donné un exemple lors d'un forum précédent pour le même type de problème, voici son adresse:

 http://www.vbfrance.com/infomsg_DETECTER-ERREUR_809989.aspx#7
Messages postés
18
Date d'inscription
lundi 13 décembre 2004
Statut
Membre
Dernière intervention
21 décembre 2007

D'abord, merci pour vos réponses.

Le problème de ton exemple c'est qu'il faut attendre le code exit. Or lors du plantage, tu n'as que le code exit que lorsque tu appuies sur "Ne pas envoyer" de la boîte d'erreur classique windows, pas avant.

Ce bout de code par exemple (associé à un simple bouton dans une appli à part) :
Dim

prc
As System.Diagnostics.Process() = Process.GetProcessesByName("acrodist")

If prc.Length > 0
ThenMsgBox(prc(0).Responding())

End
If

me permet de vérifier l'état du processus.

Tant que le processus Distiller ne plante pas (le début de la transformation PostScript vers Pdf), il m'affiche True quand je clique sur le bouton. Dès que le processus plante( boîte de dialogue windows qui apparaît ), j'appuie sur le bouton et là , 0 réponse..... En gros, il faut que j'appuie sur "Ne pas envoyer", par exemple, pour que par enchantement tout ce débloque et mon appli de test me renvoie False.......En gros, le genre de réponse qui arrive après la bataille :-(

J'ai essayé pas mal de chose mais en faite à chaque fois il faut que j'appuie sur cette boîte de dialogue pour que j'ai une réponse.
Est ce que justement la solution n'est pas là ???? ( un thread qui fait la demande de réponse au processus et qui est censé la renvoyer puis dans le thread principal un timer pour attendre et killer le process s'il ne répond pas au bout d'un certain temps.....)
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
74
tu dois pouvoir tester su elle te répond, ou pas, et faire un Terminate du process, si il ne répond pas

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
18
Date d'inscription
lundi 13 décembre 2004
Statut
Membre
Dernière intervention
21 décembre 2007

J'ai trouvé un autre moyen:


Visiblement, lorsque le Distiller se plante complètement, une trace est rajoutée dans le Journal d'Evénements.


Donc, plus qu'à scruter le journal pour savoir si l'application s'est plantée.


En tout cas, merci de vous être intéressé à mon problème.


A+