From: Eric S. <es...@gm...> - 2015-11-16 22:03:42
|
Team, I believe I've stumbled across a memory leak within Check. The source code (see attached) is very basic with *minor* exception to the use of a function pointer to reference a function to create the test suite. I'm new to Check and might be doing something wrong, but I believe I'm correctly adhering too the alloc/free patterns required by Check. Valgrind output is below. Am I doing something wrong? Or is this a bug? $ valgrind --leak-check=full ./main ==62127== Memcheck, a memory error detector ==62127== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al. ==62127== Using Valgrind-3.11.0 and LibVEX; rerun with -h for copyright info ==62127== Command: ./main ==62127== --62127-- run: /usr/bin/dsymutil "./main" warning: no debug symbols in executable (-arch x86_64) Running suite(s): suite ==62129== ==62129== HEAP SUMMARY: ==62129== in use at exit: 44,630 bytes in 448 blocks ==62129== total heap usage: 559 allocs, 111 frees, 52,223 bytes allocated ==62129== ==62129== 4,096 bytes in 1 blocks are definitely lost in loss record 108 of 108 ==62129== at 0x100009EBB: malloc (in /usr/local/Cellar/valgrind/3.11.0/lib/valgrind/vgpreload_memcheck-amd64-darwin.so) ==62129== by 0x1001E0696: __smakebuf (in /usr/lib/system/libsystem_c.dylib) ==62129== by 0x1001F51E7: __swsetup (in /usr/lib/system/libsystem_c.dylib) ==62129== by 0x1001DF930: __sfvwrite (in /usr/lib/system/libsystem_c.dylib) ==62129== by 0x1001DFF0A: fwrite (in /usr/lib/system/libsystem_c.dylib) ==62129== by 0x1000144AF: ppack (in /usr/local/Cellar/check/0.10.0/lib/libcheck.0.dylib) ==62129== by 0x100014092: send_ctx_info (in /usr/local/Cellar/check/0.10.0/lib/libcheck.0.dylib) ==62129== by 0x100015C16: srunner_run_setup (in /usr/local/Cellar/check/0.10.0/lib/libcheck.0.dylib) ==62129== by 0x100015783: srunner_run (in /usr/local/Cellar/check/0.10.0/lib/libcheck.0.dylib) ==62129== by 0x100001D4D: test_suite (in ./main) ==62129== by 0x100001DBF: main (in ./main) ==62129== ==62129== LEAK SUMMARY: ==62129== definitely lost: 4,096 bytes in 1 blocks ==62129== indirectly lost: 0 bytes in 0 blocks ==62129== possibly lost: 0 bytes in 0 blocks ==62129== still reachable: 4,596 bytes in 25 blocks ==62129== suppressed: 35,938 bytes in 422 blocks ==62129== Reachable blocks (those to which a pointer was found) are not shown. ==62129== To see them, rerun with: --leak-check=full --show-leak-kinds=all ==62129== ==62129== For counts of detected and suppressed errors, rerun with: -v ==62129== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 17 from 17) 100%: Checks: 1, Failures: 0, Errors: 0 ==62127== ==62127== HEAP SUMMARY: ==62127== in use at exit: 38,919 bytes in 420 blocks ==62127== total heap usage: 559 allocs, 139 frees, 59,584 bytes allocated ==62127== ==62127== LEAK SUMMARY: ==62127== definitely lost: 0 bytes in 0 blocks ==62127== indirectly lost: 0 bytes in 0 blocks ==62127== possibly lost: 0 bytes in 0 blocks ==62127== still reachable: 4,096 bytes in 1 blocks ==62127== suppressed: 34,823 bytes in 419 blocks ==62127== Reachable blocks (those to which a pointer was found) are not shown. ==62127== To see them, rerun with: --leak-check=full --show-leak-kinds=all ==62127== ==62127== For counts of detected and suppressed errors, rerun with: -v ==62127== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 16 from 16) |