代码之家  ›  专栏  ›  技术社区  ›  Chris Huang-Leaver

“噪音”是什么意思?

  •  11
  • Chris Huang-Leaver  · 技术社区  · 16 年前

    echo 'int main() {return 0;}' | gcc -x c -o test -
    

    valgrind ./test
    
    ==1096== Use of uninitialised value of size 8
    ==1096==    at 0x400A202: _dl_new_object (in /lib64/ld-2.10.1.so)
    ==1096==    by 0x400607F: _dl_map_object_from_fd (in /lib64/ld-2.10.1.so)
    ==1096==    by 0x4007A2C: _dl_map_object (in /lib64/ld-2.10.1.so)
    ==1096==    by 0x400199A: map_doit (in /lib64/ld-2.10.1.so)
    ==1096==    by 0x400D495: _dl_catch_error (in /lib64/ld-2.10.1.so)
    ==1096==    by 0x400189E: do_preload (in /lib64/ld-2.10.1.so)
    ==1096==    by 0x4003CCD: dl_main (in /lib64/ld-2.10.1.so)
    ==1096==    by 0x401404B: _dl_sysdep_start (in /lib64/ld-2.10.1.so)
    ==1096==    by 0x4001471: _dl_start (in /lib64/ld-2.10.1.so)
    ==1096==    by 0x4000BA7: (within /lib64/ld-2.10.1.so)
    * large block of similar snipped *
    ==1096== Use of uninitialised value of size 8
    ==1096==    at 0x4F35FDD: (within /lib64/libc-2.10.1.so)
    ==1096==    by 0x4F35B11: (within /lib64/libc-2.10.1.so)
    ==1096==    by 0x4A1E61C: _vgnU_freeres (vg_preloaded.c:60)
    ==1096==    by 0x4E5F2E4: __run_exit_handlers (in /lib64/libc-2.10.1.so)
    ==1096==    by 0x4E5F354: exit (in /lib64/libc-2.10.1.so)
    ==1096==    by 0x4E48A2C: (below main) (in /lib64/libc-2.10.1.so)
    ==1096==
    ==1096== ERROR SUMMARY: 3819 errors from 298 contexts (suppressed: 876 from 4)
    ==1096== malloc/free: in use at exit: 0 bytes in 0 blocks.
    ==1096== malloc/free: 0 allocs, 0 frees, 0 bytes allocated.
    ==1096== For counts of detected errors, rerun with: -v
    ==1096== Use --track-origins=yes to see where uninitialised values come from
    ==1096== All heap blocks were freed -- no leaks are possible.
    

    您可以在这里看到完整的结果: http://pastebin.com/gcTN8xGp

    --默认情况下,show below main设置为no,但在main之后似乎没有--show。

    3 回复  |  直到 16 年前
        1
  •  12
  •   Michael F    16 年前

    可以通过附加

    {
       ld error suppression
       Memcheck:Cond
       fun:dl_main
       fun:_dl_sysdep_start
       fun:_dl_start
       obj:/lib64/ld-2.10.1.so
    }
    

    /usr/lib/valgrind/default.supp (或定义自己的抑制文件)。

    至少在Debian&看来,这是一个已知的链接器/加载程序错误;Arch Linux开发人员;我不确定其他人,以及他们计划的行动方案。

        2
  •  5
  •   Chris Huang-Leaver    16 年前

    升级至Valgrind 3.5.0或更高版本。默认的.supp文件已经更新。

        3
  •  4
  •   Norman Ramsey    16 年前

    我时常会有这些症状,解决的办法就是 . 德比安的小精灵们会照顾好剩下的人。