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

Nick Gasson ngasson at openjdk.org
Mon Oct 2 13:53:06 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.

Nick Gasson has updated the pull request incrementally with one additional commit since the last revision:

  Review suggestions

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/15978/files
  - new: https://git.openjdk.org/jdk/pull/15978/files/ed2222c8..1608efd3

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=15978&range=01
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=15978&range=00-01

  Stats: 17 lines in 6 files changed: 7 ins; 0 del; 10 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