JDK-8202705 : ARM32 build crashes on long JavaThread offsets
  • Type: Bug
  • Component: hotspot
  • Sub-Component: gc
  • Priority: P4
  • Status: Resolved
  • Resolution: Fixed
  • CPU: aarch32
  • Submitted: 2018-05-07
  • Updated: 2018-06-19
  • Resolved: 2018-06-10
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 11
11 b18Fixed
Related Reports
Relates :  
Relates :  
Description
How to reproduce the issue:

pi@rpi-3:~/boris/tmp $ ./jdk-49906x/bin/java -Xcomp -XX:+TieredCompilation -version
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGILL (0x4) at pc=0x6c09b5f0, pid=7932, tid=7933
#

The issue should be related with JDK-8201318 which introduced extra bytes at the beginning of JavaThread and made required offset out of arm32 ldr/str command range.
Comments
Good find. It looks that JDK-8201318 is the real culprit then: it introduced the 112+ bytes structure at the beginning of JavaThread, which shifted incr_allocated_bytes beyond 256. And we never find it, before the build was broken when that change was integrated. Please change the synopsis and issue links to that issue?
21-05-2018

fastdebug build issues following assertion: # Internal Error (/home/build/jdk-jdk/src/hotspot/cpu/arm/assembler_arm.hpp:249), pid=21873, tid=21880 # assert(-256 < _disp && _disp < 256) failed: encoding constraint -------------------------------------------- Stack trace: report_vm_error(char const*, int, char const*, char const*, ...) Address::encoding3() MacroAssembler::incr_allocated_bytes(RegisterOrConstant, RegisterImpl*) Runtime1::generate_code_for(Runtime1::StubID, StubAssembler*) Runtime1::generate_blob(BufferBlob*, int, char const*, bool, StubAssemblerCodeGenClosure*) Runtime1::initialize(BufferBlob*) Compiler::init_c1_runtime() Compiler::initialize() CompileBroker::init_compiler_runtime() CompileBroker::compiler_thread_loop() -------------------------------------------- Issue caused by the offset (272) going beyond limit (256) in MacroAssembler::incr_allocated_bytes: ldr(tmp, Address(Rthread, in_bytes(JavaThread::allocated_bytes_offset()))); -------------------------------------------- Following patch fixes the issue: http://cr.openjdk.java.net/~bulasevich/8202705/webrev.01 -------------------------------------------- The patch works Ok on revision r49938. With latest (r50193) build there is another assertion, see JDK-8203479 --------------------------------------------
21-05-2018