[Bug 881236] Re: valgrind on amd64 no longer works with 32-bit binaries
Heikki Hellgren
heiccih at gmail.com
Thu Apr 5 07:45:27 UTC 2012
Same problem here. I got the valgrind working with some real stupid hack
but not sure what it breaks. Here are the steps:
1. Move from /usr/lib/debug/ the following directories to the following places:
usr/bin/ -> usr/bintmp/
usr/lib/ -> usr/libtmp/
usr/sbin/ -> usr/sbintmp/
sbin/ -> sbintmp/
2. Unpack the .deb:
sudo dpkg --unpack /var/cache/apt/archives/libc6-dbg_2.13-20ubuntu5.1_i386.deb
With this the debug system is replaced with 32bit versions of everything
and I am not sure if the valgrind can actually be used for 64bit
programs after this. This is most probably not the best way to fix this
so still waiting for the correction for this bug.
valgrind-3.6.1-Debian
Ubuntu 11.10 64bit 3.0.0-17-generic
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to eglibc in Ubuntu.
https://bugs.launchpad.net/bugs/881236
Title:
valgrind on amd64 no longer works with 32-bit binaries
Status in “eglibc” package in Ubuntu:
Confirmed
Bug description:
valgrind works as expected on 64-bit binaries, when using a x86-64 installation...
[icculus at taise ~]$ cat hello.c
#include <stdio.h>
int main(void) { printf("hello.\n"); return 0; }
[icculus at taise ~]$ gcc -m64 -o hello hello.c
[icculus at taise ~]$ file hello
hello: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, not stripped
[icculus at taise ~]$ valgrind ./hello
==18291== Memcheck, a memory error detector
==18291== Copyright (C) 2002-2010, and GNU GPL'd, by Julian Seward et al.
==18291== Using Valgrind-3.6.1-Debian and LibVEX; rerun with -h for copyright info
==18291== Command: ./hello
==18291==
hello.
==18291==
==18291== HEAP SUMMARY:
==18291== in use at exit: 0 bytes in 0 blocks
==18291== total heap usage: 0 allocs, 0 frees, 0 bytes allocated
==18291==
==18291== All heap blocks were freed -- no leaks are possible
==18291==
==18291== For counts of detected and suppressed errors, rerun with: -v
==18291== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 4 from 4)
...however, it does not work with 32-bit binaries...
[icculus at taise ~]$ gcc -m32 -o hello hello.c
[icculus at taise ~]$ file hello
hello: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, not stripped
[icculus at taise ~]$ valgrind ./hello
==18492== Memcheck, a memory error detector
==18492== Copyright (C) 2002-2010, and GNU GPL'd, by Julian Seward et al.
==18492== Using Valgrind-3.6.1-Debian and LibVEX; rerun with -h for copyright info
==18492== Command: ./hello
==18492==
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: index
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.
Please note that "lib6-dbg" is installed on this system...
[icculus at taise ~]$ sudo apt-get install libc6-dbg
Reading package lists... Done
Building dependency tree
Reading state information... Done
libc6-dbg is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
This worked with 32-bit binaries in the past (perhaps as recently as 11.04, but I can't say for certain).
This is happening on a fresh 11.04 x86-64 desktop install, default
Ubuntu (not Kubuntu, etc). There are some non-default packages
installed, like multilib-gcc, as you can tell by the "gcc -m32"
command line working, but I don't think these are causing issues.
Let me know if you need more information.
--ryan.
ProblemType: Bug
DistroRelease: Ubuntu 11.10
Package: valgrind 1:3.6.1-0ubuntu3
ProcVersionSignature: Ubuntu 3.0.0-12.20-generic 3.0.4
Uname: Linux 3.0.0-12-generic x86_64
NonfreeKernelModules: nvidia
ApportVersion: 1.23-0ubuntu3
Architecture: amd64
Date: Tue Oct 25 01:13:48 2011
InstallationMedia: Ubuntu 11.10 "Oneiric Ocelot" - Release amd64 (20111012)
ProcEnviron:
PATH=(custom, user)
LANG=en_US.UTF-8
SHELL=/bin/bash
SourcePackage: valgrind
UpgradeStatus: No upgrade log present (probably fresh install)
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/eglibc/+bug/881236/+subscriptions
More information about the foundations-bugs
mailing list