StubRoutines::load_long_atomic causes SIGBUS on aarch32

Sergei Ustimenko merkel05 at gmail.com
Sat Dec 29 16:01:26 UTC 2018


Hi,

Recently I've stumbled upon quite curious situation in the aarch32 port.
I have latest raspberry pi 3b+ which has an armv8-a CPU, that works
in the compatibility mode. Raspbian in that case shows me that CPU
is in the 32 bits mode and uses armv7-a instructions set.

When I was building and testing the sandbox flavor of openjdk, amongst
some tests that failed I've noticed an unusual one:

TestAnonymousClassUnloading.java fails with:

#  SIGBUS (0x7) at pc=0x73db4884, pid=5430, tid=5435
#
# JRE version: OpenJDK Runtime Environment (13.0) (build
13-internal+0-adhoc.pi.sandbox)
# Java VM: OpenJDK Server VM (13-internal+0-adhoc.pi.sandbox, mixed mode,
sharing, serial gc, linux-arm)
# Problematic frame:
# v  ~StubRoutines::atomic_load_long

r0  = 0x5bde8e94
0x5bde8e94 is pointing into metadata

pc  = 0x73db4884
0x73db4884 is at begin+4 in a stub
StubRoutines::atomic_load_long [0x73db4880, 0x73db488c[ (12 bytes)

StubRoutines::atomic_load_long [0x73db4880, 0x73db488c[ (12
bytes)[Disassembling for mach='arm']
  0x73db4880: ldrexd    r0, [r0]
  0x73db4884: clrex
  0x73db4888: bx        lr
VM_Operation (0x643fe5f8): GenCollectFull, mode: safepoint, requested by
thread 0x7609fc00

Does anybody have any suggestion where I could read on why the `clrex`
caused SIGBUS?

Regards,
Sergei


More information about the aarch32-port-dev mailing list