Bug 595348

Summary: Conditional jump or move depends on uninitialised value(s)
Product: Red Hat Enterprise Linux 6 Reporter: Kim van der Riet <kim.vdriet>
Component: valgrindAssignee: Jakub Jelinek <jakub>
Status: CLOSED WORKSFORME QA Contact: qe-baseos-tools-bugs
Severity: medium Docs Contact:
Priority: low    
Version: 6.0   
Target Milestone: rc   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2010-05-24 12:33:37 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Kim van der Riet 2010-05-24 12:28:19 UTC
When using the valgrind memory tool to check for leaks, all my programs fail with:

==30857== Conditional jump or move depends on uninitialised value(s)
==30857==    at 0x36E221749B: index (strchr.S:59)
==30857==    by 0x36E2206254: expand_dynamic_string_token (dl-load.c:324)
==30857==    by 0x36E2207CAF: _dl_map_object (dl-load.c:2186)
==30857==    by 0x36E22016EA: map_doit (rtld.c:630)
==30857==    by 0x36E220E0C5: _dl_catch_error (dl-error.c:178)
==30857==    by 0x36E22015EE: do_preload (rtld.c:814)
==30857==    by 0x36E2203BAA: dl_main (rtld.c:1693)
==30857==    by 0x36E2215A8D: _dl_sysdep_start (dl-sysdep.c:244)
==30857==    by 0x36E2201493: _dl_start (rtld.c:334)
==30857==    by 0x36E2200AF7: ??? (in /lib64/ld-2.12.so)
==30857==    by 0x6: ???
==30857==    by 0x7FEFFFDFE: ???
==30857==    by 0x7FEFFFE26: ???
==30857==    by 0x7FEFFFE30: ???
==30857==    by 0x7FEFFFE40: ???
==30857==    by 0x7FEFFFE49: ???
==30857==    by 0x7FEFFFE52: ???
==30857==    by 0x7FEFFFE60: ???

This is new for RHEL-6; RHEL-5 does not do this. Valgrind is used as part of the continuous build checking in qpid, this is failing all tests on which it is used on RHEL-6. I even tried this on a null program vgchk.cpp:

int main(int, char**){}

compiled it with g++ -o vgchk vgchk.cpp, and ran valgrind ./vgchk, I get:

