Bug 1116747

Summary: illegal opcode causes check failure on aarch64 on valgrind-3.9.0-svn20140513r13961
Product: [Fedora] Fedora Reporter: Peter Robinson <pbrobinson>
Component: valgrindAssignee: Mark Wielaard <mjw>
Status: CLOSED RAWHIDE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: rawhideCC: dodji, jakub, mjw, mjw
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: valgrind-3.9.0-19.svn20140715r14165 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2014-07-21 12:52:50 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 922257    

Description Peter Robinson 2014-07-07 08:43:49 UTC
valgrind-3.9.0-17.svn20140513r13961.fc21

http://arm.koji.fedoraproject.org/koji/taskinfo?taskID=2476617

If logs disappear latest failure can be seen here
http://arm.koji.fedoraproject.org/koji/packageinfo?packageID=9521

Executing(%check): /bin/sh -e /var/tmp/rpm-tmp.08FIoR
+ umask 022
+ cd /builddir/build/BUILD
+ cd valgrind-3.9.0-svn20140513r13961
+ ./vg-in-place /bin/true
==3931== Memcheck, a memory error detector
==3931== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al.
==3931== Using Valgrind-3.10.0.SVN and LibVEX; rerun with -h for copyright info
==3931== Command: /bin/true
==3931== 
ARM64 front end: branch_etc
disInstr(arm64): unhandled instruction 0xD53BE043
disInstr(arm64): 1101'0101 0011'1011 1110'0000 0100'0011
==3931== valgrind: Unrecognised instruction at address 0x4004a68.
==3931==    at 0x4004A68: _dl_start (in /usr/lib64/ld-2.19.90.so)
==3931==    by 0x4000DC7: ??? (in /usr/lib64/ld-2.19.90.so)
==3931== Your program just tried to execute an instruction that Valgrind
==3931== did not recognise.  There are two possible reasons for this.
==3931== 1. Your program has a bug and erroneously jumped to a non-code
==3931==    location.  If you are running Memcheck and you just saw a
==3931==    warning about a bad jump, it's probably your program's fault.
==3931== 2. The instruction is legitimate but Valgrind doesn't handle it,
==3931==    i.e. it's Valgrind's fault.  If you think this is the case or
==3931==    you are not sure, please let us know and we'll try to fix it.
==3931== Either way, Valgrind will now raise a SIGILL signal which will
==3931== probably kill your program.
==3931== 
==3931== Process terminating with default action of signal 4 (SIGILL)
==3931==  Illegal opcode at address 0x4004A68
==3931==    at 0x4004A68: _dl_start (in /usr/lib64/ld-2.19.90.so)
==3931==    by 0x4000DC7: ??? (in /usr/lib64/ld-2.19.90.so)
==3931== 
==3931== HEAP SUMMARY:
==3931==     in use at exit: 0 bytes in 0 blocks
==3931==   total heap usage: 0 allocs, 0 frees, 0 bytes allocated
==3931== 
==3931== All heap blocks were freed -- no leaks are possible
==3931== 
==3931== For counts of detected and suppressed errors, rerun with: -v
==3931== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
RPM build errors:
./vg-in-place: line 31:  3931 Illegal instruction     VALGRIND_LIB="$vgbasedir/.in_place" VALGRIND_LIB_INNER="$vgbasedir/.in_place" "$vgbasedir/coregrind/valgrind" "$@"
error: Bad exit status from /var/tmp/rpm-tmp.08FIoR (%check)
    Bad exit status from /var/tmp/rpm-tmp.08FIoR (%check)
Child return code was: 1

Comment 1 Mark Wielaard 2014-07-21 12:52:50 UTC
This was fixed upstream:
VEX r2900 arm64: implement "mrs Xt, cntvct_el0" by pass-through to the host.
This and some other arm64 fixes were imported by valgrind-3.9.0-19.svn20140715r14165 for f21 and rawhide.