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 :

bug valgrind peano


Sujet :

C

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 421
    Par défaut bug valgrind peano
    Bonjour à tous,

    J'ai écrits un programme qui permet de calculer la clé de péano d'un tableau.
    Pour être plus explicite, j'exprime les indices de ce tableau en base 2 (i et j). Puis j’intervertis les bits des indices (clé de péano). Et enfin je trie le résultat et je l'exprime sous forme de file FIFO.

    Mon souci c'est lorsque je lance mon exécutable dans valgrind j'ai une erreur que je n'arrive pas à débugger.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ==7030== Invalid read of size 1
    ==7030==    at 0x40109C: main (peano.c:223)
    ==7030==  Address 0x54f59a2 is 0 bytes after a block of size 2 alloc'd
    ==7030==    at 0x4C2B6CD: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==7030==    by 0x400934: copie_voxel (peano.c:17)
    ==7030==    by 0x40077E: fifo_add (fifo.c:34)
    ==7030==    by 0x400F86: fifo2tab_peano (peano.c:201)
    ==7030==    by 0x401057: main (peano.c:221)
    Pouvez-vous m'aidez svp ?

  2. #2
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Bonjour,

    As-tu essayé d'afficher voxel.size + 1 à la ligne 16 de peano.c?

    Sinon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for(i = 0; i < voxel.size + 2; ++i)
    		copie.cle[i] = voxel.cle[i];
    copie.cle[voxel.size + 1] n'existe pas, les tableaux vont de 0 à size - 1 (donc voxel.size ici).

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 421
    Par défaut
    Salut Neckara,

    Oui j'y ai pensé mais le souci c'est qu'en faisant ceci j'ai un segfault :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for(i = 0; i < voxel.size + 1; ++i)
    		copie.cle[i] = voxel.cle[i];
    Ce qui est bizarre.
    A la fin des résultats que j'obtiens le mots fin devient fi.
    le problème est bien là ou tu as mentionné, mais j'ai pas encore trouvé la cause du bug.

  4. #4
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Essaye de regarder quelle ligne plante et vérifie les différentes valeurs de tes variables régulièrement pour voir où tu as des incohérences.


    Est-ce que tu as bien prévu le '\0' à la fin des chaînes?
    Est-ce que voxel.cle[voxel.size] existe?

    Après je n'ai pas trop le temps de regarder tes sources, j'essayerais de revoir ça ce week-end.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 421
    Par défaut
    j'ai trouvé l'erreur en faite pour le dernier maillon j'ai mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     fin.size = 0;
    alors que normalement fin.size = 3;
    mais j'ai trouvé une autre erreur :
    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
     
     ==15091== HEAP SUMMARY:
    ==15091==     in use at exit: 0 bytes in 0 blocks
    ==15091==   total heap usage: 503 allocs, 503 frees, 6,828 bytes allocated
    ==15091== 
    ==15091== All heap blocks were freed -- no leaks are possible
    ==15091== 
    ==15091== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 2 from 2)
    ==15091== 
    ==15091== 1 errors in context 1 of 1:
    ==15091== Invalid write of size 8
    ==15091==    at 0x40104F: fifo2tab_peano (peano.c:205)
    ==15091==    by 0x4010F5: main (peano.c:222)
    ==15091==  Address 0x54eb680 is 0 bytes after a block of size 1,600 alloc'd
    ==15091==    at 0x4C2B6CD: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==15091==    by 0x4010AF: main (peano.c:218)
    ==15091== 
    --15091-- 
    --15091-- used_suppression:      2 dl-hack3-cond-1
    ==15091== 
    ==15091== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 2 from 2)
    je vais la tracké lol.

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/03/2003, 16h37
  2. Bug new build ??
    Par rgarnier dans le forum XMLRAD
    Réponses: 4
    Dernier message: 31/01/2003, 10h30

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