Integrated: 8316880: AArch64: "stop: Header is not fast-locked" with -XX:-UseLSE since JDK-8315880

Nick Gasson ngasson at openjdk.org
Tue Oct 3 08:20:43 UTC 2023


On Fri, 29 Sep 2023 08:12:06 GMT, Nick Gasson <ngasson at openjdk.org> wrote:

> 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.

This pull request has now been integrated.

Changeset: b6a97c07
Author:    Nick Gasson <ngasson at openjdk.org>
URL:       https://git.openjdk.org/jdk/commit/b6a97c078043862b20bd8e1d1b8ccb8699995515
Stats:     41 lines in 10 files changed: 15 ins; 0 del; 26 mod

8316880: AArch64: "stop: Header is not fast-locked" with -XX:-UseLSE since JDK-8315880

Reviewed-by: rkennke, aph

-------------

PR: https://git.openjdk.org/jdk/pull/15978


More information about the hotspot-dev mailing list