RFR: 8252853: AArch64: gc/shenandoah/TestVerifyJCStress.java fails intermittently with C1
Nick Gasson
ngasson at openjdk.java.net
Tue Sep 8 09:53:13 UTC 2020
This test fails occasionally when run with -XX:TieredStopAtLevel=1 on
AArch64 with the error
java.util.concurrent.ExecutionException: java.lang.NullPointerException: Cannot assign field "prev" because "node" is
null
at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191)
at TestVerifyJCStress.main(TestVerifyJCStress.java:109)
[..snip..]
Caused by: java.lang.NullPointerException: Cannot assign field "prev" because "node" is null
at java.base/java.util.concurrent.locks.StampedLock.acquireWrite(StampedLock.java:1221)
at java.base/java.util.concurrent.locks.StampedLock.writeLockInterruptibly(StampedLock.java:536)
at TestVerifyJCStress$Test.WLI_Us(TestVerifyJCStress.java:133)
The particular configuration that fails is -XX:ShenandoahGCMode=iu. In
this mode the Shenandoah C1 CAS implementation calls into
ShenandoahBarrierSetAssembler::storeval_barrier() which performs a VM
leaf call in the slow path (via satb_write_barrier_pre()) but only saves
R0-R4 and V0 (for the interpreter, I guess). Instead it needs to
preserve all the caller saved registers as some of these might hold live
values over the CAS in the C1 generated code.
Tested jtreg hotspot_all_no_apps, jdk_core, plus jcstress with -jvmArgs
'-XX:+UseShenandoahGC -XX:ShenandoahGCMode=iu -XX:TieredStopAtLevel=1'
which would also fail in the same way.
-------------
Commit messages:
- 8252853: AArch64: gc/shenandoah/TestVerifyJCStress.java fails intermittently with C1
Changes: https://git.openjdk.java.net/jdk/pull/68/files
Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=68&range=00
Issue: https://bugs.openjdk.java.net/browse/JDK-8252853
Stats: 15 lines in 2 files changed: 5 ins; 7 del; 3 mod
Patch: https://git.openjdk.java.net/jdk/pull/68.diff
Fetch: git fetch https://git.openjdk.java.net/jdk pull/68/head:pull/68
PR: https://git.openjdk.java.net/jdk/pull/68
More information about the shenandoah-dev
mailing list