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

Bibliothèque standard C Discussion :

error : glibc detected


Sujet :

Bibliothèque standard C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 42
    Par défaut error : glibc detected
    Salut à tous,

    j'ai une erreur lors de l'éxécution de mon programme et j'ai déjà tout fait pour la trouver mais rien n'y fait je suis bloqué...

    Voici la partie de code "foireuse" :
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    printf("Correspondance : %d\n",numberPointCoresp);
    Container* tmpModel = NULL;
    printf("ici1.1111555\n");
    tmpModel = malloc(sizeof(Container));
    printf("ici1.1111\n");
    for(int a = 0;a < NBR_POINT;a++) 
    	tmpModel->inliers[a] = 0;
     
    printf("ici1.1\n");

    et voici l'erreur lors de l'exécution :
    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
    21
    22
    23
    24
    25
    Correspondance : 669
    ici1.1111555
    *** glibc detected *** ./Vision: corrupted double-linked list: 0x086e7b80 ***
    ======= Backtrace: =========
    /lib/tls/i686/cmov/libc.so.6[0xb7cd03f9]
    /lib/tls/i686/cmov/libc.so.6[0xb7cd21bd]
    /lib/tls/i686/cmov/libc.so.6(__libc_malloc+0x90)[0xb7cd3fc0]
    ./Vision[0x8049237]
    ./Vision[0x804b649]
    /lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xe0)[0xb7c7e050]
    ./Vision[0x8048b31]
    ======= Memory map: ========
    08048000-0804d000 r-xp 00000000 08:04 102659     /home/philippe/Desktop/Vision_Harris_Homographie/Debug/Vision
    0804d000-0804e000 rw-p 00004000 08:04 102659     /home/philippe/Desktop/Vision_Harris_Homographie/Debug/Vision
    0804e000-0a3da000 rw-p 0804e000 00:00 0          [heap]
    b1147000-b65f0000 rw-p b1147000 00:00 0 
    b6700000-b6721000 rw-p b6700000 00:00 0 
    b6721000-b6800000 ---p b6721000 00:00 0 
    b6896000-b68e2000 rw-p b6896000 00:00 0 
    b6a10000-b6a2f000 r--p 00000000 08:01 410131     /usr/share/locale-langpack/fr/LC_MESSAGES/libc.mo
    b6a2f000-b6a41000 r-xp 00000000 08:01 131155     /usr/lib/gtk-2.0/2.10.0/engines/libubuntulooks.so
    b6a41000-b6a42000 rw-p 00011000 08:01 131155     /usr/lib/gtk-2.0/2.10.0/engines/libubuntulooks.so
    b6a42000-b6a67000 r--p 00000000 08:01 407464     /usr/share/locale-langpack/fr/LC_MESSAGES/gtk20-properties.mo
    b6a67000-b6a70000 r-xp 00000000 08:01 1777218    /lib/tls/i686/cmov/libnss_files
    ...
    Je n'ai pas affiché toute la trace, si vous estimez qu'elle pourrait vous être utile pour répondre à ma question n'hésitez pas à me la demander.

    J'espère que vous allez pouvoir me debloquer...

    Un tout grand merci d'avance,

    Philippe

  2. #2
    Membre émérite Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Par défaut
    Comment est déclarée ta structure container ?

  3. #3
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Par défaut
    Salut,

    ne serait-ce pas :
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    tmpModel = malloc(sizeof(Container));

    Il faut rajouter une *, ce qui donne :
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    tmpModel = malloc(sizeof(Container*));

    Non?
    C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

    Installation de Code::Blocks sous Debian à partir de Nightly Builds

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 42
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    typedef struct Container_t {
    	int inliers[NBR_POINT];
    	int nbrInliers;
    	CvMat* homography;
    	struct Container_t* next;
    } Container;
    Ce qui est bizarre c'est que le code fonctionne dans une boucle...donc cela fonctionne bien puis à un moment y'a une erreur sur ce code...

    Buchs : je ne pense pas que cela soit ça

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    865
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 865
    Par défaut
    Ce code ne me paraît pas suffisant pour comprendre ce qui se passe.
    Pourrais-tu faire un programme minimaliste ayant le même problème ?

    printf étant bufferisé, tu n'es pas sûr d'afficher le dernier message. Après chacun de tes printf, flushe stdout (fflush (stdout); ) ou compile en debug et utilise un debugger pour réellement savoir où ça plante.

    Au passage, il vaut mieux faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     tmpModel = malloc(sizeof *tmpModel);
    Tu pourras changer le type de tmpModel sans surprise par la suite.

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par aoyou Voir le message
    printf étant bufferisé, tu n'es pas sûr d'afficher le dernier message. Après chacun de tes printf, flushe stdout (fflush (stdout); ) ou compile en debug et utilise un debugger pour réellement savoir où ça plante.
    ou plus simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fprintf ( stderr, "....");
    qui est synchrone..... et qui est fait pour...

  7. #7
    Membre extrêmement actif

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par défaut
    [QUOTE=Ph.denis;2963033]Salut à tous,


    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    printf("Correspondance : %d\n",numberPointCoresp);
    Container* tmpModel = NULL;
    printf("ici1.1111555\n");
    tmpModel = malloc(sizeof(Container));
    printf("ici1.1111\n");
    for(int a = 0;a < NBR_POINT;a++) 
    	tmpModel->inliers[a] = 0;
     
    printf("ici1.1\n");

    si inliers est un membre de type pointeur il faut faire également l'allocation. la question est comment déclares-tu inliers


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    struct Container{
      int *inliers;
    //ou
    int inliers[NBR_POINT];
    };

  8. #8
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Ph.denis Voir le message
    Voici la partie de code "foireuse" :
    Ton code est incomplet et ne peut être testé. Ceci fonctionne (merci pour les 15 minutes de rétro-ingéniérie...) :
    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
    21
    22
    23
    24
    25
    26
    27
    28
     
    #include <stdio.h>
    #include <stdlib.h>
     
    #define NBR_POINT 10
     
    typedef struct
    {
       int inliers[NBR_POINT];
    }
    Container;
     
    int main (void)
    {
       Container *tmpModel = NULL;
       printf ("%s:%d\n", __FILE__, __LINE__);
       tmpModel = malloc (sizeof (Container));
       printf ("%s:%d\n", __FILE__, __LINE__);
       {
          int a;
          for (a = 0; a < NBR_POINT; a++)
          {
             tmpModel->inliers[a] = 0;
          }
       }
       printf ("%s:%d\n", __FILE__, __LINE__);
       return 0;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    main.c:15
    main.c:17
    main.c:25
     
    Press ENTER to continue.

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 613
    Par défaut
    Citation Envoyé par Emmanuel Delahaye Voir le message
    Ton code est incomplet et ne peut être testé. Ceci fonctionne (merci pour les 15 minutes de rétro-ingéniérie...) :
    le PO a résolut son problème depuis le 19/02/2008

  10. #10
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par pasdeface Voir le message
    le PO a résolut son problème depuis le 19/02/2008
    Oui, mais visiblement, quelqu'un (inh40) a besoin de précision...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. erreur glibc detected double free or corruption.
    Par Screwt-K dans le forum C++
    Réponses: 1
    Dernier message: 02/07/2007, 16h46
  2. glibc detected.. realloc pbm
    Par djynwk dans le forum C
    Réponses: 3
    Dernier message: 28/04/2007, 19h13
  3. * glibc detected * free(): invalid pointer
    Par ViRouF dans le forum C
    Réponses: 4
    Dernier message: 28/03/2007, 17h10
  4. [Debutant]*** glibc detected *** free()
    Par Treuze dans le forum Débuter
    Réponses: 3
    Dernier message: 17/03/2006, 15h34
  5. Réponses: 5
    Dernier message: 04/11/2005, 18h59

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