Package: valgrindVersion: 1:3.7.0-3Severity: importantTags: upstream
Dear Mr. Maintainer,
I have problems running 32-bit binaries in my 64-bit valgrind, howeverthis 
likely a bug related to eglibc or possibly in how valgrinddepends on eglibc's 
packages. I expect that both 32-bit and 64-bitbinaries can be run inside 
valgrind (or at least that there arepackages recommended by valgrind that I 
install to do so).
The output from my 64-bit valgrind when running a 32-bit binary:
        --22537-- Reading syms from /lib32/ld-2.13.so (0x4400000)        
--22537--    object doesn't have a symbol table        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
As far as I can see /lib32/ld-2.13.so (installed by libc6-i386) ismissing a 
.gnu_debuglink section which points to a correspondingdebug-version located 
under /usr/lib/debug. The reason for this islikely that the installed libc6-dbg 
does not contain any librarieswith debug information for the libraries 
installed by libc6-i386.
        --23048-- Reading syms from /lib/x86_64-linux-gnu/libc-2.13.so 
(0x4a22000)        --23048--   Considering /lib/x86_64-linux-gnu/libc-2.13.so 
..        --23048--   .. CRC mismatch (computed 9d6b2fdb wanted f9c6fbfb)       
 --23048--   Considering /usr/lib/debug/lib/x86_64-linux-gnu/libc-2.13.so ..    
    --23048--   .. CRC is valid
For 64-bit binaries (shown above) /lib/x86_64-linux-gnu/ld-2.13.so(installed by 
libc6) does have a .gnu_debuglink section pointing tothe debug-version of 
located in /usr/lib/debug (more 
specifically/usr/lib/debug/lib/x86_64-linux-gnu/ld-2.13.so) which is installed 
bylibc6-dbg.
This small script collects some (hopefully relevant) information andshows 
concisely what the problem is:        #!/bin/bash        dpkg -l valgrind | 
tail -1        dpkg -l gcc | tail -1        dpkg -l libc6 | tail -1        dpkg 
-l libc6-dbg | tail -1        dpkg -l libc6-i386 | tail -1        dpkg -l 
linux-image-amd64 | tail -1        echo -e '#include <stdio.h>\nint main() { 
printf("goodbye world!\\n"); }' > testing.c        gcc -m64 -o ./testing-64 
testing.c        echo "=============64646464============="        valgrind -v 
./testing-64        gcc -m32 -o ./testing-32 testing.c        echo 
"=============32323232============="        valgrind -v ./testing-32
A log of the output of the script is attached.
If there is any other information you need to help me solve thisproblem I'm 
naturally happy to provide it. :)
 / Sebastian
-- System Information:Debian Release: wheezy/sid  APT prefers testing  APT 
policy: (500, 'testing')Architecture: amd64 (x86_64)
Kernel: Linux 3.2.0-2-amd64 (SMP w/8 CPU cores)Locale: LANG=en_US.UTF-8, 
LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) (ignored: LC_ALL set to en_US.UTF-8)Shell: 
/bin/sh linked to /bin/bash
Versions of packages valgrind depends on:ii  libc6      2.13-27ii  libc6-dbg  
2.13-27
Versions of packages valgrind recommends:ii  gdb  7.4really-1
Versions of packages valgrind suggests:pn  alleyoop     <none>pn  kcachegrind  
4:4.7.4-3pn  valkyrie     <none>
-- no debconf information
                                          
