public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
From: "redi at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org> To: gcc-bugs@gcc.gnu.org Subject: [Bug libbacktrace/105240] backtrace_pcinfo leaks memory Date: Tue, 12 Apr 2022 14:50:55 +0000 [thread overview] Message-ID: <bug-105240-4-aZQRdoVBpM@http.gcc.gnu.org/bugzilla/> (raw) In-Reply-To: <bug-105240-4@http.gcc.gnu.org/bugzilla/> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105240 Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Last reconfirmed| |2022-04-12 Status|UNCONFIRMED |NEW Ever confirmed|0 |1 --- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> --- This simple C++ program: #include <backtrace.h> int cb_pcinfo(void*, uintptr_t, const char*, int, const char* function) { return function != nullptr; } int cb(void* p, uintptr_t pc) { *static_cast<uintptr_t*>(p) = pc; return 1; } int main() { auto state = backtrace_create_state(nullptr, 1, nullptr, nullptr); uintptr_t pc; backtrace_simple(state, 0, cb, nullptr, &pc); backtrace_pcinfo(state, pc, cb_pcinfo, nullptr, nullptr); } Built with: g++ bt.cc build/libbacktrace/.libs/libbacktrace.a -I ~/src/gcc/gcc/libbacktrace/ -g When run under valgrind shows: valgrind --leak-check=full ./a.out ==410984== Memcheck, a memory error detector ==410984== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al. ==410984== Using Valgrind-3.18.1 and LibVEX; rerun with -h for copyright info ==410984== Command: ./a.out ==410984== ==410984== ==410984== HEAP SUMMARY: ==410984== in use at exit: 112,638,104 bytes in 729,676 blocks ==410984== total heap usage: 729,861 allocs, 185 frees, 115,412,593 bytes allocated ==410984== ==410984== 84 bytes in 3 blocks are definitely lost in loss record 5 of 43 ==410984== at 0x484086F: malloc (vg_replace_malloc.c:381) ==410984== by 0x406FF1: backtrace_alloc (alloc.c:57) ==410984== by 0x409283: read_lnct (dwarf.c:2543) ==410984== by 0x409283: read_line_header_format_entries (dwarf.c:2618) ==410984== by 0x40B08A: read_line_header (dwarf.c:2712) ==410984== by 0x40B08A: read_line_info (dwarf.c:2965) ==410984== by 0x40B08A: dwarf_lookup_pc (dwarf.c:3747) ==410984== by 0x40C1BE: dwarf_fileline (dwarf.c:3935) ==410984== by 0x40134E: main (bt.cc:13) ==410984== ==410984== 13,920 bytes in 1 blocks are definitely lost in loss record 25 of 43 ==410984== at 0x484086F: malloc (vg_replace_malloc.c:381) ==410984== by 0x406FF1: backtrace_alloc (alloc.c:57) ==410984== by 0x406ED6: backtrace_get_view (read.c:68) ==410984== by 0x40568A: elf_get_view (elf.c:426) ==410984== by 0x40568A: elf_add (elf.c:4329) ==410984== by 0x406BC8: phdr_callback (elf.c:4848) ==410984== by 0x4D2A314: dl_iterate_phdr (dl-iteratephdr.c:75) ==410984== by 0x406DDD: backtrace_initialize (elf.c:4892) ==410984== by 0x4014B1: fileline_initialize (fileline.c:261) ==410984== by 0x401581: backtrace_pcinfo (fileline.c:295) ==410984== by 0x40134E: main (bt.cc:13) ==410984== ==410984== 31,248 bytes in 1 blocks are possibly lost in loss record 28 of 43 ==410984== at 0x48456AF: realloc (vg_replace_malloc.c:1437) ==410984== by 0x407115: backtrace_vector_release (alloc.c:159) ==410984== by 0x40CDCD: build_dwarf_data (dwarf.c:3976) ==410984== by 0x40CDCD: backtrace_dwarf_add (dwarf.c:4022) ==410984== by 0x406475: elf_add (elf.c:4749) ==410984== by 0x4060E9: elf_add (elf.c:4434) ==410984== by 0x406BC8: phdr_callback (elf.c:4848) ==410984== by 0x4D2A314: dl_iterate_phdr (dl-iteratephdr.c:75) ==410984== by 0x406DDD: backtrace_initialize (elf.c:4892) ==410984== by 0x4014B1: fileline_initialize (fileline.c:261) ==410984== by 0x401581: backtrace_pcinfo (fileline.c:295) ==410984== by 0x40134E: main (bt.cc:13) ==410984== ==410984== 69,736 bytes in 2 blocks are possibly lost in loss record 30 of 43 ==410984== at 0x484086F: malloc (vg_replace_malloc.c:381) ==410984== by 0x406FF1: backtrace_alloc (alloc.c:57) ==410984== by 0x406ED6: backtrace_get_view (read.c:68) ==410984== by 0x40568A: elf_get_view (elf.c:426) ==410984== by 0x40568A: elf_add (elf.c:4329) ==410984== by 0x406BC8: phdr_callback (elf.c:4848) ==410984== by 0x4D2A314: dl_iterate_phdr (dl-iteratephdr.c:75) ==410984== by 0x406DDD: backtrace_initialize (elf.c:4892) ==410984== by 0x4014B1: fileline_initialize (fileline.c:261) ==410984== by 0x401581: backtrace_pcinfo (fileline.c:295) ==410984== by 0x40134E: main (bt.cc:13) ==410984== ==410984== 164,768 bytes in 1 blocks are possibly lost in loss record 31 of 43 ==410984== at 0x484086F: malloc (vg_replace_malloc.c:381) ==410984== by 0x406FF1: backtrace_alloc (alloc.c:57) ==410984== by 0x406ED6: backtrace_get_view (read.c:68) ==410984== by 0x405C50: elf_add (elf.c:4591) ==410984== by 0x406BC8: phdr_callback (elf.c:4848) ==410984== by 0x4D2A314: dl_iterate_phdr (dl-iteratephdr.c:75) ==410984== by 0x406DDD: backtrace_initialize (elf.c:4892) ==410984== by 0x4014B1: fileline_initialize (fileline.c:261) ==410984== by 0x401581: backtrace_pcinfo (fileline.c:295) ==410984== by 0x40134E: main (bt.cc:13) ==410984== ==410984== 174,888 bytes in 3 blocks are possibly lost in loss record 32 of 43 ==410984== at 0x48456AF: realloc (vg_replace_malloc.c:1437) ==410984== by 0x407115: backtrace_vector_release (alloc.c:159) ==410984== by 0x40CDAA: build_dwarf_data (dwarf.c:3974) ==410984== by 0x40CDAA: backtrace_dwarf_add (dwarf.c:4022) ==410984== by 0x406475: elf_add (elf.c:4749) ==410984== by 0x4060E9: elf_add (elf.c:4434) ==410984== by 0x406BC8: phdr_callback (elf.c:4848) ==410984== by 0x4D2A314: dl_iterate_phdr (dl-iteratephdr.c:75) ==410984== by 0x406DDD: backtrace_initialize (elf.c:4892) ==410984== by 0x4014B1: fileline_initialize (fileline.c:261) ==410984== by 0x401581: backtrace_pcinfo (fileline.c:295) ==410984== by 0x40134E: main (bt.cc:13) ==410984== ==410984== 231,094 bytes in 1 blocks are possibly lost in loss record 33 of 43 ==410984== at 0x484086F: malloc (vg_replace_malloc.c:381) ==410984== by 0x406FF1: backtrace_alloc (alloc.c:57) ==410984== by 0x406ED6: backtrace_get_view (read.c:68) ==410984== by 0x405C50: elf_add (elf.c:4591) ==410984== by 0x406D83: backtrace_initialize (elf.c:4877) ==410984== by 0x4014B1: fileline_initialize (fileline.c:261) ==410984== by 0x401581: backtrace_pcinfo (fileline.c:295) ==410984== by 0x40134E: main (bt.cc:13) ==410984== ==410984== 308,808 bytes in 3 blocks are possibly lost in loss record 35 of 43 ==410984== at 0x484086F: malloc (vg_replace_malloc.c:381) ==410984== by 0x406FF1: backtrace_alloc (alloc.c:57) ==410984== by 0x4067B5: elf_initialize_syminfo (elf.c:661) ==410984== by 0x4067B5: elf_add (elf.c:4392) ==410984== by 0x406BC8: phdr_callback (elf.c:4848) ==410984== by 0x4D2A314: dl_iterate_phdr (dl-iteratephdr.c:75) ==410984== by 0x406DDD: backtrace_initialize (elf.c:4892) ==410984== by 0x4014B1: fileline_initialize (fileline.c:261) ==410984== by 0x401581: backtrace_pcinfo (fileline.c:295) ==410984== by 0x40134E: main (bt.cc:13) ==410984== ==410984== 438,981 bytes in 4 blocks are possibly lost in loss record 36 of 43 ==410984== at 0x484086F: malloc (vg_replace_malloc.c:381) ==410984== by 0x406FF1: backtrace_alloc (alloc.c:57) ==410984== by 0x406ED6: backtrace_get_view (read.c:68) ==410984== by 0x40667B: elf_add (elf.c:4381) ==410984== by 0x406BC8: phdr_callback (elf.c:4848) ==410984== by 0x4D2A314: dl_iterate_phdr (dl-iteratephdr.c:75) ==410984== by 0x406DDD: backtrace_initialize (elf.c:4892) ==410984== by 0x4014B1: fileline_initialize (fileline.c:261) ==410984== by 0x401581: backtrace_pcinfo (fileline.c:295) ==410984== by 0x40134E: main (bt.cc:13) ==410984== ==410984== 767,840 bytes in 4,799 blocks are possibly lost in loss record 37 of 43 ==410984== at 0x484086F: malloc (vg_replace_malloc.c:381) ==410984== by 0x406FF1: backtrace_alloc (alloc.c:57) ==410984== by 0x40C54F: build_address_map (dwarf.c:2183) ==410984== by 0x40C54F: build_dwarf_data (dwarf.c:3969) ==410984== by 0x40C54F: backtrace_dwarf_add (dwarf.c:4022) ==410984== by 0x406475: elf_add (elf.c:4749) ==410984== by 0x4060E9: elf_add (elf.c:4434) ==410984== by 0x406BC8: phdr_callback (elf.c:4848) ==410984== by 0x4D2A314: dl_iterate_phdr (dl-iteratephdr.c:75) ==410984== by 0x406DDD: backtrace_initialize (elf.c:4892) ==410984== by 0x4014B1: fileline_initialize (fileline.c:261) ==410984== by 0x401581: backtrace_pcinfo (fileline.c:295) ==410984== by 0x40134E: main (bt.cc:13) ==410984== ==410984== 16,608,019 (72 direct, 16,607,947 indirect) bytes in 1 blocks are definitely lost in loss record 40 of 43 ==410984== at 0x484086F: malloc (vg_replace_malloc.c:381) ==410984== by 0x406FF1: backtrace_alloc (alloc.c:57) ==410984== by 0x401773: backtrace_create_state (state.c:66) ==410984== by 0x401308: main (bt.cc:10) ==410984== ==410984== 18,629,920 bytes in 5,066 blocks are possibly lost in loss record 41 of 43 ==410984== at 0x484086F: malloc (vg_replace_malloc.c:381) ==410984== by 0x406FF1: backtrace_alloc (alloc.c:57) ==410984== by 0x40C747: read_abbrevs (dwarf.c:1409) ==410984== by 0x40C747: build_address_map (dwarf.c:2197) ==410984== by 0x40C747: build_dwarf_data (dwarf.c:3969) ==410984== by 0x40C747: backtrace_dwarf_add (dwarf.c:4022) ==410984== by 0x406475: elf_add (elf.c:4749) ==410984== by 0x4060E9: elf_add (elf.c:4434) ==410984== by 0x406BC8: phdr_callback (elf.c:4848) ==410984== by 0x4D2A314: dl_iterate_phdr (dl-iteratephdr.c:75) ==410984== by 0x406DDD: backtrace_initialize (elf.c:4892) ==410984== by 0x4014B1: fileline_initialize (fileline.c:261) ==410984== by 0x401581: backtrace_pcinfo (fileline.c:295) ==410984== by 0x40134E: main (bt.cc:13) ==410984== ==410984== 21,644,094 bytes in 5 blocks are possibly lost in loss record 42 of 43 ==410984== at 0x484086F: malloc (vg_replace_malloc.c:381) ==410984== by 0x406FF1: backtrace_alloc (alloc.c:57) ==410984== by 0x406ED6: backtrace_get_view (read.c:68) ==410984== by 0x405C50: elf_add (elf.c:4591) ==410984== by 0x4060E9: elf_add (elf.c:4434) ==410984== by 0x406BC8: phdr_callback (elf.c:4848) ==410984== by 0x4D2A314: dl_iterate_phdr (dl-iteratephdr.c:75) ==410984== by 0x406DDD: backtrace_initialize (elf.c:4892) ==410984== by 0x4014B1: fileline_initialize (fileline.c:261) ==410984== by 0x401581: backtrace_pcinfo (fileline.c:295) ==410984== by 0x40134E: main (bt.cc:13) ==410984== ==410984== 53,554,704 bytes in 575,533 blocks are possibly lost in loss record 43 of 43 ==410984== at 0x484086F: malloc (vg_replace_malloc.c:381) ==410984== by 0x406FF1: backtrace_alloc (alloc.c:57) ==410984== by 0x40CB1E: read_abbrevs (dwarf.c:1457) ==410984== by 0x40CB1E: build_address_map (dwarf.c:2197) ==410984== by 0x40CB1E: build_dwarf_data (dwarf.c:3969) ==410984== by 0x40CB1E: backtrace_dwarf_add (dwarf.c:4022) ==410984== by 0x406475: elf_add (elf.c:4749) ==410984== by 0x4060E9: elf_add (elf.c:4434) ==410984== by 0x406BC8: phdr_callback (elf.c:4848) ==410984== by 0x4D2A314: dl_iterate_phdr (dl-iteratephdr.c:75) ==410984== by 0x406DDD: backtrace_initialize (elf.c:4892) ==410984== by 0x4014B1: fileline_initialize (fileline.c:261) ==410984== by 0x401581: backtrace_pcinfo (fileline.c:295) ==410984== by 0x40134E: main (bt.cc:13) ==410984== ==410984== LEAK SUMMARY: ==410984== definitely lost: 14,076 bytes in 5 blocks ==410984== indirectly lost: 16,607,947 bytes in 144,253 blocks ==410984== possibly lost: 96,016,081 bytes in 585,418 blocks ==410984== still reachable: 0 bytes in 0 blocks ==410984== of which reachable via heuristic: ==410984== newarray : 4,064 bytes in 1 blocks ==410984== suppressed: 0 bytes in 0 blocks ==410984== ==410984== For lists of detected and suppressed errors, rerun with: -s ==410984== ERROR SUMMARY: 14 errors from 14 contexts (suppressed: 0 from 0)
next prev parent reply other threads:[~2022-04-12 14:50 UTC|newest] Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-04-12 14:49 [Bug libbacktrace/105240] New: " redi at gcc dot gnu.org 2022-04-12 14:50 ` redi at gcc dot gnu.org [this message] 2022-04-12 14:52 ` [Bug libbacktrace/105240] " redi at gcc dot gnu.org 2022-04-12 16:31 ` ian at airs dot com 2022-04-12 17:39 ` redi at gcc dot gnu.org 2022-04-12 21:39 ` cvs-commit at gcc dot gnu.org
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=bug-105240-4-aZQRdoVBpM@http.gcc.gnu.org/bugzilla/ \ --to=gcc-bugzilla@gcc.gnu.org \ --cc=gcc-bugs@gcc.gnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).