8252853: AArch64: gc/shenandoah/TestVerifyJCStress.java fails intermittently with C1 #68
This test fails occasionally when run with -XX:TieredStopAtLevel=1 on
The particular configuration that fails is -XX:ShenandoahGCMode=iu. In
Tested jtreg hotspot_all_no_apps, jdk_core, plus jcstress with -jvmArgs
…ttently with C1 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.
@nick-arm The following labels will be automatically applied to this pull request:
When this pull request is ready to be reviewed, an RFR email will be sent to the corresponding mailing lists. If you would like to change these labels, use the
After integration, the commit message will be:
Since the source branch of this PR was last updated there has been 1 commit pushed to the
As there are no conflicts, your changes will automatically be rebased on top of these commits when integrating. If you prefer to avoid automatic rebasing, please merge
@nick-arm Since your change was applied there has been 1 commit pushed to the
Your commit was automatically rebased without conflicts.
Pushed as commit 4fb1980.