Arch Linux

Please read this before reporting a bug:
https://wiki.archlinux.org/title/Bug_reporting_guidelines

Do NOT report bugs when a package is just outdated, or it is in the AUR. Use the 'flag out of date' link on the package page, or the Mailing List.

REPEAT: Do NOT report bugs for outdated packages!
Tasklist

FS#11232 - The valgrind package is broken due to mismatching glibc version and /usr/lib/valgrind/default.supp

Attached to Project: Arch Linux
Opened by Arvid Norlander (AnMaster) - Saturday, 16 August 2008, 20:24 GMT
Last edited by Jan de Groot (JGC) - Wednesday, 20 August 2008, 20:25 GMT
Task Type Bug Report
Category Packages: Extra
Status Closed
Assigned To Aaron Griffin (phrakture)
Architecture All
Severity Medium
Priority Normal
Reported Version None
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 0
Private No

Details

Description:
The /usr/lib/valgrind/default.supp is generated at valgrind build time, it includes:
# xfree-3.supp xfree-4.supp glibc-2.34567-NPTL-helgrind.supp glibc-2.7.supp
(quote from said file).

However the glibc version on arch is 2.8, which results in false positives in ld.so (see below).

The only way to fix this is making sure to rebuild valgrind package after every glibc package upgrade I guess.

Locally rebuilding the package from abs and installing that fixes the issue.

Additional info:
* valgrind package version is 3.3.1-1
* System is i686. The issue may also be present on x86_64 but I am unable to confirm this.

Steps to reproduce:
$ sudo pacman -S valgrind
[...]
$ valgrind /bin/echo
==16063== Memcheck, a memory error detector.
==16063== Copyright (C) 2002-2007, and GNU GPL'd, by Julian Seward et al.
==16063== Using LibVEX rev 1854, a library for dynamic binary translation.
==16063== Copyright (C) 2004-2007, and GNU GPL'd, by OpenWorks LLP.
==16063== Using valgrind-3.3.1, a dynamic binary instrumentation framework.
==16063== Copyright (C) 2000-2007, and GNU GPL'd, by Julian Seward et al.
==16063== For more details, rerun with: -v
==16063==
==16063== Conditional jump or move depends on uninitialised value(s)
==16063== at 0x4353EC2B: _dl_relocate_object (in /lib/ld-2.8.so)
==16063== by 0x43537788: dl_main (in /lib/ld-2.8.so)
==16063== by 0x43548460: _dl_sysdep_start (in /lib/ld-2.8.so)
==16063== by 0x43535187: _dl_start (in /lib/ld-2.8.so)
==16063== by 0x435347F6: (within /lib/ld-2.8.so)
==16063==
==16063== Conditional jump or move depends on uninitialised value(s)
==16063== at 0x4353EC33: _dl_relocate_object (in /lib/ld-2.8.so)
==16063== by 0x43537788: dl_main (in /lib/ld-2.8.so)
==16063== by 0x43548460: _dl_sysdep_start (in /lib/ld-2.8.so)
==16063== by 0x43535187: _dl_start (in /lib/ld-2.8.so)
==16063== by 0x435347F6: (within /lib/ld-2.8.so)
==16063==
==16063== Conditional jump or move depends on uninitialised value(s)
==16063== at 0x4353EDE0: _dl_relocate_object (in /lib/ld-2.8.so)
==16063== by 0x43537788: dl_main (in /lib/ld-2.8.so)
==16063== by 0x43548460: _dl_sysdep_start (in /lib/ld-2.8.so)
==16063== by 0x43535187: _dl_start (in /lib/ld-2.8.so)
==16063== by 0x435347F6: (within /lib/ld-2.8.so)
==16063==
==16063== Conditional jump or move depends on uninitialised value(s)
==16063== at 0x4353FB61: _dl_relocate_object (in /lib/ld-2.8.so)
==16063== by 0x43537788: dl_main (in /lib/ld-2.8.so)
==16063== by 0x43548460: _dl_sysdep_start (in /lib/ld-2.8.so)
==16063== by 0x43535187: _dl_start (in /lib/ld-2.8.so)
==16063== by 0x435347F6: (within /lib/ld-2.8.so)
==16063==
==16063== Conditional jump or move depends on uninitialised value(s)
==16063== at 0x4353FC74: _dl_relocate_object (in /lib/ld-2.8.so)
==16063== by 0x43537788: dl_main (in /lib/ld-2.8.so)
==16063== by 0x43548460: _dl_sysdep_start (in /lib/ld-2.8.so)
==16063== by 0x43535187: _dl_start (in /lib/ld-2.8.so)
==16063== by 0x435347F6: (within /lib/ld-2.8.so)
==16063==
==16063== Conditional jump or move depends on uninitialised value(s)
==16063== at 0x4353EC2B: _dl_relocate_object (in /lib/ld-2.8.so)
==16063== by 0x435378B3: dl_main (in /lib/ld-2.8.so)
==16063== by 0x43548460: _dl_sysdep_start (in /lib/ld-2.8.so)
==16063== by 0x43535187: _dl_start (in /lib/ld-2.8.so)
==16063== by 0x435347F6: (within /lib/ld-2.8.so)
==16063==
==16063== Conditional jump or move depends on uninitialised value(s)
==16063== at 0x4353EC33: _dl_relocate_object (in /lib/ld-2.8.so)
==16063== by 0x435378B3: dl_main (in /lib/ld-2.8.so)
==16063== by 0x43548460: _dl_sysdep_start (in /lib/ld-2.8.so)
==16063== by 0x43535187: _dl_start (in /lib/ld-2.8.so)
==16063== by 0x435347F6: (within /lib/ld-2.8.so)
==16063==
==16063== Conditional jump or move depends on uninitialised value(s)
==16063== at 0x4353EDE0: _dl_relocate_object (in /lib/ld-2.8.so)
==16063== by 0x435378B3: dl_main (in /lib/ld-2.8.so)
==16063== by 0x43548460: _dl_sysdep_start (in /lib/ld-2.8.so)
==16063== by 0x43535187: _dl_start (in /lib/ld-2.8.so)
==16063== by 0x435347F6: (within /lib/ld-2.8.so)

