vector 测试
Mget is available.

Fix Valgrind must-be-redirected error in Gentoo

tubo posted @ 2014年9月03日 16:11 in 未分类 , 1315 阅读

Last week, I tried to use Valgrind to identify potential memory related bugs, since segmentation faults occured randomly in a Python C library. However, Valgrind failed to start and displayed the following error message:

        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.
    

The message mentions how to fix this error in various distributions (Debian, Ubuntu, Fedora, etc), except for Gentoo. Note that there is no such thing as a "debugging symbols package" in Gentoo, because Portage will compile all packages from scratch.

In order to fix this error, it is necessary to:

  1. enable the splitdebug feature (or rather: it is "recommended" to enable).
  2. enable debugging symbols for glibc.
  3. recompile sys-libs/glibc.

The first step is trivial: add splitdebug to FEATURES in /etc/make.conf:

        FEATURES="$FEATURES splitdebug"
    

The second step, enabling debugging symbols, can also be set globally. However Portage allows you to specify CFLAGS and CXXFLAGS per package. So adding -ggdb to both CFLAGS and CXXFLAGS will complete the second step. Create the file /etc/portage/env/debug.conf and add:

        CFLAGS="${CFLAGS} -ggdb"
        CXXFLAGS="${CFLAGS} -ggdb"
    

Next, add the following line to /etc/portage/package.env/glibc:

        sys-libs/glibc debug.conf
    

Note: It is also possible to enable splitdebug on a per package basis, but in my humble opinion it is useful to have debugging symbols system-wide in case you want to backtrace a segfault of an arbitrary executable using gdb.

The final step is recompiling glibc: emerge sys-libs/glibc (this part should be straightforward). Once glibc is emerged, you should see the file /usr/lib/debug/lib/ld-2.12.2.so.debug (substitute 2.12.2 with your glibc version number), which contains the stripped debugging symbols of glibc. To confirm this, file will show that the file is not stripped:

        /usr/lib/debug/lib/ld-2.12.2.so.debug: ELF 32-bit LSB shared object, Intel
        80386, version 1 (SYSV), dynamically linked, not stripped
    

If all steps succeeded, you should be able to run Valgrind successfully on Gentoo!

http://blog.kompiler.org/post/10/2011-11-30/Fix_Valgrind's_must-be-redirected_error_in_Gentoo/

net worth 说:
2022年7月24日 21:50

Checking out the information of any celebrity on idol net worth to know how much their name and fame worth and their family members.

Alyssa 说:
2023年1月03日 02:52

If you receive the "Valgrind must be redirected" error when trying to run Valgrind in Gentoo, there are a few thing you can try to fix the issue. First, make sure homes for sale East Wenatchee you have the Valgrind USE flag enabled for Gentoo. You can do this by running "eselect profile list" and checking for the "valgrind" USE flag. If the flag is not enabled, you will need to add it to your USE flags and rebuild your system. You can also try running Valgrind with the "--error-limit=no" option, which will disable the error message.

charlly 说:
2023年2月17日 17:29

I recently encountered an issue when trying to use Valgrind for debugging some memory related issues within a Python C library. Valgrind failed to start and displayed an error message containing the words “Fatal error at startup” and “must-be-redirected.” By following the instructions in the error message, I discovered that the problem was with the ld-linux.so.2 library, and that one of the possible solutions was to install glibc's debuginfo package. After doing this, Valgrind worked as expected and I was Food Delivery able to identify the root cause of my segmentation faults.


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter