1

I am getting below still reachable memory when using curl. Anybody has got this, any idea whats the work around.

I understand its not a severe problem, just for curiosity I want to know what might be wrong here.

Code to reproduce this issue given below.

int main(int argc, char **argv)
{
    curl_global_init(CURL_GLOBAL_ALL);
    curl_global_cleanup();
    return 0;
}

With this the entire valgrind output file is as below.

> ==4570== Memcheck, a memory error detector
> ==4570== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al.
> ==4570== Using Valgrind-3.10.1 and LibVEX; rerun with -h for copyright info
> ==4570== Command: ./etransporttest
> ==4570== Parent PID: 3246
> ==4570== 
> ==4570== 
> ==4570== HEAP SUMMARY:
> ==4570==     in use at exit: 192 bytes in 12 blocks
> ==4570==   total heap usage: 1,310 allocs, 1,298 frees, 111,871 bytes allocated
> ==4570== 
> ==4570== 8 bytes in 1 blocks are still reachable in loss record 1 of 6
> ==4570==    at 0x4D92B80: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==4570==    by 0x6F7C218: do_malloc (global.c:778)
> ==4570==    by 0x6F7D34C: _gcry_malloc (global.c:800)
> ==4570==    by 0x6F7D34C: _gcry_xmalloc (global.c:974)
> ==4570==    by 0x70339A4: _gcry_mpi_alloc_limb_space (mpiutil.c:123)
> ==4570==    by 0x70339D3: _gcry_mpi_alloc (mpiutil.c:85)
> ==4570==    by 0x7033AE9: _gcry_mpi_alloc_set_ui (mpiutil.c:565)
> ==4570==    by 0x7033AE9: _gcry_mpi_init (mpiutil.c:63)
> ==4570==    by 0x6F7C176: global_init.part.0 (global.c:120)
> ==4570==    by 0x6F7C8FE: global_init (global.c:85)
> ==4570==    by 0x6F7C8FE: _gcry_vcontrol (global.c:379)
> ==4570==    by 0x6F7927B: gcry_control (visibility.c:79)
> ==4570==    by 0x6D63009: libssh2_init (global.c:48)
> ==4570==    by 0x571510B: global_init (in /usr/local/multiplier/system/libs/libcurl.so.4.4.0)
> ==4570==    by 0x403895: main (main.c:167)
> ==4570== 
> ==4570== 16 bytes in 2 blocks are still reachable in loss record 2 of 6
> ==4570==    at 0x4D92B80: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==4570==    by 0x6F7C218: do_malloc (global.c:778)
> ==4570==    by 0x6F7D34C: _gcry_malloc (global.c:800)
> ==4570==    by 0x6F7D34C: _gcry_xmalloc (global.c:974)
> ==4570==    by 0x70339A4: _gcry_mpi_alloc_limb_space (mpiutil.c:123)
> ==4570==    by 0x70339D3: _gcry_mpi_alloc (mpiutil.c:85)
> ==4570==    by 0x7033A7C: _gcry_mpi_alloc_set_ui (mpiutil.c:565)
> ==4570==    by 0x7033A7C: _gcry_mpi_init (mpiutil.c:63)
> ==4570==    by 0x6F7C176: global_init.part.0 (global.c:120)
> ==4570==    by 0x6F7C8FE: global_init (global.c:85)
> ==4570==    by 0x6F7C8FE: _gcry_vcontrol (global.c:379)
> ==4570==    by 0x6F7927B: gcry_control (visibility.c:79)
> ==4570==    by 0x6D63009: libssh2_init (global.c:48)
> ==4570==    by 0x571510B: global_init (in /usr/local/multiplier/system/libs/libcurl.so.4.4.0)
> ==4570==    by 0x403895: main (main.c:167)
> ==4570== 
> ==4570== 24 bytes in 1 blocks are still reachable in loss record 3 of 6
> ==4570==    at 0x4D92B80: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==4570==    by 0x6F7C218: do_malloc (global.c:778)
> ==4570==    by 0x6F7D34C: _gcry_malloc (global.c:800)
> ==4570==    by 0x6F7D34C: _gcry_xmalloc (global.c:974)
> ==4570==    by 0x70339C1: _gcry_mpi_alloc (mpiutil.c:84)
> ==4570==    by 0x7033AE9: _gcry_mpi_alloc_set_ui (mpiutil.c:565)
> ==4570==    by 0x7033AE9: _gcry_mpi_init (mpiutil.c:63)
> ==4570==    by 0x6F7C176: global_init.part.0 (global.c:120)
> ==4570==    by 0x6F7C8FE: global_init (global.c:85)
> ==4570==    by 0x6F7C8FE: _gcry_vcontrol (global.c:379)
> ==4570==    by 0x6F7927B: gcry_control (visibility.c:79)
> ==4570==    by 0x6D63009: libssh2_init (global.c:48)
> ==4570==    by 0x571510B: global_init (in /usr/local/multiplier/system/libs/libcurl.so.4.4.0)
> ==4570==    by 0x403895: main (main.c:167)
> ==4570== 
> ==4570== 24 bytes in 3 blocks are still reachable in loss record 4 of 6
> ==4570==    at 0x4D92B80: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==4570==    by 0x6F7C218: do_malloc (global.c:778)
> ==4570==    by 0x6F7D34C: _gcry_malloc (global.c:800)
> ==4570==    by 0x6F7D34C: _gcry_xmalloc (global.c:974)
> ==4570==    by 0x70339A4: _gcry_mpi_alloc_limb_space (mpiutil.c:123)
> ==4570==    by 0x70339D3: _gcry_mpi_alloc (mpiutil.c:85)
> ==4570==    by 0x7033A3E: _gcry_mpi_alloc_set_ui (mpiutil.c:565)
> ==4570==    by 0x7033A3E: _gcry_mpi_init (mpiutil.c:63)
> ==4570==    by 0x6F7C176: global_init.part.0 (global.c:120)
> ==4570==    by 0x6F7C8FE: global_init (global.c:85)
> ==4570==    by 0x6F7C8FE: _gcry_vcontrol (global.c:379)
> ==4570==    by 0x6F7927B: gcry_control (visibility.c:79)
> ==4570==    by 0x6D63009: libssh2_init (global.c:48)
> ==4570==    by 0x571510B: global_init (in /usr/local/multiplier/system/libs/libcurl.so.4.4.0)
> ==4570==    by 0x403895: main (main.c:167)
> ==4570== 
> ==4570== 48 bytes in 2 blocks are still reachable in loss record 5 of 6
> ==4570==    at 0x4D92B80: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==4570==    by 0x6F7C218: do_malloc (global.c:778)
> ==4570==    by 0x6F7D34C: _gcry_malloc (global.c:800)
> ==4570==    by 0x6F7D34C: _gcry_xmalloc (global.c:974)
> ==4570==    by 0x70339C1: _gcry_mpi_alloc (mpiutil.c:84)
> ==4570==    by 0x7033A7C: _gcry_mpi_alloc_set_ui (mpiutil.c:565)
> ==4570==    by 0x7033A7C: _gcry_mpi_init (mpiutil.c:63)
> ==4570==    by 0x6F7C176: global_init.part.0 (global.c:120)
> ==4570==    by 0x6F7C8FE: global_init (global.c:85)
> ==4570==    by 0x6F7C8FE: _gcry_vcontrol (global.c:379)
> ==4570==    by 0x6F7927B: gcry_control (visibility.c:79)
> ==4570==    by 0x6D63009: libssh2_init (global.c:48)
> ==4570==    by 0x571510B: global_init (in /usr/local/multiplier/system/libs/libcurl.so.4.4.0)
> ==4570==    by 0x403895: main (main.c:167)
> ==4570== 
> ==4570== 72 bytes in 3 blocks are still reachable in loss record 6 of 6
> ==4570==    at 0x4D92B80: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==4570==    by 0x6F7C218: do_malloc (global.c:778)
> ==4570==    by 0x6F7D34C: _gcry_malloc (global.c:800)
> ==4570==    by 0x6F7D34C: _gcry_xmalloc (global.c:974)
> ==4570==    by 0x70339C1: _gcry_mpi_alloc (mpiutil.c:84)
> ==4570==    by 0x7033A3E: _gcry_mpi_alloc_set_ui (mpiutil.c:565)
> ==4570==    by 0x7033A3E: _gcry_mpi_init (mpiutil.c:63)
> ==4570==    by 0x6F7C176: global_init.part.0 (global.c:120)
> ==4570==    by 0x6F7C8FE: global_init (global.c:85)
> ==4570==    by 0x6F7C8FE: _gcry_vcontrol (global.c:379)
> ==4570==    by 0x6F7927B: gcry_control (visibility.c:79)
> ==4570==    by 0x6D63009: libssh2_init (global.c:48)
> ==4570==    by 0x571510B: global_init (in /usr/local/multiplier/system/libs/libcurl.so.4.4.0)
> ==4570==    by 0x403895: main (main.c:167)
> ==4570== 
> ==4570== LEAK SUMMARY:
> ==4570==    definitely lost: 0 bytes in 0 blocks
> ==4570==    indirectly lost: 0 bytes in 0 blocks
> ==4570==      possibly lost: 0 bytes in 0 blocks
> ==4570==    still reachable: 192 bytes in 12 blocks
> ==4570==         suppressed: 0 bytes in 0 blocks
> ==4570== 
> ==4570== For counts of detected and suppressed errors, rerun with: -v
> ==4570== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
Austin
  • 1,709
  • 20
  • 40

0 Answers0