-
Bug
-
Resolution: Fixed
-
P3
-
17, 21, 22, 23
-
b03
-
aarch64
-
linux
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8322556 | 22.0.1 | Tobias Hartmann | P3 | Resolved | Fixed | b02 |
JDK-8321995 | 22 | Daniel Lunden | P3 | Resolved | Fixed | b29 |
JDK-8342516 | 21.0.6 | Boris Ulasevich | P3 | Resolved | Fixed | b01 |
The issue is due to using PC-relative addressing (the aarch64 adr instruction) with an (unusually) large non-nmethod code heap size. Attempting to load the address of a constant that is out of range triggers the assert/guarantee.
### Original report ###
In the tier 6 test run that included the fix for
Test: compiler/arguments/TestC1Globals.java#id4
#
# A fatal error has been detected by the Java Runtime Environment:
#
# Internal Error (/opt/mach5/mesos/work_dir/slaves/0db9c48f-6638-40d0-9a4b-bd9cc7533eb8-S10903/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/0724edac-4f9d-4b23-a291-90fd75eb8a31/runs/365cdd81-6ab1-4745-a986-7340646f3a7b/workspace/open/src/hotspot/cpu/aarch64/assembler_aarch64.hpp:265), pid=2092794, tid=2092814
# guarantee(chk == -1 || chk == 0) failed: Field too big for insn
#
# JRE version: Java(TM) SE Runtime Environment (22.0+26) (fastdebug build 22-ea+26-2029)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (fastdebug 22-ea+26-2029, compiled mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, linux-aarch64)
# Problematic frame:
# V [libjvm.so+0x5b9958] Assembler::adr(Register, unsigned char*)+0x148
#
Host: AArch64, 8 cores, 30G, Oracle Linux Server release 8.8
Time: Fri Nov 24 01:16:05 2023 UTC elapsed time: 2.811199 seconds (0d 0h 0m 2s)
--------------- T H R E A D ---------------
Current thread (0x0000ffff7837e0a0): JavaThread "C1 CompilerThread0" daemon [_thread_in_native, id=2092814, stack(0x0000ffff23e02000,0x0000ffff24000000) (2040K)]
Current CompileTask:
C1:2811 242 b 3 java.util.HashMap::putMapEntries (170 bytes)
Stack: [0x0000ffff23e02000,0x0000ffff24000000], sp=0x0000ffff23ffbc00, free space=2023k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [libjvm.so+0x5b9958] Assembler::adr(Register, unsigned char*)+0x148 (assembler_aarch64.hpp:265)
V [libjvm.so+0x698ff8] LIR_Assembler::const2reg(LIR_Opr, LIR_Opr, LIR_PatchCode, CodeEmitInfo*)+0x3b8 (c1_LIRAssembler_aarch64.cpp:588)
V [libjvm.so+0x68c194] LIR_Assembler::move_op(LIR_Opr, LIR_Opr, BasicType, LIR_PatchCode, CodeEmitInfo*, bool, bool)+0x310 (c1_LIRAssembler.cpp:816)
V [libjvm.so+0x68da68] LIR_Assembler::emit_lir_list(LIR_List*)+0xf8 (c1_LIRAssembler.cpp:304)
V [libjvm.so+0x68e6f0] LIR_Assembler::emit_code(BlockList*)+0x270 (c1_LIRAssembler.cpp:269)
V [libjvm.so+0x63720c] Compilation::emit_code_body()+0x14c (c1_Compilation.cpp:358)
V [libjvm.so+0x6377d0] Compilation::compile_java_method()+0x390 (c1_Compilation.cpp:421)
V [libjvm.so+0x638060] Compilation::compile_method()+0x1fc (c1_Compilation.cpp:482)
V [libjvm.so+0x6386ec] Compilation::Compilation(AbstractCompiler*, ciEnv*, ciMethod*, int, BufferBlob*, bool, DirectiveSet*)+0x25c (c1_Compilation.cpp:612)
V [libjvm.so+0x63a464] Compiler::compile_method(ciEnv*, ciMethod*, int, bool, DirectiveSet*)+0xa4 (c1_Compiler.cpp:258)
V [libjvm.so+0x8f2b44] CompileBroker::invoke_compiler_on_method(CompileTask*)+0x7e0 (compileBroker.cpp:2305)
V [libjvm.so+0x8f372c] CompileBroker::compiler_thread_loop()+0x598 (compileBroker.cpp:1964)
V [libjvm.so+0xd6b248] JavaThread::thread_main_inner()+0xe4 (javaThread.cpp:720)
V [libjvm.so+0x159a1e0] Thread::call_run()+0xac (thread.cpp:220)
V [libjvm.so+0x130d4cc] thread_native_entry(Thread*)+0x12c (os_linux.cpp:787)
C [libpthread.so.0+0x7928] start_thread+0x188
- backported by
-
JDK-8321995 [AArch64] C1 compilation fails with "Field too big for insn"
- Resolved
-
JDK-8322556 [AArch64] C1 compilation fails with "Field too big for insn"
- Resolved
-
JDK-8342516 [AArch64] C1 compilation fails with "Field too big for insn"
- Resolved
- relates to
-
JDK-8310844 [AArch64] C1 compilation fails because monitor offset in OSR buffer is too large for immediate
- Resolved
-
JDK-8318817 Could not reserve enough space in CodeHeap 'profiled nmethods' (0K)
- Resolved
-
JDK-8319700 [AArch64] C2 compilation fails with "Field too big for insn"
- Closed
- links to
-
Commit openjdk/jdk22/6b46c776
-
Commit openjdk/jdk/69014cd5
-
Commit(master) openjdk/jdk21u-dev/6ed940b8
-
Review openjdk/jdk22/15
-
Review openjdk/jdk/16951
-
Review(master) openjdk/jdk21u-dev/956