C2 compiler gets SIGILL/ILL_ILLOPC

John Neffenger john at status6.com
Thu May 3 00:29:21 UTC 2018


I'm getting fatal errors in the OpenJDK 10 and 11 HotSpot Server VMs 
with a simple "Hello World" Swing application when running on a physical 
ARMv7 processor, yet I'm not seeing any such errors on an emulated ARMv7 
processor under QEMU/KVM.

Is there some feature required by the latest HotSpot Server VM that is 
not present in my Freescale (NXP) i.MX507 Multimedia Application 
Processor? Could an older Linux kernel cause this error?

Details on the errors, workarounds, Java versions, Linux kernel 
versions, and CPU information are below.

Thank you,
John

------------------------------------------------------------------------
I tested three Java versions on two systems (one real, one emulated), as 
follows:

Oracle JDK 1.8.0_172
     Emulated: works
     Physical: works

OpenJDK 10.0.1-internal
     Emulated: works
     Physical: SIGILL (ILL_ILLOPC)
     Workaround: -XX:+TieredCompilation -XX:TieredStopAtLevel=3

OpenJDK 11-internal
     Emulated: works
     Physical: SIGILL (ILL_ILLOPC)
     Workaround: -Xint (workaround above fails with SIGSEGV)

For OpenJDK 10, I get:
------------------------------------
#  SIGILL (0x4) at pc=0x2baa0c34, pid=2994, tid=2995
#
# JRE version: OpenJDK Runtime Environment (10.0.1) (build 
10.0.1-internal+0-adhoc.ubuntu.jdk10u)
# Java VM: OpenJDK Server VM (10.0.1-internal+0-adhoc.ubuntu.jdk10u, 
mixed mode, serial gc, linux-)
# Problematic frame:
# J 62 c2 java.lang.StringUTF16.replace([BCC)Ljava/lang/String; 
java.base at 10.0.1-internal (168 bytes) @ 0x2baa0c34 [0x2baa0aa0+0x00000194]

siginfo: si_signo: 4 (SIGILL), si_code: 1 (ILL_ILLOPC), si_addr: 0x2baa0c34
Instructions: (pc=0x2baa0c34)
0x2baa0c14:   e58dc008 e1560007 2a0000b6 e3a05001
0x2baa0c24:   e3008458 e34383c0 e58a6044 e5895000
0x2baa0c34:   f596f080 e5898004 f596f090 e5891008
0x2baa0c44:   f596f0a0 e3007000 e2445010 e589700c
------------------------------------

For OpenJDK 11, I get:
------------------------------------
#  SIGILL (0x4) at pc=0x2baa6f94, pid=3008, tid=3009
#
# JRE version: OpenJDK Runtime Environment (11.0) (build 
11-internal+0-adhoc.ubuntu.jdk)
# Java VM: OpenJDK Server VM (11-internal+0-adhoc.ubuntu.jdk, mixed 
mode, serial gc, linux-)
# Problematic frame:
# J 70 c2 
java.lang.invoke.LambdaForm$Name.replaceNames([Ljava/lang/invoke/LambdaForm$Name;[Ljava/lang/invoke/LambdaForm$Name;II)Ljava/lang/invoke/LambdaForm$Name; 
java.base at 11-internal (174 bytes) @ 0x2baa6f94 [0x2baa6e70+0x00000124]

siginfo: si_signo: 4 (SIGILL), si_code: 1 (ILL_ILLOPC), si_addr: 0x2baa6f94
Instructions: (pc=0x2baa6f94)
0x2baa6f74:   e59a60b8 e59a50c0 e086400b e1540005
0x2baa6f84:   2a0000f3 e3a05001 e58a40b8 e5865000
0x2baa6f94:   f594f080 e586e004 f594f090 e59d5004
0x2baa6fa4:   e5865008 f594f0a0 e24b5008 e1a021a5
------------------------------------

I test with Oracle JDK 8, and I built OpenJDK 10 and 11 from the latest 
sources today:
------------------------------------
$ ./opt/jdk1.8.0_172/bin/java -server -version
java version "1.8.0_172"
Java(TM) SE Runtime Environment (build 1.8.0_172-b11)
Java HotSpot(TM) Server VM (build 25.172-b11, mixed mode)

$ ./opt/jre-10/bin/java -version
openjdk version "10.0.1-internal" 2018-04-17
OpenJDK Runtime Environment (build 10.0.1-internal+0-adhoc.ubuntu.jdk10u)
OpenJDK Server VM (build 10.0.1-internal+0-adhoc.ubuntu.jdk10u, mixed mode)

$ ./opt/jre-11/bin/java -version
openjdk version "11-internal" 2018-09-25
OpenJDK Runtime Environment (build 11-internal+0-adhoc.ubuntu.jdk)
OpenJDK Server VM (build 11-internal+0-adhoc.ubuntu.jdk, mixed mode)
------------------------------------

The physical processor is a Freescale i.MX507 Multimedia Application 
Processor Model MCIMX507CVM8B:
------------------------------------
$ uname -a
Linux koboa 2.6.35.3-850-gbc67621+ #619 PREEMPT Thu Dec 22 15:29:00 CST 
2016 armv7l armv7l armv7l GNU/Linux

$ cat /proc/cpuinfo
Processor    : ARMv7 Processor rev 5 (v7l)
BogoMIPS    : 159.90
Features    : swp half thumb fastmult vfp edsp neon vfpv3
CPU implementer    : 0x41
CPU architecture: 7
CPU variant    : 0x2
CPU part    : 0xc08
CPU revision    : 5

Hardware    : Freescale MX50 Reference Design Platform
Revision    : 50011
Serial        : 0000000000000000
------------------------------------

The emulated processor is QEMU/KVM version 2.5.0:
------------------------------------
$ uname -a
Linux tarmhf 3.13.0-145-generic-lpae #194-Ubuntu SMP Thu Apr 5 16:22:48 
UTC 2018 armv7l armv7l armv7l GNU/Linux

$ cat /proc/cpuinfo
processor    : 0
model name    : ARMv7 Processor rev 1 (v7l)
Features    : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 
idiva idivt vfpd32 lpae evtstrm
CPU implementer    : 0x41
CPU architecture: 7
CPU variant    : 0x2
CPU part    : 0xc0f
CPU revision    : 1

Hardware    : Dummy Virtual Machine
Revision    : 0000
Serial        : 0000000000000000
------------------------------------


More information about the aarch32-port-dev mailing list