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 shenandoah-dev
mailing list