IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

mon prog n'arrive plus à appeller des programmes externes au bout de plusieurs heures


Sujet :

Linux

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Points : 1 174
    Points
    1 174
    Par défaut mon prog n'arrive plus à appeller des programmes externes au bout de plusieurs heures
    j'ai une application qui tourne sous Debian, faites en C++. Cette appli utilise de manière intensive ImageMagick ( qui utilise ghostscript en delegate ) et Pdftk en commande externe.

    Au bout d'environ 20h de fonctionnement continue, ImageMagick n'arrive plus à lancer ghostscript, et le programme ne peut plus lancer pdftk.

    Est-ce que quelqu'un aurait une idée de ce qui peut se passer ( fuite d'handle? mais d'après nos tests ce ne serait pas le cas )

    merci.

  2. #2
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    peut être trop d'appels et pas assez de fermetures ou mauvais contrôle des processus fils mauvaise utilisation de fork programme mal écrit qui ne teste pas la mémoire ou le realloc pas au bon moment ?

    bref des milliers de cas possible.

    sans voir ton code personne ne pourra jamais répondre à ta question de façon complète.

    ou au moins les bouts de codes qui font les appels
    et le test de valeur retour

    une petite description de l'architecture de ton programme serait aussi bienvenue.

    Si ton programme ne le fait pas déja penses au minimum à :
    Ajouter les éléments nécessaires à ton programme pour compenser le risque de crash d'une des application appelée
    en utilisant les signaux systèmes et les codes retour par exemple et stopper les jobs qui répondent plus et reprendre l'exécution de l'appli au fichier en cours de traitement.

    en programmation système donc la seule vraie programmation je vais me faire taper dessus là on part toujours du cas le plus défavorable possible donc de les cas d'erreur possible à imaginer pour écrire son programme y compris les erreurs et autres plantages liés aux applications externes....

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Points : 1 174
    Points
    1 174
    Par défaut
    ok je cherche juste des pistes, je vais pas vous demander de debugger le code, c'est mon boulot

    Pour ImageMagick par exemple, on utilise Magick++, tous les appels à Ghostscript sont dans la librairie. Le code ça ressemble à ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Magick::Image image;
    image.load( pdfFileName );
    ça va pas vous aider.

    Et on utilise aussi l'OCR open source tesseract, et là aussi il faut que je vérifie les appels systemes qu'il peut faire, parce que ce truc est une vraie merde à utiliser en librairie, on a passé notre temps à corriger des fuites mémoires et autres bugs.

    Donc je cherche juste des avis extérieurs pour les causes éventuelles.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Points : 1 174
    Points
    1 174
    Par défaut
    En fait je me suis mal exprimé (dans mon titre en tout cas), le programme ne crash pas, je récupère bien les erreurs comme il faut et il sort proprement. Ce n'est pas là le problème.

    Non ce que je voudrais comprendre c'est qu'est ce qui peut faire qu'au bout d'un certain temps, le programme n'arrive plus à appeller les programmes externes?

    Un fork? un appel à execlp? un appel à system?

  5. #5
    Membre éclairé
    Avatar de D[r]eadLock
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    504
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 504
    Points : 750
    Points
    750
    Par défaut
    Tu peux essayer strace (qui affiche les appels système, avec les paramètres et les valeurs de retour).
    Sinon tu peux peut-être monitorer dans /proc/<ton_pid>/* et voir s'il n'y a pas des trucs bizarre, dans status, ou maps (
    http://http://okki666.free.fr/docmas...s/linux070.htm)

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Points : 1 174
    Points
    1 174
    Par défaut
    ok merci pour ces pistes

Discussions similaires

  1. Réponses: 7
    Dernier message: 18/10/2010, 16h49
  2. Probleme dans l'appel des programmes systeme
    Par khalid_kha dans le forum Langage
    Réponses: 1
    Dernier message: 14/08/2008, 18h44
  3. Réponses: 2
    Dernier message: 20/07/2008, 10h41
  4. Réponses: 6
    Dernier message: 22/02/2008, 12h04
  5. appeler des programmes
    Par chti_juanito dans le forum Windows
    Réponses: 11
    Dernier message: 27/07/2007, 10h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo