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

C++ Discussion :

pile corrompue d�s le lancement du programme


Sujet :

C++

  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    162
    D�tails du profil
    Informations personnelles :
    �ge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2002
    Messages : 162
    Par d�faut pile corrompue d�s le lancement du programme
    Bonjour,

    Je travaille sous linux avec g++. J'utilise des biblioth�ques qui m'imposent de compiler avec g++-3.3 (en utilisant la v4 j'ai plein de probl�mes de liens, �a ne doit pas utiliser la m�me libstdc++ que les susdites biblioth�ques).

    Avec la v3 la compilation et les liens passent bien, mais �a plante � l'ex�cution. Voici la pile d'appels sortie par gdb :

    #0 0xb7d337a7 in raise () from /lib/tls/libc.so.6
    #1 0xb7d3504b in abort () from /lib/tls/libc.so.6
    #2 0xb7f03da7 in __cxa_call_unexpected () from /usr/lib/libstdc++.so.5
    #3 0xb7f03de4 in std::terminate () from /usr/lib/libstdc++.so.5
    #4 0xb7f03fbc in __cxa_rethrow () from /usr/lib/libstdc++.so.5
    #5 0x0808fac6 in cplex (this=0xbfb5d980, p=@0x8747448, sols=@0x0) at cplex.tpp:25
    #6 0x0808edc2 in solve (p=@0x0, save=false) at code/main.cpp:65
    #7 0x0808eead in read_and_solve (is=@0x0, save=false) at code/main.cpp:82
    #8 0x0808f6cd in main (argc=0, argv=0x0) at code/main.cpp:141
    Mon programme prend un argument, donc je suis �tonn� des valeurs des param�tres de la fonction main(). De m�me, le param�tre is de read_and_solve() est un std::ifstream allou� sur la pile, il ne devrait pas �tre NULL.

    Je ne sais pas vers o� me diriger, auriez-vous des conseils ?

    merci

  2. #2
    R�dacteur

    Avatar de Matthieu Brucher
    Profil pro
    D�veloppeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    D�tails du profil
    Informations personnelles :
    �ge : 43
    Localisation : France, Pyr�n�es Atlantiques (Aquitaine)

    Informations professionnelles :
    Activit� : D�veloppeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par d�faut
    Ex�cution pas � pas depuis le d�part et v�rification � chaque �tape de la validit� des arguments et de la pile, la meilleure solution, sans doute.

  3. #3
    Membre confirm�
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    162
    D�tails du profil
    Informations personnelles :
    �ge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2002
    Messages : 162
    Par d�faut
    �a s'annonce mal, je mets un point d'arr�t d�s le d�but, et �a donne �a :

    Breakpoint 1, main (argc=-1079403884, argv=0xbfa99a94) at code/main.cpp:131
    131 {
    Notez la valeur de argc. Pour info, le code du main est
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    int main(int argc, char* argv[])
    {
      config cfg;
     
      if ( parse_args( argc, argv, cfg ) )
        {
          if ( cfg.file_name == NULL )
            read_and_solve( std::cin, cfg.save );
          else
            {
              std::ifstream f(cfg.file_name);
              read_and_solve( f, cfg.save );
              f.close();
            }
     
          return 0;
        }
      else
        return 1;
    } // main
    Je continue dans le prog avec des step :
    (gdb) step
    134 if ( parse_args( argc, argv, cfg ) )
    (gdb) step
    131 {
    Vous avez vu ? au lieu d'entrer dans la m�thode parse_args(), on est � nouveau � l'entr�e du main.

    Ca arrive trois fois, ensuite la m�thode est vraiment appel�e et argc se retrouve avec la bonne valeur.

    Je n'y comprends pas grand chose.

  4. #4
    Expert confirm�

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par d�faut
    Je pense que tu devrais chercher l'erreur ailleurs : probl�me de link, de version de lib, ...

  5. #5
    Membre confirm�
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    162
    D�tails du profil
    Informations personnelles :
    �ge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2002
    Messages : 162
    Par d�faut
    Citation Envoy� par Aurelien.Regat-Barrel
    Je pense que tu devrais chercher l'erreur ailleurs : probl�me de link, de version de lib, ...
    Ouaip, �a vient d'une des biblioth�ques. Une des deux que je suis oblig� de mettre simultan�ment.

    Pour une raison que j'ignore, les exemples fournis avec les biblioth�ques fonctionnent tr�s bien. Je vais me pencher l� dessus.

    Merci

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [TP7] Problème de lancement du programme
    Par i_smiler dans le forum Turbo Pascal
    R�ponses: 4
    Dernier message: 30/04/2006, 07h52
  2. Cr�er un object au premier lancement du programme ?
    Par david06600 dans le forum Langage
    R�ponses: 1
    Dernier message: 01/03/2006, 12h04
  3. R�ponses: 1
    Dernier message: 30/11/2005, 23h14
  4. Delphi 2005 Indy 9 Erreur au lancement du programme
    Par Houben Jacques dans le forum Web & r�seau
    R�ponses: 4
    Dernier message: 08/11/2005, 12h05
  5. [DCOM] Acc�s refus� au lancement du programme � distance
    Par raoulmania dans le forum Web & r�seau
    R�ponses: 7
    Dernier message: 22/06/2005, 13h01

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