Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

I have been trying to follow the online tutorial for Learn C The Hard Way.

However after setting up valgrind (I followed other links that help setting up valgrind on ubuntu 12.04), when I try to debug the c executable, I find the following errors.

ayusman@ayusman-ubuntu:~/lcthw$ valgrind ./ex4
==1984== Memcheck, a memory error detector
==1984== Copyright (C) 2002-2011, and GNU GPL'd, by Julian Seward et al.
==1984== Using Valgrind-3.7.0 and LibVEX; rerun with -h for copyright info
==1984== Command: ./ex4
==1984== 

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.

ayusman@ayusman-ubuntu:~/lcthw$ 

Is there something that I can do to make valgrind finally work?

I have ubuntu 12.04 on virtual box. My laptop is a Windows 7 64 bit OS.

share|improve this question
    
valgrind worked fine for me out of the box, but i can't say what libraries i already had installed. valgrind is available from repo. you don't need to compile is like learn C the hard way states. installing from repo will handle the dependency issue for you –  hbdgaf Jun 8 '12 at 17:54

2 Answers 2

I got essentially the same message (except that ld-linux-x86-64.so.2 was replaced by ld-linux.so.2). I had installed Valgrind using apt-get so libc6-dbg was already included as a dependency.

I haven't fully resolved this yet, but a clue is that the error correlates with my use of -m32 when building.

So it would seem that, in my case, the problem is the lack of a 32-bit version of libc6-dbg (or some of its components), when building on a 64-bit install of Ubuntu 12.04.


Solution (for my case)

For me, the following command made things work...

sudo apt-get install libc6-dbg:i386

This is discussed at https://bugs.launchpad.net/ubuntu/+source/eglibc/+bug/881236

Note: The package libc6-dbg:i386 doesn't show up as an available option in Synaptic or via command-completion of apt-get -- but it was there anyway.

share|improve this answer
    
There's a good change you'll need help building first: stackoverflow.com/a/7412698/86967 –  nobar Jun 3 '13 at 19:44
    
this should be marked as correct; the :i386 is the key here. –  Thomas Shields Dec 7 '13 at 10:36
    
It was the 32-bit that did the trick! –  Cardin Dec 12 '13 at 10:08
    
This solved it for me.. I was seeing this error on a vagrant machine. As the other commenters said, this should be marked as correct. (libgc-dbg was already installed as a valgrind dependency, it was the i386 that did the trick) –  Ken Mar 20 at 17:11
    
This answer correctly dealt with 32bit binaries. libc6-dbg was already hinted in valgrind's error message. –  leesei Dec 18 at 3:10
up vote 9 down vote accepted

Ok, I did intsall libc6-dbg like so

sudo apt-get install libc6-dbg

and valgrind seems to work fine.

Thanks to the ubuntu forum link:

http://ubuntuforums.org/showthread.php?t=1017692

share|improve this answer
    
thanks, should be marked as answer –  Goaler444 Apr 17 '13 at 18:31
    
@Goaler444 I just did. Thanks for reminding. –  Ayusman Apr 17 '13 at 23:07
    
as the other answer points, doing sudo apt-get install libc6-dbg:i386 could be a solution depending on the binary to be valgrinded (64 bits vs 32 bits). –  logoff Aug 5 at 8:54

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.