RFR: 8273614: Shenandoah: intermittent timeout with ConcurrentGCBreakpoint tests

Zhengyu Gu zgu at openjdk.java.net
Fri Oct 8 16:55:26 UTC 2021


I were able to reproduce with aggressive heuristics. 

While a _wb_breakpoint GC request , at the moment a concurrent GC is started. ShenandoahBreakpoint::_start_gc may not get set, as we bypass it if it is not _wb_breakpoint GC, then we are forever blocked in ShenandoahBreakpoint::at_before_gc(), waiting for the flag to be set.

The solution is only run breakpoints during _wb_breakpoint GC.

Also, enforced _requested_gc_cause and _gc_requested order, ensure that read side sees latest _requested_gc_cause.

Test:

- [x] tier1 with Shenandoah

-------------

Commit messages:
 - Order requested gc cause and gc requested flag
 - Merge branch 'master' into JDK-8273614-conbkptr-timeout
 - v1
 - Merge branch 'master' into JDK-8273614-conbkptr-timeout
 - Merge branch 'master' into JDK-8273614-conbkptr-timeout
 - use wait
 - Merge branch 'master' into JDK-8273614-conbkptr-timeout
 - Merge branch 'master' into TestJNIWeak-timeout
 - v0

Changes: https://git.openjdk.java.net/jdk/pull/5868/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=5868&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8273614
  Stats: 29 lines in 2 files changed: 16 ins; 4 del; 9 mod
  Patch: https://git.openjdk.java.net/jdk/pull/5868.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/5868/head:pull/5868

PR: https://git.openjdk.java.net/jdk/pull/5868



More information about the hotspot-gc-dev mailing list