valgrind does not work on amd64 (strlen missing)
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Valgrind |
Unknown
|
High
|
|||
glibc (Ubuntu) |
Confirmed
|
Undecided
|
Unassigned | ||
valgrind (Ubuntu) |
Confirmed
|
Undecided
|
Unassigned |
Bug Description
It seems that strlen has been inlined in the amd64 version of glibc currently used in Ubuntu 13.10 (saucy). This makes it impossible to run valgrind. It fails with the following output:
valgrind: Fatal error at startup: a function redirection
valgrind: which is mandatory for this platform-tool combination
valgrind: cannot be set up. Details of the redirection are:
valgrind:
valgrind: A must-be-redirected function
valgrind: whose name matches the pattern: strlen
valgrind: in an object with soname matching: ld-linux-
valgrind: was not found whilst processing
valgrind: symbols from the object with soname: ld-linux-
valgrind:
valgrind: Possible fixes: (1, short term): install glibc's debuginfo
valgrind: package on this machine. (2, longer term): ask the packagers
valgrind: for your Linux distribution to please in future ship a non-
valgrind: stripped ld.so (or whatever the dynamic linker .so is called)
valgrind: that exports the above-named function using the standard
valgrind: calling conventions for this platform. The package you need
valgrind: to install for fix (1) is called
valgrind:
valgrind: On Debian, Ubuntu: libc6-dbg
valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo
valgrind:
valgrind: Cannot continue -- exiting now. Sorry.
Either the glibc package needs to be fixed so it does not inline strlen or valgrind needs to be fixed. A work-around patch to valgrind can be found in this thread: https:/
Changed in glibc (Ubuntu): | |
status: | New → Confirmed |
Changed in valgrind: | |
importance: | Unknown → High |
Version: 3.7.0 (using KDE 4.4.3)
OS: Linux
valgrind has been compiled from source. The system is Linux with glibc 2.14.1. The /lib/ld-2.14.1.so is NOT striped: valgrind- 3.7.0> file /lib/ld-2.14.1.so valgrind- 3.7.0> valgrind ls
/usr/src/
/lib/ld-2.14.1.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, not stripped
However valgrind bombs out still:
/usr/src/
==11831== Memcheck, a memory error detector
==11831== Copyright (C) 2002-2011, and GNU GPL'd, by Julian Seward et al.
==11831== Using Valgrind-3.7.0 and LibVEX; rerun with -h for copyright info
==11831== Command: ls
==11831==
valgrind: Fatal error at startup: a function redirection
valgrind: which is mandatory for this platform-tool combination
valgrind: cannot be set up. Details of the redirection are:
valgrind:
valgrind: A must-be-redirected function
valgrind: whose name matches the pattern: strlen
valgrind: in an object with soname matching: ld-linux.so.2
valgrind: was not found whilst processing
valgrind: symbols from the object with soname: ld-linux.so.2
valgrind:
valgrind: Possible fixes: (1, short term): install glibc's debuginfo
valgrind: package on this machine. (2, longer term): ask the packagers
valgrind: for your Linux distribution to please in future ship a non-
valgrind: stripped ld.so (or whatever the dynamic linker .so is called)
valgrind: that exports the above-named function using the standard
valgrind: calling conventions for this platform. The package you need
valgrind: to install for fix (1) is called
valgrind:
valgrind: On Debian, Ubuntu: libc6-dbg
valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo
valgrind:
valgrind: Cannot continue -- exiting now. Sorry.
Reproducible: Always
Steps to Reproduce:
repeat the command
Actual Results:
the same
Expected Results:
the same
the same