RFR: 8352091: GenShen: assert(!(request.generation->is_old() && _heap->old_generation()->is_doing_mixed_evacuations())) failed: Old heuristic should not request cycles while it waits for mixed evacuation
William Kemper
wkemper at openjdk.org
Fri Mar 14 23:50:25 UTC 2025
Consider the following:
1. Regulator thread sees that control thread is `idle` and requests an old cycle
2. Regulator thread waits until control thread is not `idle`
3. Control thread starts old cycle and notifies the Regulator thread (as expected)
4. Regulator thread stays off CPU for a _long_ time
5. Control thread _completes_ old marking and returns to `idle` state
6. Regulator thread finally wakes up and sees that Control thread is _still_ idle
7. In fact, the control thread has completed old marking and the regulator thread should not request another cycle
-------------
Commit messages:
- Fix ABA issue that could have regulator thread request unexpected old cycles
Changes: https://git.openjdk.org/jdk/pull/24069/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=24069&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8352091
Stats: 2 lines in 1 file changed: 1 ins; 0 del; 1 mod
Patch: https://git.openjdk.org/jdk/pull/24069.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/24069/head:pull/24069
PR: https://git.openjdk.org/jdk/pull/24069
More information about the shenandoah-dev
mailing list