RFR: 8252853: AArch64: gc/shenandoah/TestVerifyJCStress.java fails intermittently with C1
Aleksey Shipilev
shade at openjdk.java.net
Tue Sep 8 10:02:13 UTC 2020
On Tue, 8 Sep 2020 09:45:29 GMT, Nick Gasson <ngasson at openjdk.org> wrote:
> 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.
Marked as reviewed by shade (Reviewer).
-------------
PR: https://git.openjdk.java.net/jdk/pull/68
More information about the hotspot-gc-dev
mailing list