RFR: 8316880: AArch64: "stop: Header is not fast-locked" with -XX:-UseLSE since JDK-8315880
Nick Gasson
ngasson at openjdk.org
Fri Sep 29 08:20:37 UTC 2023
Building a fastdebug image on a machine without LSE (e.g. A72) or explicitly disabling LSE results in:
#
# A fatal error has been detected by the Java Runtime Environment:
#
# Internal Error (0xe0000000), pid=64585, tid=64619
# stop: Header is not fast-locked
#
# JRE version: OpenJDK Runtime Environment (22.0) (fastdebug build 22-internal-git-a2391a92c)
# Java VM: OpenJDK 64-Bit Server VM (fastdebug 22-internal-git-a2391a92c, mixed mode, tiered, compressed oops, compressed class ptrs, g1 gc, linux-aarch64)
# Problematic frame:
# J 1373 c2 sun.nio.ch.NativeThreadSet.add()I java.base (155 bytes) @ 0x0000ffff7ccdf110 [0x0000ffff7ccdef80+0x0000000000000190]
#
When UseLSE is false `MacroAssembler::cmpxchg()` uses rscratch1 as a temporary to store the result of the store-exclusive instruction. However rscratch1 may also be one of the registers passed as t1 or t2 to `MacroAssembler::lightweight_lock()` and holding a live value which is then clobbered. Fixed by ensuring rscratch1 is never passed as one of these temporaries.
-------------
Commit messages:
- 8316880: AArch64: "stop: Header is not fast-locked" with -XX:-UseLSE since JDK-8315880
Changes: https://git.openjdk.org/jdk/pull/15978/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=15978&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8316880
Stats: 29 lines in 8 files changed: 8 ins; 0 del; 21 mod
Patch: https://git.openjdk.org/jdk/pull/15978.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/15978/head:pull/15978
PR: https://git.openjdk.org/jdk/pull/15978
More information about the hotspot-dev
mailing list