Bug 381514

Summary: unhandled instruction 0xD53BE002
Product: [Developer tools] valgrind Reporter: soren.brinkmann
Component: memcheckAssignee: Julian Seward <jseward>
Status: CLOSED NOT A BUG    
Severity: normal CC: fweimer
Priority: NOR    
Version First Reported In: 3.12.0   
Target Milestone: ---   
Platform: Other   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:
Attachments: Full valgrind output

Description soren.brinkmann 2017-06-22 05:59:27 UTC
I have an aarch64 Linux application that has the following instruction in its code:
   7d48c:       d53be002        mrs     x2, cntfrq_el0

That causes valgrind to abort execution with
ARM64 front end: branch_etc
disInstr(arm64): unhandled instruction 0xD53BE002
disInstr(arm64): 1101'0101 0011'1011 1110'0000 0000'0010
==2561== valgrind: Unrecognised instruction at address 0x48eb48c.
==2561==    at 0x48EB48C: xlnkGetGlobalCounter (in /media/card/libfilter2d_optflow.so)
==2561== Your program just tried to execute an instruction that Valgrind
==2561== did not recognise.  There are two possible reasons for this.
==2561== 1. Your program has a bug and erroneously jumped to a non-code
==2561==    location.  If you are running Memcheck and you just saw a
==2561==    warning about a bad jump, it's probably your program's fault.
==2561== 2. The instruction is legitimate but Valgrind doesn't handle it,
==2561==    i.e. it's Valgrind's fault.  If you think this is the case or
==2561==    you are not sure, please let us know and we'll try to fix it.
==2561== Either way, Valgrind will now raise a SIGILL signal which will
==2561== probably kill your program.
==2561==
==2561== Process terminating with default action of signal 4 (SIGILL)
==2561==  Illegal opcode at address 0x48EB48C
==2561==    at 0x48EB48C: xlnkGetGlobalCounter (in /media/card/libfilter2d_optflow.so)
Comment 1 soren.brinkmann 2017-06-22 06:03:43 UTC
uname -a:
Linux plnx_aarch64 4.9.0 #141 SMP Wed Jun 21 15:49:29 PDT 2017 aarch64 aarch64 aarch64 GNU/Linux
Comment 2 soren.brinkmann 2017-06-22 06:08:01 UTC
Created attachment 106221 [details]
Full valgrind output

This is the output from the valgrind run with the '-v' option.
Comment 3 Julian Seward 2017-06-22 12:27:46 UTC
This has been fixed already, in the 3.13.0 release which you can
now download from valgrind.org.  Upgrade!
Comment 4 soren.brinkmann 2017-06-22 14:42:08 UTC
Thanks, Julian. Correct 3.13 works, unfortunately that's not available through open-embedded yet.