[kpvdr@mrg7 test]$ valgrind ./vgchk
==769== Memcheck, a memory error detector
==769== Copyright (C) 2002-2009, and GNU GPL'd, by Julian Seward et al.
==769== Using Valgrind-3.5.0 and LibVEX; rerun with -h for copyright info
==769== Command: ./vgchk
==769== 
==769== Conditional jump or move depends on uninitialised value(s)
==769==    at 0x36E2217496: index (strchr.S:56)
==769==    by 0x36E2206254: expand_dynamic_string_token (dl-load.c:324)
==769==    by 0x36E2207CAF: _dl_map_object (dl-load.c:2186)
==769==    by 0x36E22016EA: map_doit (rtld.c:630)
==769==    by 0x36E220E0C5: _dl_catch_error (dl-error.c:178)
==769==    by 0x36E22015EE: do_preload (rtld.c:814)
==769==    by 0x36E2203BAA: dl_main (rtld.c:1693)
==769==    by 0x36E2215A8D: _dl_sysdep_start (dl-sysdep.c:244)
==769==    by 0x36E2201493: _dl_start (rtld.c:334)
==769==    by 0x36E2200AF7: ??? (in /lib64/ld-2.12.so)
==769== 
==769== Conditional jump or move depends on uninitialised value(s)
==769==    at 0x36E221749B: index (strchr.S:59)
==769==    by 0x36E2206254: expand_dynamic_string_token (dl-load.c:324)
==769==    by 0x36E2207CAF: _dl_map_object (dl-load.c:2186)
==769==    by 0x36E22016EA: map_doit (rtld.c:630)
==769==    by 0x36E220E0C5: _dl_catch_error (dl-error.c:178)
==769==    by 0x36E22015EE: do_preload (rtld.c:814)
==769==    by 0x36E2203BAA: dl_main (rtld.c:1693)
==769==    by 0x36E2215A8D: _dl_sysdep_start (dl-sysdep.c:244)
==769==    by 0x36E2201493: _dl_start (rtld.c:334)
==769==    by 0x36E2200AF7: ??? (in /lib64/ld-2.12.so)
==769== 
==769== Conditional jump or move depends on uninitialised value(s)
==769==    at 0x36E220B48A: _dl_relocate_object (do-rel.h:65)
==769==    by 0x36E22039DF: dl_main (rtld.c:2249)
==769==    by 0x36E2215A8D: _dl_sysdep_start (dl-sysdep.c:244)
==769==    by 0x36E2201493: _dl_start (rtld.c:334)
==769==    by 0x36E2200AF7: ??? (in /lib64/ld-2.12.so)
==769== 
==769== Conditional jump or move depends on uninitialised value(s)
==769==    at 0x36E220B41B: _dl_relocate_object (do-rel.h:68)
==769==    by 0x36E22039DF: dl_main (rtld.c:2249)
==769==    by 0x36E2215A8D: _dl_sysdep_start (dl-sysdep.c:244)
==769==    by 0x36E2201493: _dl_start (rtld.c:334)
==769==    by 0x36E2200AF7: ??? (in /lib64/ld-2.12.so)
==769== 
==769== Conditional jump or move depends on uninitialised value(s)
==769==    at 0x36E220B48A: _dl_relocate_object (do-rel.h:65)
==769==    by 0x36E220389A: dl_main (rtld.c:2312)
==769==    by 0x36E2215A8D: _dl_sysdep_start (dl-sysdep.c:244)
==769==    by 0x36E2201493: _dl_start (rtld.c:334)
==769==    by 0x36E2200AF7: ??? (in /lib64/ld-2.12.so)
==769== 
==769== Conditional jump or move depends on uninitialised value(s)
==769==    at 0x36E220B41B: _dl_relocate_object (do-rel.h:68)
==769==    by 0x36E220389A: dl_main (rtld.c:2312)
==769==    by 0x36E2215A8D: _dl_sysdep_start (dl-sysdep.c:244)
==769==    by 0x36E2201493: _dl_start (rtld.c:334)
==769==    by 0x36E2200AF7: ??? (in /lib64/ld-2.12.so)
==769== 
==769== 
==769== HEAP SUMMARY:
==769==     in use at exit: 0 bytes in 0 blocks
==769==   total heap usage: 0 allocs, 0 frees, 0 bytes allocated
==769== 
==769== All heap blocks were freed -- no leaks are possible
==769== 
==769== For counts of detected and suppressed errors, rerun with: -v
==769== Use --track-origins=yes to see where uninitialised values come from
==769== ERROR SUMMARY: 6 errors from 6 contexts (suppressed: 0 from 0)

This RHEL-6 box is installed with RHEL6.0-20100512.0
[kpvdr@mrg7 test]$ uname -a
Linux mrg7.lab.bos.redhat.com 2.6.32-25.el6.x86_64 #1 SMP Mon May 10 17:30:22 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux
However, I have the new glibc installed for testing for Bug 593396:
[kpvdr@mrg7 test]$ rpm -qa | grep glibc
glibc-2.12-1.1.el6.1.x86_64
glibc-devel-2.12-1.1.el6.1.x86_64
glibc-headers-2.12-1.1.el6.1.x86_64
glibc-utils-2.12-1.1.el6.1.x86_64
glibc-debuginfo-2.12-1.1.el6.1.x86_64
glibc-static-2.12-1.1.el6.1.x86_64
glibc-common-2.12-1.1.el6.1.x86_64

Comment 1 Jakub Jelinek 2010-05-24 12:33:37 UTC
You need valgrind-3.5.0-18.el6 if you have glibc 2.12* installed.