[Bug 1247026] Re: valgrind does not work on amd64 (strlen missing)

Lars Marqvart lars.marqvart at greenwavereality.com
Wed Nov 27 14:16:30 UTC 2013


It turns out that this problem was caused by libc6-amd64 being installed (this package was pulled in as a dependency of another package). On a amd64 system this does not make sense as the libc6-amd64 package is not "there", its contents is provided by the libc6 package.
Installing libc6-amd64 replaces the symlink from ld-linux-x86-64.so.2 to /lib/x86_64-linux-gnu/ld-2.17.so normally found in /lib64 with a real file version of ld-2.17.so - and makes valgrind not work.

Removing libc6-amd64 and restoring the correct symlink fixes valgrind.
The recipe for doing this is:
1) Close everything (you'll be rebooting in a few sec.)
2) Half-remove libc6-amd64: apt-get remove libc6-amd64 (this causes ld-2.17.so to disappear, so you can't run any commands after this).
3) Reboot the system using a live-cd.
4) Recreate the correct symlink: ln -s /lib/x86_64-linux-gnu/ld-2.17.so /lib64/ld-linux-x86-64.so.2
6) Reboot the system (normal boot)
7) You can now completely remove the libc6-amd64 package.

The real bug in this is that it is possible to install libc6-amd64 on a
amd64 system in the first place. This should definitely be blocked.

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to valgrind in Ubuntu.
https://bugs.launchpad.net/bugs/1247026

Title:
  valgrind does not work on amd64 (strlen missing)

Status in Valgrind:
  Unknown
Status in “glibc” package in Ubuntu:
  Confirmed
Status in “valgrind” package in Ubuntu:
  Confirmed

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-x86-64.so.2
  valgrind:  was not found whilst processing
  valgrind:  symbols from the object with soname: ld-linux-x86-64.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.

  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://bugs.kde.org/show_bug.cgi?id=286864

To manage notifications about this bug go to:
https://bugs.launchpad.net/valgrind/+bug/1247026/+subscriptions



More information about the foundations-bugs mailing list