Hi everyone,
It’s about how to interpret a valgrind report if there’s no debug symbols from libg* libs in system. Is there some way to get more info what part of code can trigger valgrind to report “definitely lost”?
Code in C compiled with “-g -ggdb -fno-omit-frame-pointer” flags, Valgrind run as:
G_DEBUG="gc-friendly:bind-now-modules" \
valgrind --show-leak-kinds=definite --leak-check=full \
--suppressions="/usr/share/glib-2.0/valgrind/glib.supp" \
--suppressions="/usr/share/gtk-4.0/valgrind/gtk.supp" \
--suppressions="~/pango.supp" \
./program $@
displays
==20275== HEAP SUMMARY:
==20275== in use at exit: 18,267,665 bytes in 52,721 blocks
==20275== total heap usage: 607,968 allocs, 555,247 frees, 184,104,484 bytes allocated
==20275==
==20275== 164 (96 direct, 68 indirect) bytes in 1 blocks are definitely lost in loss record 16,524 of 19,366
==20275== at 0x484A993: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==20275== by 0x55DB7E9: g_malloc0 (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7800.0)
==20275== by 0x5554C42: g_type_create_instance (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7800.0)
==20275== by 0x553B1EF: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7800.0)
==20275== by 0x553C745: g_object_new_with_properties (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7800.0)
==20275== by 0x553D5F0: g_object_new (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7800.0)
==20275== by 0x53BE442: g_io_module_new (in /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.7800.0)
==20275== by 0x53BE741: g_io_modules_scan_all_in_directory_with_scope (in /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.7800.0)
==20275== by 0x4AEEF4B: gtk_init_check (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.1200.3)
==20275== by 0x4AEF39C: gtk_init (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.1200.3)
==20275== by 0x4A2685B: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.1200.3)
==20275== by 0x5549ADC: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7800.0)
==20275==
==20275== 174 (32 direct, 142 indirect) bytes in 2 blocks are definitely lost in loss record 16,553 of 19,366
==20275== at 0x4845828: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==20275== by 0x55D9CD1: g_malloc (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7800.0)
==20275== by 0x55F2B6C: g_slice_alloc0 (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7800.0)
==20275== by 0x55BD18B: ??? (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7800.0)
==20275== by 0x55BD84D: g_error_new_valist (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7800.0)
==20275== by 0x55BDA9E: g_set_error (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7800.0)
==20275== by 0x5484AD0: ??? (in /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.7800.0)
==20275== by 0x53F9C53: ??? (in /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.7800.0)
==20275== by 0x5604A31: ??? (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7800.0)
==20275== by 0x5602330: ??? (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7800.0)
==20275== by 0x5755B59: start_thread (pthread_create.c:444)
==20275== by 0x57E6463: clone (clone.S:100)
==20275==
==20275== 672 (56 direct, 616 indirect) bytes in 1 blocks are definitely lost in loss record 18,109 of 19,366
==20275== at 0x5554DF1: g_type_create_instance (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7800.0)
==20275== by 0x553B1EF: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7800.0)
==20275== by 0x553D272: g_object_new_valist (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7800.0)
==20275== by 0x553D5CC: g_object_new (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7800.0)
==20275== by 0x53EB68D: ??? (in /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.7800.0)
==20275== by 0x53EFAA2: ??? (in /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.7800.0)
==20275== by 0x53F38B2: ??? (in /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.7800.0)
==20275== by 0x53D7084: ??? (in /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.7800.0)
==20275== by 0x53EFAA2: ??? (in /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.7800.0)
==20275== by 0x53F38B2: ??? (in /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.7800.0)
==20275== by 0x53CC0BC: ??? (in /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.7800.0)
==20275== by 0x53EFAA2: ??? (in /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.7800.0)
==20275==
==20275== 2,016 (168 direct, 1,848 indirect) bytes in 3 blocks are definitely lost in loss record 18,790 of 19,366
==20275== at 0x5554DF1: g_type_create_instance (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7800.0)
==20275== by 0x553B1EF: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7800.0)
==20275== by 0x553D272: g_object_new_valist (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7800.0)
==20275== by 0x553D5CC: g_object_new (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7800.0)
==20275== by 0x53EB68D: ??? (in /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.7800.0)
==20275== by 0x53EFAA2: ??? (in /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.7800.0)
==20275== by 0x53F38B2: ??? (in /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.7800.0)
==20275== by 0x53D7084: ??? (in /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.7800.0)
==20275== by 0x53EFAA2: ??? (in /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.7800.0)
==20275== by 0x53EFADC: ??? (in /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.7800.0)
==20275== by 0x55D1A10: ??? (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7800.0)
==20275== by 0x562D46E: ??? (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7800.0)
==20275==
==20275== 8,807 (6,656 direct, 2,151 indirect) bytes in 26 blocks are definitely lost in loss record 19,182 of 19,366
==20275== at 0x4845828: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==20275== by 0x5A24B91: ??? (in /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.12.0)
==20275== by 0x5A250D0: ??? (in /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.12.0)
==20275== by 0x5A34329: ??? (in /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.12.0)
==20275== by 0x62987FD: ??? (in /usr/lib/x86_64-linux-gnu/libexpat.so.1.8.10)
==20275== by 0x6295DE3: ??? (in /usr/lib/x86_64-linux-gnu/libexpat.so.1.8.10)
==20275== by 0x62979BC: ??? (in /usr/lib/x86_64-linux-gnu/libexpat.so.1.8.10)
==20275== by 0x629BA99: XML_ParseBuffer (in /usr/lib/x86_64-linux-gnu/libexpat.so.1.8.10)
==20275== by 0x5A3137C: ??? (in /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.12.0)
==20275== by 0x5A31CCD: ??? (in /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.12.0)
==20275== by 0x5A31EA8: ??? (in /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.12.0)
==20275== by 0x5A3251C: ??? (in /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.12.0)
==20275==
==20275== 12,821 (512 direct, 12,309 indirect) bytes in 1 blocks are definitely lost in loss record 19,205 of 19,366
==20275== at 0x484ABC0: realloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==20275== by 0x5A24C38: ??? (in /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.12.0)
==20275== by 0x5A250D0: ??? (in /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.12.0)
==20275== by 0x527CE1B: ??? (in /usr/lib/x86_64-linux-gnu/libcairo.so.2.11800.0)
==20275== by 0x51587FC: ??? (in /usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so.0.5100.0)
==20275== by 0x5D38B7D: ??? (in /usr/lib/x86_64-linux-gnu/libpangoft2-1.0.so.0.5100.0)
==20275== by 0x51822B3: ??? (in /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0.5100.0)
==20275== by 0x5195FC4: ??? (in /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0.5100.0)
==20275== by 0x518A6CB: pango_layout_get_lines_readonly (in /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0.5100.0)
==20275== by 0x4B7985E: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.1200.3)
==20275== by 0x4B79B04: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.1200.3)
==20275== by 0x4B79CE3: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.1200.3)
==20275==
==20275== 12,821 (512 direct, 12,309 indirect) bytes in 1 blocks are definitely lost in loss record 19,206 of 19,366
==20275== at 0x484ABC0: realloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==20275== by 0x5A24C38: ??? (in /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.12.0)
==20275== by 0x5A250D0: ??? (in /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.12.0)
==20275== by 0x527CE1B: ??? (in /usr/lib/x86_64-linux-gnu/libcairo.so.2.11800.0)
==20275== by 0x51587FC: ??? (in /usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so.0.5100.0)
==20275== by 0x5D38B7D: ??? (in /usr/lib/x86_64-linux-gnu/libpangoft2-1.0.so.0.5100.0)
==20275== by 0x51822B3: ??? (in /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0.5100.0)
==20275== by 0x5195FC4: ??? (in /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0.5100.0)
==20275== by 0x518AF75: ??? (in /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0.5100.0)
==20275== by 0x518B139: pango_layout_get_size (in /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0.5100.0)
==20275== by 0x4AC977D: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.1200.3)
==20275== by 0x4B59242: ??? (in /usr/lib/x86_64-linux-gnu/libgtk-4.so.1.1200.3)
==20275==
==20275== LEAK SUMMARY:
==20275== definitely lost: 8,032 bytes in 35 blocks
==20275== indirectly lost: 32,481 bytes in 1,264 blocks
==20275== possibly lost: 620,181 bytes in 1,164 blocks
==20275== still reachable: 9,088,018 bytes in 37,778 blocks
==20275== of which reachable via heuristic:
==20275== newarray : 768,888 bytes in 9 blocks
==20275== multipleinheritance: 19,200 bytes in 28 blocks
==20275== suppressed: 8,357,337 bytes in 11,128 blocks
==20275== Reachable blocks (those to which a pointer was found) are not shown.