Bug 676785 - Valgrind finds jump issue in ld-2.13.so.x86_64 (glibc-2.13.fc14.x86_64)
Summary: Valgrind finds jump issue in ld-2.13.so.x86_64 (glibc-2.13.fc14.x86_64)
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: valgrind
Version: 14
Hardware: x86_64
OS: Linux
unspecified
medium
Target Milestone: ---
Assignee: Jakub Jelinek
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
: 677486 (view as bug list)
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2011-02-11 08:06 UTC by Ken
Modified: 2011-03-05 02:27 UTC (History)
6 users (show)

Fixed In Version: valgrind-3.5.0-20.fc14
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2011-03-05 02:27:11 UTC


Attachments (Terms of Use)
Hello World Test (227 bytes, text/x-csrc)
2011-02-11 08:06 UTC, Ken
no flags Details

Description Ken 2011-02-11 08:06:27 UTC
Created attachment 478195 [details]
Hello World Test

Description of problem:

Using Fedora 14 x86_64 with gcc-4.5.1-4 and valgrind-3.5.0

Updated from glibc-2.12.90-17.fc14.x86_64 to glibc-2.13-1.fc14.x86_64 today.  Afterwards, I noticed that compiling any C program (including simple hello world program) and running through valgrind memory checker produces the following output:

==4995== Memcheck, a memory error detector
==4995== Copyright (C) 2002-2009, and GNU GPL'd, by Julian Seward et al.
==4995== Using Valgrind-3.5.0 and LibVEX; rerun with -h for copyright info
==4995== Command: ./hello
==4995== 
==4995== Conditional jump or move depends on uninitialised value(s)
==4995==    at 0x4016AA6: index (in /lib64/ld-2.13.so)
==4995==    by 0x4007084: expand_dynamic_string_token (in /lib64/ld-2.13.so)
==4995==    by 0x40078E9: _dl_map_object (in /lib64/ld-2.13.so)
==4995==    by 0x400126D: map_doit (in /lib64/ld-2.13.so)
==4995==    by 0x400DC65: _dl_catch_error (in /lib64/ld-2.13.so)
==4995==    by 0x4001186: do_preload (in /lib64/ld-2.13.so)
==4995==    by 0x4003FC8: dl_main (in /lib64/ld-2.13.so)
==4995==    by 0x401465A: _dl_sysdep_start (in /lib64/ld-2.13.so)
==4995==    by 0x40048C0: _dl_start (in /lib64/ld-2.13.so)
==4995==    by 0x4000B27: ??? (in /lib64/ld-2.13.so)
==4995== 
==4995== Conditional jump or move depends on uninitialised value(s)
==4995==    at 0x4016AAB: index (in /lib64/ld-2.13.so)
==4995==    by 0x4007084: expand_dynamic_string_token (in /lib64/ld-2.13.so)
==4995==    by 0x40078E9: _dl_map_object (in /lib64/ld-2.13.so)
==4995==    by 0x400126D: map_doit (in /lib64/ld-2.13.so)
==4995==    by 0x400DC65: _dl_catch_error (in /lib64/ld-2.13.so)
==4995==    by 0x4001186: do_preload (in /lib64/ld-2.13.so)
==4995==    by 0x4003FC8: dl_main (in /lib64/ld-2.13.so)
==4995==    by 0x401465A: _dl_sysdep_start (in /lib64/ld-2.13.so)
==4995==    by 0x40048C0: _dl_start (in /lib64/ld-2.13.so)
==4995==    by 0x4000B27: ??? (in /lib64/ld-2.13.so)
==4995== 
==4995== Conditional jump or move depends on uninitialised value(s)
==4995==    at 0x400ADA2: _dl_relocate_object (in /lib64/ld-2.13.so)
==4995==    by 0x4003295: dl_main (in /lib64/ld-2.13.so)
==4995==    by 0x401465A: _dl_sysdep_start (in /lib64/ld-2.13.so)
==4995==    by 0x40048C0: _dl_start (in /lib64/ld-2.13.so)
==4995==    by 0x4000B27: ??? (in /lib64/ld-2.13.so)
==4995== 
==4995== Conditional jump or move depends on uninitialised value(s)
==4995==    at 0x400ADAB: _dl_relocate_object (in /lib64/ld-2.13.so)
==4995==    by 0x4003295: dl_main (in /lib64/ld-2.13.so)
==4995==    by 0x401465A: _dl_sysdep_start (in /lib64/ld-2.13.so)
==4995==    by 0x40048C0: _dl_start (in /lib64/ld-2.13.so)
==4995==    by 0x4000B27: ??? (in /lib64/ld-2.13.so)
==4995== 
==4995== Conditional jump or move depends on uninitialised value(s)
==4995==    at 0x400ADA2: _dl_relocate_object (in /lib64/ld-2.13.so)
==4995==    by 0x40034A5: dl_main (in /lib64/ld-2.13.so)
==4995==    by 0x401465A: _dl_sysdep_start (in /lib64/ld-2.13.so)
==4995==    by 0x40048C0: _dl_start (in /lib64/ld-2.13.so)
==4995==    by 0x4000B27: ??? (in /lib64/ld-2.13.so)
==4995== 
==4995== Conditional jump or move depends on uninitialised value(s)
==4995==    at 0x400ADAB: _dl_relocate_object (in /lib64/ld-2.13.so)
==4995==    by 0x40034A5: dl_main (in /lib64/ld-2.13.so)
==4995==    by 0x401465A: _dl_sysdep_start (in /lib64/ld-2.13.so)
==4995==    by 0x40048C0: _dl_start (in /lib64/ld-2.13.so)
==4995==    by 0x4000B27: ??? (in /lib64/ld-2.13.so)
==4995== 
hello, world
==4995== 
==4995== HEAP SUMMARY:
==4995==     in use at exit: 0 bytes in 0 blocks
==4995==   total heap usage: 0 allocs, 0 frees, 0 bytes allocated
==4995== 
==4995== All heap blocks were freed -- no leaks are possible
==4995== 
==4995== For counts of detected and suppressed errors, rerun with: -v
==4995== Use --track-origins=yes to see where uninitialised values come from
==4995== ERROR SUMMARY: 6 errors from 6 contexts (suppressed: 0 from 0)

