Partage
  • Partager sur Facebook
  • Partager sur Twitter

Valgrind - Manque de précision sur le memory leak

bash Segfault segmentation fault (core dumped)

    15 juin 2020 à 20:02:59

    Bonjour,

    J'ai fait un programme en bash, une sorte de simulateur pour effectuer des combats (sur base de caractéristiques et de jets de dés, comme un jeu de rôle sur table) entre deux profils et afficher les moyennes de dégâts donnés, esquivés, parés, combien de victoires à l'un ou à l'autre, etc.

    Ce combat s'emboîte à coup de fonctions qui s'emboîtent ; fonction joueur 1 toucher ou rater => fonction calcul dégâts => fonction retirer des PV => fonction joueur 2 toucher ou rater, etc.

    Et j'en ai une dernière qui réinitialise la vie et les carac autant de fois que je le veux et qui lance un nouveau combat selon les mêmes règles. 

    Quand je la paramètre à 1, 50 (pour cinquante simulations), ou cent, pas de souci. Mais dès que j'approche les 200, je finis toujours sur un : 

    Segfault segmentation fault (core dumped)

    Etant donné que c'est du bash, je ne pense pas avoir de problème de pointeur ou autre, juste que le code doit leak de la mémoire par-ci par-là au fur et à mesure. 50 simu, ok, 200, à force de loop, trop de pertes, j'imagine. Donc j'ai tenté de lancer Valgrind avec un --leak-check=full. Mais là où sur internet, le résultat de Valgrind affiche toujours un petit 

    ==30169==    by 0x40106B9: call_init.part.0 (dl-init.c:72)
    ==30169==    by 0x40107CA: call_init (dl-init.c:30)
    ==30169==    by 0x40107CA: _dl_init (dl-init.c:120)

     Qui indique qu'il y a un souci à la ligne 72 ou 30 ou 120, je n'ai rien de ce côté-là. Je vous envoie ce que j'ai :

    ==22231==
    ==22231== HEAP SUMMARY:
    ==22231==     in use at exit: 435,013 bytes in 11,521 blocks
    ==22231==   total heap usage: 35,026 allocs, 23,505 frees, 1,030,896 bytes allocated
    ==22231==
    ==22231== 8 bytes in 1 blocks are definitely lost in loss record 135 of 2,197
    ==22231==    at 0x483B7F3: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==22231==    by 0x198533: xmalloc (in /usr/bin/bash)
    ==22231==    by 0x1919AE: set_default_locale (in /usr/bin/bash)
    ==22231==    by 0x136C8A: main (in /usr/bin/bash)
    ==22231==
    ==22231== 56 (32 direct, 24 indirect) bytes in 1 blocks are definitely lost in loss record 1,158 of 2,197
    ==22231==    at 0x483B7F3: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==22231==    by 0x198533: xmalloc (in /usr/bin/bash)
    ==22231==    by 0x148A6F: make_bare_simple_command (in /usr/bin/bash)
    ==22231==    by 0x148B49: make_simple_command (in /usr/bin/bash)
    ==22231==    by 0x14355F: yyparse (in /usr/bin/bash)
    ==22231==    by 0x13929A: parse_command (in /usr/bin/bash)
    ==22231==    by 0x1393A6: read_command (in /usr/bin/bash)
    ==22231==    by 0x1395C9: reader_loop (in /usr/bin/bash)
    ==22231==    by 0x137EF8: main (in /usr/bin/bash)
    ==22231==
    ==22231== LEAK SUMMARY:
    ==22231==    definitely lost: 40 bytes in 2 blocks
    ==22231==    indirectly lost: 24 bytes in 1 blocks
    ==22231==      possibly lost: 0 bytes in 0 blocks
    ==22231==    still reachable: 434,949 bytes in 11,518 blocks
    ==22231==         suppressed: 0 bytes in 0 blocks
    ==22231== Reachable blocks (those to which a pointer was found) are not shown.
    ==22231== To see them, rerun with: --leak-check=full --show-leak-kinds=all
    ==22231==
    ==22231== For lists of detected and suppressed errors, rerun with: -s
    ==22231== ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)

    Comme si toutes mes erreurs provenaient plutôt de la machine et des binaires plutôt que de mon code (ce que j'ai du mal à croire).D'un autre côté, je run mon Ubuntu à partir de Windows 10, via les fonctionnalités Windows - Outils de développement (si ça peut aider à cerner le problème).Auriez-vous des pistes à me conseiller pour investiguer sur mes 40 bytes in 2 blocks de memory definitely lost et mes 

     "ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)" ?

    Merci d'avance,

    -
    Edité par IlliciteS 15 juin 2020 à 20:05:41

    • Partager sur Facebook
    • Partager sur Twitter

    Valgrind - Manque de précision sur le memory leak

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown