Memory leaks 读取malloc输出

Memory leaks 读取malloc输出,memory-leaks,valgrind,memory-leak-detector,Memory Leaks,Valgrind,Memory Leak Detector,我有一个用活性分析实现的寄存器分配器,我得到一个seg错误: Program received signal SIGSEGV, Segmentation fault. 0x00007ffff7560d9d in _int_malloc () from /lib64/libc.so.6 因此,我在valgrind上运行了它,试图通过以下命令查看错误: valgrind -v --leak-check=yes 我以前从未使用过这个程序,我真的不知道为什么会发生seg故障。我怀疑某处内存泄漏。有人

我有一个用活性分析实现的寄存器分配器,我得到一个seg错误:

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff7560d9d in _int_malloc () from /lib64/libc.so.6
因此,我在valgrind上运行了它,试图通过以下命令查看错误:

valgrind -v --leak-check=yes
我以前从未使用过这个程序,我真的不知道为什么会发生seg故障。我怀疑某处内存泄漏。有人能帮我理解valgrind的成果是什么吗

--58831-- Reading syms from /lib64/ld-2.11.3.so (0x4000000)
--58831-- Reading syms from /usr/lib64/valgrind/amd64-linux/memcheck (0x38000000)
--58831--    object doesn't have a symbol table
--58831--    object doesn't have a dynamic symbol table
--58831-- Reading suppressions file: /usr/lib64/valgrind/default.supp
==58831== Conditional jump or move depends on uninitialised value(s)
==58831==    at 0x401677D: strlen (in /lib64/ld-2.11.3.so)
==58831==    by 0x4005072: fillin_rpath (in /lib64/ld-2.11.3.so)
==58831==    by 0x40086D8: _dl_init_paths (in /lib64/ld-2.11.3.so)
==58831==    by 0x400311F: dl_main (in /lib64/ld-2.11.3.so)
==58831==    by 0x4014AD2: _dl_sysdep_start (in /lib64/ld-2.11.3.so)
==58831==    by 0x40013CB: _dl_start (in /lib64/ld-2.11.3.so)
==58831==    by 0x4000B07: (within /lib64/ld-2.11.3.so)
==58831==    by 0x2: ???
==58831==    by 0x7FF00057E: ???
==58831==    by 0x7FF000584: ???
==58831==    by 0x7FF000587: ???
--58831-- Reading syms from /usr/lib64/valgrind/amd64-linux/vgpreload_core.so (0x4A21000)
--58831--    object doesn't have a symbol table
==58831==
==58831== Conditional jump or move depends on uninitialised value(s) 
==58831==    at 0x4016616: index (in /lib64/ld-2.11.3.so)
==58831==    by 0x4007682: expand_dynamic_string_token (in /lib64/ld-2.11.3.so)
==58831==    by 0x4007C75: _dl_map_object (in /lib64/ld-2.11.3.so)
==58831==    by 0x400184D: map_doit (in /lib64/ld-2.11.3.so)
==58831==    by 0x400DE45: _dl_catch_error (in /lib64/ld-2.11.3.so)
==58831==    by 0x4001766: do_preload (in /lib64/ld-2.11.3.so)
==58831==    by 0x4003D3F: dl_main (in /lib64/ld-2.11.3.so)
==58831==    by 0x4014AD2: _dl_sysdep_start (in /lib64/ld-2.11.3.so) 
==58831==    by 0x40013CB: _dl_start (in /lib64/ld-2.11.3.so)
==58831==    by 0x4000B07: (within /lib64/ld-2.11.3.so)   
==58831==    by 0x2: ???
==58831==    by 0x7FF00057E: ???
==58831==
==58831== Conditional jump or move depends on uninitialised value(s)
==58831==    at 0x401661B: index (in /lib64/ld-2.11.3.so)
==58831==    by 0x4007682: expand_dynamic_string_token (in /lib64/ld-2.11.3.so)
==58831==    by 0x4007C75: _dl_map_object (in /lib64/ld-2.11.3.so)
==58831==    by 0x400184D: map_doit (in /lib64/ld-2.11.3.so)
==58831==    by 0x400DE45: _dl_catch_error (in /lib64/ld-2.11.3.so)  
==58831==    by 0x4001766: do_preload (in /lib64/ld-2.11.3.so)
==58831==    by 0x4003D3F: dl_main (in /lib64/ld-2.11.3.so)
==58831==    by 0x4014AD2: _dl_sysdep_start (in /lib64/ld-2.11.3.so)
==58831==    by 0x40013CB: _dl_start (in /lib64/ld-2.11.3.so)
==58831==    by 0x4000B07: (within /lib64/ld-2.11.3.so)
==58831==    by 0x2: ???
==58831==    by 0x7FF00057E: ???
--58831-- Reading syms from /usr/lib64/valgrind/amd64-linux/vgpreload_memcheck.so     (0x4C23000)
--58831--    object doesn't have a symbol table
--58831-- REDIR: 0x40165b0 (index) redirected to 0x4c27ba0 (index)
--58831-- REDIR: 0x4016630 (strcmp) redirected to 0x4c28160 (strcmp)
--58831-- REDIR: 0x4016740 (strlen) redirected to 0x4c27e60 (strlen)
--58831-- Reading syms from /usr/lib64/libstdc++.so.6.0.17 (0x4E2C000)
--58831-- Warning: DWARF2 CFI reader: unhandled DW_OP_ opcode 0x2a