Reverting back to glibc-2.12.90-17 gets rid of the messages:

==5170== Memcheck, a memory error detector
==5170== Copyright (C) 2002-2009, and GNU GPL'd, by Julian Seward et al.
==5170== Using Valgrind-3.5.0 and LibVEX; rerun with -h for copyright info
==5170== Command: ./hello
==5170== 
hello, world
==5170== 
==5170== HEAP SUMMARY:
==5170==     in use at exit: 0 bytes in 0 blocks
==5170==   total heap usage: 0 allocs, 0 frees, 0 bytes allocated
==5170== 
==5170== All heap blocks were freed -- no leaks are possible
==5170== 
==5170== For counts of detected and suppressed errors, rerun with: -v
==5170== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 6 from 6)


Is this a serious memory issue in ld-2.13.so?


How reproducible:

Compile any C program and run under valgrind

  
Actual results:

Valgrind reports "Conditional jump or move messages"

Expected results:

Valgrind shouldn't show any errors, as under the previous glibc version.

Comment 1 Ken 2011-02-12 16:48:05 UTC
Is this a valgrind issue?  If the same version of valgrind works with an older version of ld.so, then why wouldn't it also work with the newer version?

The only dl-related change I could find in the glibc changelog was:

* Fri Nov 12 2010 Andreas Schwab <schwab@redhat.com> - 2.12.90-19 
    - Fix concurrency problem between dl_open and dl_iterate_phdr 

Not sure if this has anything to do with the problem

Comment 2 Ken 2011-02-12 17:37:33 UTC
Nevermind last comment.  Grabbed latest valgrind from koji built against glibc 2.13 and that seems to have fixed the problem.

Would it possible to also have valgrind rebuilt against new glibc for dist-f14 repository?

Comment 3 James 2011-02-16 03:32:43 UTC
*** Bug 677486 has been marked as a duplicate of this bug. ***

Comment 4 James 2011-02-16 03:40:00 UTC
I see this as well. Valgrind complains for any program, not just those compiled by the user. As Ken pointed out, there is a new version of Valgrind to address this.

Comment 5 Fedora Update System 2011-02-24 10:35:53 UTC
valgrind-3.5.0-20.fc14 has been submitted as an update for Fedora 14.
https://admin.fedoraproject.org/updates/valgrind-3.5.0-20.fc14

Comment 6 Fedora Update System 2011-02-24 20:52:15 UTC
valgrind-3.5.0-20.fc14 has been pushed to the Fedora 14 testing repository.  If problems still persist, please make note of it in this bug report.
 If you want to test the update, you can install it with 
 su -c 'yum --enablerepo=updates-testing update valgrind'.  You can provide feedback for this update here: https://admin.fedoraproject.org/updates/valgrind-3.5.0-20.fc14

Comment 7 Ken 2011-02-25 06:22:29 UTC
Thank you for F14 rebuild against new glibc.  Everything appears to work as it should with valgrind-3.5.0-20.fc14.  I suppose once it is pushed from testing to final release, this bug can be closed.

Comment 8 Malte P. 2011-03-04 15:38:56 UTC
The new valgrind version did also solve the problem for me, thanks!

Comment 9 Fedora Update System 2011-03-05 02:27:05 UTC
valgrind-3.5.0-20.fc14 has been pushed to the Fedora 14 stable repository.  If problems still persist, please make note of it in this bug report.


Note You need to log in before you can comment on or make changes to this bug.