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