Possible regression in Karmic: "valgrind echo foo" has problems

Mike Pontillo pontillo at gmail.com
Mon Aug 31 02:17:43 UTC 2009


Hi all,

   I am trying to triage some strange segfaults on my Karmic system. It
seems like I am seeing intermittent crashes in seemingly random
programs.

   Last night I found a reproducible crash. After installing the 'samba'
package and running 'net usershare list', it *always* crashes. I tried
debugging in gdb a few times, but the backtrace wasn't consistent, and I
couldn't explain the crashes. It looked like something was wrong at a
lower layer. (maybe libc, the, kernel, gcc etc.)

   Then I installed the "valgrind" and "libc-dbg" packages and did a basic test:

$ valgrind echo foo
==13186== Memcheck, a memory error detector.
==13186== Copyright (C) 2002-2008, and GNU GPL'd, by Julian Seward et al.
==13186== Using LibVEX rev 1884, a library for dynamic binary translation.
==13186== Copyright (C) 2004-2008, and GNU GPL'd, by OpenWorks LLP.
==13186== Using valgrind-3.4.1-Debian, a dynamic binary instrumentation framework.
==13186== Copyright (C) 2000-2008, and GNU GPL'd, by Julian Seward et al.
==13186== For more details, rerun with: -v
==13186== 
==13186== Conditional jump or move depends on uninitialised value(s)
==13186==    at 0x40160F1: strlen (strlen.S:110)
==13186==    by 0x4007C74: _dl_init_paths (dl-load.c:776)
==13186==    by 0x4002A22: dl_main (rtld.c:1383)
==13186==    by 0x4013DED: _dl_sysdep_start (dl-sysdep.c:243)
==13186==    by 0x4000C6C: _dl_start (rtld.c:328)
==13186==    by 0x4000856: (within /lib/ld-2.10.1.so)
==13186== 
==13186== Conditional jump or move depends on uninitialised value(s)
==13186==    at 0x40160FC: strlen (strlen.S:115)
==13186==    by 0x4007C74: _dl_init_paths (dl-load.c:776)
==13186==    by 0x4002A22: dl_main (rtld.c:1383)
==13186==    by 0x4013DED: _dl_sysdep_start (dl-sysdep.c:243)
==13186==    by 0x4000C6C: _dl_start (rtld.c:328)
==13186==    by 0x4000856: (within /lib/ld-2.10.1.so)
==13186== 
==13186== Conditional jump or move depends on uninitialised value(s)
==13186==    at 0x400AEC6: _dl_relocate_object (do-rel.h:104)
==13186==    by 0x4003200: dl_main (rtld.c:2224)
==13186==    by 0x4013DED: _dl_sysdep_start (dl-sysdep.c:243)
==13186==    by 0x4000C6C: _dl_start (rtld.c:328)
==13186==    by 0x4000856: (within /lib/ld-2.10.1.so)
==13186== 
==13186== Conditional jump or move depends on uninitialised value(s)
==13186==    at 0x400ABA3: _dl_relocate_object (do-rel.h:117)
==13186==    by 0x4003200: dl_main (rtld.c:2224)
==13186==    by 0x4013DED: _dl_sysdep_start (dl-sysdep.c:243)
==13186==    by 0x4000C6C: _dl_start (rtld.c:328)
==13186==    by 0x4000856: (within /lib/ld-2.10.1.so)
==13186== 
==13186== Conditional jump or move depends on uninitialised value(s)
==13186==    at 0x400AF39: _dl_relocate_object (do-rel.h:127)
==13186==    by 0x4003200: dl_main (rtld.c:2224)
==13186==    by 0x4013DED: _dl_sysdep_start (dl-sysdep.c:243)
==13186==    by 0x4000C6C: _dl_start (rtld.c:328)
==13186==    by 0x4000856: (within /lib/ld-2.10.1.so)
==13186== 
==13186== Conditional jump or move depends on uninitialised value(s)
==13186==    at 0x400A27E: _dl_relocate_object (do-rel.h:65)
==13186==    by 0x400312E: dl_main (rtld.c:2287)
==13186==    by 0x4013DED: _dl_sysdep_start (dl-sysdep.c:243)
==13186==    by 0x4000C6C: _dl_start (rtld.c:328)
==13186==    by 0x4000856: (within /lib/ld-2.10.1.so)
==13186== 
==13186== Conditional jump or move depends on uninitialised value(s)
==13186==    at 0x400A286: _dl_relocate_object (do-rel.h:68)
==13186==    by 0x400312E: dl_main (rtld.c:2287)
==13186==    by 0x4013DED: _dl_sysdep_start (dl-sysdep.c:243)
==13186==    by 0x4000C6C: _dl_start (rtld.c:328)
==13186==    by 0x4000856: (within /lib/ld-2.10.1.so)
==13186== 
==13186== Conditional jump or move depends on uninitialised value(s)
==13186==    at 0x400ABA3: _dl_relocate_object (do-rel.h:117)
==13186==    by 0x400312E: dl_main (rtld.c:2287)
==13186==    by 0x4013DED: _dl_sysdep_start (dl-sysdep.c:243)
==13186==    by 0x4000C6C: _dl_start (rtld.c:328)
==13186==    by 0x4000856: (within /lib/ld-2.10.1.so)
foo
==13186== 
==13186== ERROR SUMMARY: 13 errors from 8 contexts (suppressed: 0 from 0)
==13186== malloc/free: in use at exit: 0 bytes in 0 blocks.
==13186== malloc/free: 1,387 allocs, 1,387 frees, 64,390 bytes allocated.
==13186== For counts of detected errors, rerun with: -v
==13186== Use --track-origins=yes to see where uninitialised values come from
==13186== All heap blocks were freed -- no leaks are possible.

   I am seeing this on two separate systems running Karmic.

   On a different (Jaunty) system, the same output is as follows:

$ valgrind echo foo
==13258== Memcheck, a memory error detector.
==13258== Copyright (C) 2002-2008, and GNU GPL'd, by Julian Seward et al.
==13258== Using LibVEX rev 1884, a library for dynamic binary translation.
==13258== Copyright (C) 2004-2008, and GNU GPL'd, by OpenWorks LLP.
==13258== Using valgrind-3.4.1-Debian, a dynamic binary instrumentation framework.
==13258== Copyright (C) 2000-2008, and GNU GPL'd, by Julian Seward et al.
==13258== For more details, rerun with: -v
==13258==
foo
==13258==
==13258== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 11 from 1)
==13258== malloc/free: in use at exit: 0 bytes in 0 blocks.
==13258== malloc/free: 1,387 allocs, 1,387 frees, 64,390 bytes allocated.
==13258== For counts of detected errors, rerun with: -v
==13258== All heap blocks were freed -- no leaks are possible.

   Can anyone else recreate this? Any thoughts about what to look at next?

Regards,
Mike





More information about the Ubuntu-devel-discuss mailing list