[Bug target/86828] [7 Regression] wrong-code bug with "-march=knl -Ofast" (invalid memory reference)

janus at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu Nov 22 11:49:00 GMT 2018


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86828

--- Comment #11 from janus at gcc dot gnu.org ---
(In reply to Uroš Bizjak from comment #10)
> (In reply to janus from comment #9)
> > (In reply to Richard Biener from comment #8)
> > > More details are needed here.
> > 
> > What exactly do you need?
> 
> Can you try with valgrind?

I'm afraid that valgrind still does not support knl and skylake instructions,
at least the latest release 3.14 does not seem to do it:

$ valgrind ./a.out 
==5650== Memcheck, a memory error detector
==5650== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==5650== Using Valgrind-3.14.0 and LibVEX; rerun with -h for copyright info
==5650== Command: ./a.out
==5650== 
vex amd64->IR: unhandled instruction bytes: 0x62 0xF1 0xFD 0x48 0x6F 0x5 0x3E
0x6 0x0 0x0
vex amd64->IR:   REX=0 REX.W=0 REX.R=0 REX.X=0 REX.B=0
vex amd64->IR:   VEX=0 VEX.L=0 VEX.nVVVV=0x0 ESC=NONE
vex amd64->IR:   PFX.66=0 PFX.F2=0 PFX.F3=0
==5650== valgrind: Unrecognised instruction at address 0x108a78.
==5650==    at 0x108A78: knl_bug (c0.f90:15)
==5650==    by 0x108A78: main (c0.f90:17)
==5650== Your program just tried to execute an instruction that Valgrind
==5650== did not recognise.  There are two possible reasons for this.
==5650== 1. Your program has a bug and erroneously jumped to a non-code
==5650==    location.  If you are running Memcheck and you just saw a
==5650==    warning about a bad jump, it's probably your program's fault.
==5650== 2. The instruction is legitimate but Valgrind doesn't handle it,
==5650==    i.e. it's Valgrind's fault.  If you think this is the case or
==5650==    you are not sure, please let us know and we'll try to fix it.
==5650== Either way, Valgrind will now raise a SIGILL signal which will
==5650== probably kill your program.

Program received signal SIGILL: Illegal instruction.

Backtrace for this error:
#0  0x4e582da in ???
#1  0x4e57503 in ???
#2  0x525af1f in ???
#3  0x108a78 in ???
#4  0x523db96 in ???
#5  0x108bc9 in ???
#6  0xffffffffffffffff in ???
==5650== 
==5650== Process terminating with default action of signal 4 (SIGILL)
==5650==    at 0x525AE75: raise (raise.c:46)
==5650==    by 0x525AF1F: ??? (in /lib/x86_64-linux-gnu/libc-2.27.so)
==5650==    by 0x108A77: knl_bug (c0.f90:15)
==5650==    by 0x108A77: main (c0.f90:17)
==5650== 
==5650== HEAP SUMMARY:
==5650==     in use at exit: 5,484 bytes in 18 blocks
==5650==   total heap usage: 22 allocs, 4 frees, 13,624 bytes allocated
==5650== 
==5650== LEAK SUMMARY:
==5650==    definitely lost: 0 bytes in 0 blocks
==5650==    indirectly lost: 0 bytes in 0 blocks
==5650==      possibly lost: 0 bytes in 0 blocks
==5650==    still reachable: 5,484 bytes in 18 blocks
==5650==         suppressed: 0 bytes in 0 blocks
==5650== Rerun with --leak-check=full to see details of leaked memory
==5650== 
==5650== For counts of detected and suppressed errors, rerun with: -v
==5650== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
Illegal instruction (core dumped)


More information about the Gcc-bugs mailing list