Vraag Wat betekenen de onderdrukte lekken in Valgrind?


Ik heb een pure-C implementatie van FIFO-lijsten (wachtrijen) in bestanden ontwikkeld fifo.h en fifo.c, en heb een testprogramma geschreven testfifo.c die ik compileer ./bin/testfifo. De knooppuntstructuur is gedefinieerd in list.h.

Ik draai mijn programma via Valgrind op OS X 10.6 op deze manier

valgrind --tool=memcheck --leak-check=full --show-reachable=yes ./bin/testfifo

en krijg de volgende uitvoer

==54688== Memcheck, a memory error detector
==54688== Copyright (C) 2002-2011, and GNU GPL'd, by Julian Seward et al.
==54688== Using Valgrind-3.7.0 and LibVEX; rerun with -h for copyright info
==54688== Command: bin/testfifo
==54688== 
--54688-- bin/testfifo:
--54688-- dSYM directory is missing; consider using --dsymutil=yes
==54688== 
==54688== HEAP SUMMARY:
==54688==     in use at exit: 88 bytes in 1 blocks
==54688==   total heap usage: 11 allocs, 10 frees, 248 bytes allocated
==54688== 
==54688== LEAK SUMMARY:
==54688==    definitely lost: 0 bytes in 0 blocks
==54688==    indirectly lost: 0 bytes in 0 blocks
==54688==      possibly lost: 0 bytes in 0 blocks
==54688==    still reachable: 0 bytes in 0 blocks
==54688==         suppressed: 88 bytes in 1 blocks
==54688== 
==54688== For counts of detected and suppressed errors, rerun with: -v
==54688== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)

Volgens het lekoverzicht zijn er geen lekken, maar ik vraag me nog steeds af wat de "onderdrukte" lekken zijn. Bovendien komen het aantal toewijzingen en gratis's niet overeen, en daarom ben ik er niet zeker van als er lekken zijn of niet.

----BEWERK----

hardlopen

valgrind --tool=memcheck --leak-check=full --show-reachable=yes -v ./bin/testfifo

op OS X 10.6 produceert een vrij lange en verwarrende output, maar ik heb gerend

valgrind --tool=memcheck --leak-check=full --show-reachable=yes ./bin/testfifo

op een Linux-machine een heb deze output:

==32688== Memcheck, a memory error detector
==32688== Copyright (C) 2002-2010, and GNU GPL'd, by Julian Seward et al.
==32688== Using Valgrind-3.6.1 and LibVEX; rerun with -h for copyright info
==32688== Command: bin/testfifo
==32688== 
==32688== 
==32688== HEAP SUMMARY:
==32688==     in use at exit: 0 bytes in 0 blocks
==32688==   total heap usage: 10 allocs, 10 frees, 160 bytes allocated
==32688== 
==32688== All heap blocks were freed -- no leaks are possible
==32688== 
==32688== For counts of detected and suppressed errors, rerun with: -v
==32688== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 4 from 4)

toewijzingen en gratis's komen nu overeen, dus de extra toewijzing op OS X lijkt te wijten te zijn aan een systeembibliotheek, zoals is gesuggereerd.

Ik heb hetzelfde commando uitgevoerd met de -v optie, om de 4 onderdrukte fouten te onthullen, maar ik heb geen gemakkelijk te begrijpen nieuwe informatie.


17
2017-12-28 14:49


oorsprong


antwoorden:


Dat zijn lekken buiten uw code, in (waarschijnlijk gedeelde) bibliotheken of bekende valse positieven. Valgrind uitvoeren met -v moet u informeren over de gebruikte onderdrukkingen.


20
2017-12-28 14:50