==16063==
==16063== ERROR SUMMARY: 12 errors from 8 contexts (suppressed: 0 from 0)
==16063== malloc/free: in use at exit: 0 bytes in 0 blocks.
==16063== malloc/free: 30 allocs, 30 frees, 2,221 bytes allocated.
==16063== For counts of detected errors, rerun with: -v
==16063== All heap blocks were freed -- no leaks are possible.
This task depends upon

Closed by  Jan de Groot (JGC)
Wednesday, 20 August 2008, 20:25 GMT
Reason for closing:  Fixed
Additional comments about closing:  Valgrind has been rebuilt with glibc 2.8.
Comment by Xavier (shining) - Sunday, 17 August 2008, 09:33 GMT
You can add your own suppressions file :

http://valgrind.org/docs/manual/manual-core.html#manual-core.suppress
http://valgrind.org/docs/manual/mc-manual.html#mc-manual.suppfiles

You can write a rule that would work with any version of ld so :
{
dlrelocate
Memcheck:Cond
fun:_dl_relocate_object
obj:*ld-2.?.so
}

This is one of the rule we use for pacman, see http://projects.archlinux.org/?p=pacman.git;a=blob;f=valgrind.supp;hb=HEAD
Comment by Arvid Norlander (AnMaster) - Sunday, 17 August 2008, 17:37 GMT
I know about the command line option to add custom suppression files.

But that isn't the issue here, the issue is that the suppression file generated at compile time of valgrind for the system libraries doesn't match the the system libraries currently used on Arch Linux.

In other words, the default suppression file need to be re-generated (by re-generating the package). Also it needs to be re-generated at any future glibc upgrade.
Comment by Xavier (shining) - Sunday, 17 August 2008, 18:11 GMT
Of course, I understood that.
I just wanted to clarify that it was possible to use custom suppression files (using command line option or config file)

Loading...