valgrind: m_debuginfo/readdwarf.c:2152 (copy_convert_CfiExpr_tree): Assertion 'srcix >= 0     && srcix < VG_(sizeXA)(srcxa)' failed.
==58831==    at 0x3801C15C: (within /usr/lib64/valgrind/amd64-linux/memcheck)
==58831==    by 0x3801C46A: (within /usr/lib64/valgrind/amd64-linux/memcheck)
==58831==    by 0x380560A1: (within /usr/lib64/valgrind/amd64-linux/memcheck)
==58831==    by 0x3805635D: (within /usr/lib64/valgrind/amd64-linux/memcheck)
==58831==    by 0x38056BAB: (within /usr/lib64/valgrind/amd64-linux/memcheck)
==58831==    by 0x380586BA: (within /usr/lib64/valgrind/amd64-linux/memcheck)
==58831==    by 0x38053BFD: (within /usr/lib64/valgrind/amd64-linux/memcheck)
==58831==    by 0x380356C0: (within /usr/lib64/valgrind/amd64-linux/memcheck)
==58831==    by 0x3806BFC3: (within /usr/lib64/valgrind/amd64-linux/memcheck)
==58831==    by 0x3806FE93: (within /usr/lib64/valgrind/amd64-linux/memcheck)
==58831==    by 0x38039886: (within /usr/lib64/valgrind/amd64-linux/memcheck)
==58831==    by 0x38036CB2: (within /usr/lib64/valgrind/amd64-linux/memcheck)
==58831==    by 0x38037CD7: (within /usr/lib64/valgrind/amd64-linux/memcheck)
==58831==    by 0x38049A70: (within /usr/lib64/valgrind/amd64-linux/memcheck)

sched status:
  running_tid=1