ii  valgrind                              1:3.7.0-3                       
memory debugger and profiler
ii  gcc                                   4:4.6.2-4                       GNU C 
compiler
ii  libc6:amd64                           2.13-27                         
Embedded GNU C Library: Shared libraries
ii  libc6-dbg:amd64                       2.13-27                         
Embedded GNU C Library: detached debugging symbols
ii  libc6-i386                            2.13-27                         
Embedded GNU C Library: 32-bit shared libraries for AMD64
ii  linux-image-amd64                     3.2+44                          Linux 
for 64-bit PCs (meta-package)
=============64646464=============
==23345== Memcheck, a memory error detector
==23345== Copyright (C) 2002-2011, and GNU GPL'd, by Julian Seward et al.
==23345== Using Valgrind-3.7.0 and LibVEX; rerun with -h for copyright info
==23345== Command: ./testing-64
==23345== 
--23345-- Valgrind options:
--23345--    --suppressions=/usr/lib/valgrind/debian-libc6-dbg.supp
--23345--    -v
--23345-- Contents of /proc/version:
--23345--   Linux version 3.2.0-2-amd64 (Debian 3.2.12-1) 
(debian-ker...@lists.debian.org) (gcc version 4.6.3 (Debian 4.6.3-1) ) #1 SMP 
Tue Mar 20 18:36:37 UTC 2012
--23345-- Arch and hwcaps: AMD64, amd64-sse3-cx16
--23345-- Page sizes: currently 4096, max supported 4096
--23345-- Valgrind library directory: /usr/lib/valgrind
--23345-- Reading syms from /tmp/test/testing-64 (0x400000)
--23345-- Reading syms from /lib/x86_64-linux-gnu/ld-2.13.so (0x4000000)
--23345--   Considering /lib/x86_64-linux-gnu/ld-2.13.so ..
--23345--   .. CRC mismatch (computed 6da8e8c1 wanted c5172abb)
--23345--   Considering /usr/lib/debug/lib/x86_64-linux-gnu/ld-2.13.so ..
--23345--   .. CRC is valid
--23345-- Reading syms from /usr/lib/valgrind/memcheck-amd64-linux (0x38000000)
--23345--    object doesn't have a symbol table
--23345--    object doesn't have a dynamic symbol table
--23345-- Reading suppressions file: /usr/lib/valgrind/debian-libc6-dbg.supp
--23345-- Reading suppressions file: /usr/lib/valgrind/default.supp
==23345== embedded gdbserver: reading from 
/tmp/vgdb-pipe-from-vgdb-to-23345-by-sebras-on-hostname
==23345== embedded gdbserver: writing to   
/tmp/vgdb-pipe-to-vgdb-from-23345-by-sebras-on-hostname
==23345== embedded gdbserver: shared mem   
/tmp/vgdb-pipe-shared-mem-vgdb-23345-by-sebras-on-hostname
==23345== 
==23345== TO CONTROL THIS PROCESS USING vgdb (which you probably
==23345== don't want to do, unless you know exactly what you're doing,
==23345== or are doing some strange experiment):
==23345==   /usr/lib/valgrind/../../bin/vgdb --pid=23345 ...command...
==23345== 
==23345== TO DEBUG THIS PROCESS USING GDB: start GDB like this
==23345==   /path/to/gdb ./testing-64
==23345== and then give GDB the following command
==23345==   target remote | /usr/lib/valgrind/../../bin/vgdb --pid=23345
==23345== --pid is optional if only one valgrind process is running
==23345== 
--23345-- REDIR: 0x4016720 (strlen) redirected to 0x380438c7 (???)
--23345-- Reading syms from /usr/lib/valgrind/vgpreload_core-amd64-linux.so 
(0x4022000)
--23345--    object doesn't have a symbol table
--23345-- Reading syms from /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so 
(0x4024000)
--23345--    object doesn't have a symbol table
--23345-- REDIR: 0x4016590 (index) redirected to 0x4029060 (index)
--23345-- REDIR: 0x4016610 (strcmp) redirected to 0x402a020 (strcmp)
--23345-- Reading syms from /lib/x86_64-linux-gnu/libc-2.13.so (0x4a22000)
--23345--   Considering /lib/x86_64-linux-gnu/libc-2.13.so ..
--23345--   .. CRC mismatch (computed 9d6b2fdb wanted f9c6fbfb)
--23345--   Considering /usr/lib/debug/lib/x86_64-linux-gnu/libc-2.13.so ..
--23345--   .. CRC is valid
--23345-- REDIR: 0x4aa55d0 (strcasecmp) redirected to 0x4022640 
(_vgnU_ifunc_wrapper)
--23345-- REDIR: 0x4aa7890 (strncasecmp) redirected to 0x4022640 
(_vgnU_ifunc_wrapper)
--23345-- REDIR: 0x4aa3630 (__GI_strrchr) redirected to 0x4028e80 (__GI_strrchr)
--23345-- REDIR: 0x4aa1b50 (__GI_strlen) redirected to 0x40293c0 (__GI_strlen)
goodbye world!
--23345-- REDIR: 0x4a9c780 (free) redirected to 0x4027a40 (free)
==23345== 
==23345== HEAP SUMMARY:
==23345==     in use at exit: 0 bytes in 0 blocks
==23345==   total heap usage: 0 allocs, 0 frees, 0 bytes allocated
==23345== 
==23345== All heap blocks were freed -- no leaks are possible
==23345== 
==23345== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 4 from 4)
--23345-- 
--23345-- used_suppression:      4 dl-hack3-cond-1
==23345== 
==23345== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 4 from 4)
=============32323232=============
==23354== Memcheck, a memory error detector
==23354== Copyright (C) 2002-2011, and GNU GPL'd, by Julian Seward et al.
==23354== Using Valgrind-3.7.0 and LibVEX; rerun with -h for copyright info
==23354== Command: ./testing-32
==23354== 
--23354-- Valgrind options:
--23354--    --suppressions=/usr/lib/valgrind/debian-libc6-dbg.supp
--23354--    -v
--23354-- Contents of /proc/version:
--23354--   Linux version 3.2.0-2-amd64 (Debian 3.2.12-1) 
(debian-ker...@lists.debian.org) (gcc version 4.6.3 (Debian 4.6.3-1) ) #1 SMP 
Tue Mar 20 18:36:37 UTC 2012
--23354-- Arch and hwcaps: X86, x86-sse1-sse2
--23354-- Page sizes: currently 4096, max supported 4096
--23354-- Valgrind library directory: /usr/lib/valgrind
--23354-- Reading syms from /lib32/ld-2.13.so (0x4400000)
--23354--    object doesn't have a symbol table

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.

Reply via email to