Per lavoro sono costretto a programmare in C++ e Valgrind si è rivelato essere un ottimo alleato soprattutto nel momento in cui ci si trova costretti a combattere con problemi riguardanti l'allocazione della memoria.
Nelle ultime versioni di Sabayon ho però riscontrato un problema che impedisce a Valgrind di funzionare correttamente. Se quando avviate Valgrind avete un output simile al seguente:
$ valgrind ls
==30502== Memcheck, a memory error detector
==30502== Copyright (C) 2002-2009, and GNU GPL'd, by Julian Seward et al.
==30502== Using Valgrind-3.5.0 and LibVEX; rerun with -h for copyright info
==30502== Command: ls
==30502==
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.
valgrind:
valgrind: Cannot continue -- exiting now. Sorry.
allora vi conviene seguire i consigli che potete trovare qui. Fondamentalmente, quello che è necessario fare è:
Nelle ultime versioni di Sabayon ho però riscontrato un problema che impedisce a Valgrind di funzionare correttamente. Se quando avviate Valgrind avete un output simile al seguente:
$ valgrind ls
==30502== Memcheck, a memory error detector
==30502== Copyright (C) 2002-2009, and GNU GPL'd, by Julian Seward et al.
==30502== Using Valgrind-3.5.0 and LibVEX; rerun with -h for copyright info
==30502== Command: ls
==30502==
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.
valgrind:
valgrind: Cannot continue -- exiting now. Sorry.
allora vi conviene seguire i consigli che potete trovare qui. Fondamentalmente, quello che è necessario fare è:
- Aprire il file /etc/entropy/client.conf;
- Inserire la riga "splitdebug = enable" alla fine del file;
- Reinstallare glibc (sudo equo install glibc);
- Eliminare la riga appena aggiunta dal file /etc/entropy/client.conf.
In questo modo le librerie glibc verranno reinstallate con i simboli per il debug che è proprio quello che serve a Valgrind per funzionare correttamente.