Thread 1: status = VgTs_Runnable
==58831==    at 0x40161AA: mmap (in /lib64/ld-2.11.3.so)
==58831==    by 0x40065DA: _dl_map_object_from_fd (in /lib64/ld-2.11.3.so)
==58831==    by 0x4007D1C: _dl_map_object (in /lib64/ld-2.11.3.so)
==58831==    by 0x400D401: openaux (in /lib64/ld-2.11.3.so)
==58831==    by 0x400DE45: _dl_catch_error (in /lib64/ld-2.11.3.so)
==58831==    by 0x400C48F: _dl_map_object_deps (in /lib64/ld-2.11.3.so)
==58831==    by 0x40032DF: dl_main (in /lib64/ld-2.11.3.so)
==58831==    by 0x4014AD2: _dl_sysdep_start (in /lib64/ld-2.11.3.so)
==58831==    by 0x40013CB: _dl_start (in /lib64/ld-2.11.3.so)
==58831==    by 0x4000B07: (within /lib64/ld-2.11.3.so)
==58831==    by 0x2: ???
==58831==    by 0x7FF00057E: ???
==58831==    by 0x7FF000584: ???
==58831==    by 0x7FF000587: ???
--58831--从/lib64/ld-2.11.3.so(0x4000000)读取符号
--58831—从/usr/lib64/valgrind/amd64 linux/memcheck(0x38000000)读取符号
--58831--对象没有符号表
--58831--对象没有动态符号表
--58831--读取抑制文件:/usr/lib64/valgrind/default.supp
==58831==条件跳转或移动取决于未初始化的值
==58831==at 0x401677D:strlen(in/lib64/ld-2.11.3.so)
==58831==by 0x4005072:fillin_rpath(in/lib64/ld-2.11.3.so)
==58831==by 0x40086D8:_dl_init_路径(in/lib64/ld-2.11.3.so)
==58831==0x400311F:dl_main(in/lib64/ld-2.11.3.so)
==58831==0x4014AD2:_dl_sysdep_start(in/lib64/ld-2.11.3.so)
==58831==0x40013CB:_dl_start(in/lib64/ld-2.11.3.so)
==58831==by0x4000b07:(在/lib64/ld-2.11.3.so内)
==58831==0x2:???
==58831==0x7FF00057E:???
==58831==0x7FF000584:???
==58831==0x7FF000587:???
--58831—从/usr/lib64/valgrind/amd64 linux/vgpreload_core.so(0x4A21000)读取符号
--58831--对象没有符号表
==58831==
==58831==条件跳转或移动取决于未初始化的值
==58831==at 0x4016616:index(in/lib64/ld-2.11.3.so)
==58831==by 0x4007682:扩展动态字符串令牌(在/lib64/ld-2.11.3.so中)
==58831==by 0x4007C75:_dl_map_对象(in/lib64/ld-2.11.3.so)
==58831==by 0x400184D:map_doit(in/lib64/ld-2.11.3.so)
==58831==by 0x400DE45:_dl_catch_错误(in/lib64/ld-2.11.3.so)
==58831==by 0x4001766:do_预加载(in/lib64/ld-2.11.3.so)
==58831==0x4003D3F:dl_main(in/lib64/ld-2.11.3.so)
==58831==0x4014AD2:_dl_sysdep_start(in/lib64/ld-2.11.3.so)
==58831==0x40013CB:_dl_start(in/lib64/ld-2.11.3.so)
==58831==by0x4000b07:(在/lib64/ld-2.11.3.so内)
==58831==0x2:???
==58831==0x7FF00057E:???
==58831==
==58831==条件跳转或移动取决于未初始化的值
==58831==at 0x401661B:索引(in/lib64/ld-2.11.3.so)
==58831==by 0x4007682:扩展动态字符串令牌(在/lib64/ld-2.11.3.so中)
==58831==by 0x4007C75:_dl_map_对象(in/lib64/ld-2.11.3.so)
==58831==by 0x400184D:map_doit(in/lib64/ld-2.11.3.so)
==58831==by 0x400DE45:_dl_catch_错误(in/lib64/ld-2.11.3.so)
==58831==by 0x4001766:do_预加载(in/lib64/ld-2.11.3.so)
==58831==0x4003D3F:dl_main(in/lib64/ld-2.11.3.so)
==58831==0x4014AD2:_dl_sysdep_start(in/lib64/ld-2.11.3.so)
==58831==0x40013CB:_dl_start(in/lib64/ld-2.11.3.so)
==58831==by0x4000b07:(在/lib64/ld-2.11.3.so内)
==58831==0x2:???
==58831==0x7FF00057E:???
--58831—从/usr/lib64/valgrind/amd64 linux/vgpreload_memcheck.so(0x4C23000)读取符号
--58831--对象没有符号表
--58831--重拨:0x40165b0(索引)重定向到0x4c27ba0(索引)
--58831--重拨:0x4016630(strcmp)重定向到0x4c28160(strcmp)
--58831--重拨:0x4016740(strlen)重定向到0x4c27e60(strlen)
--58831——从/usr/lib64/libstdc++.so.6.0.17(0x4E2C000)读取符号
--58831--警告:DWARF2 CFI读卡器:未处理的DW_操作码0x2a
valgrind:m_debuginfo/readdwarf.c:2152(复制转换树):断言'srcix>=0&&srcix
在我看来,您在编译程序时似乎没有添加调试符号。如果您使用的是GCC,请在编译命令中附加“-ggdb”。例如,如果你写过:

gcc -o program main.c
将其更改为:

gcc -o program main.c -ggdb
然后Valgrind将能够将潜在错误与代码联系起来。另外,我认为您不需要在Valgrind命令中使用“-v”标志

好的,我