-
Bug
-
Resolution: Fixed
-
P3
-
17, 18, 19, 20, 21
-
b19
-
generic
-
generic
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8308126 | 20u-cpu | William Kemper | P3 | Resolved | Fixed | master |
JDK-8307111 | 20.0.2 | William Kemper | P3 | Resolved | Fixed | b05 |
JDK-8307066 | 17.0.8 | William Kemper | P3 | Resolved | Fixed | b01 |
This situation occurs because some of the workers have set the cancelled state to `NOT_CANCELLED` and then yielded to the suspendible thread set because a safepoint is starting. Other workers who then experience an OOM during evacuation attempt to transition the heap from `CANCELLABLE` to `CANCELLED` in a CAS loop that will never succeed (because the cancelled state is `NOT_CANCELLED`). These workers are unable to join the suspendible thread set, so the threads which have yielded are unable to resume and reset the heap to `CANCELLABLE`. The VM thread cannot enter the safepoint and eventually all of the mutator threads block when they are unable to allocate.
- backported by
-
JDK-8307066 Shenandoah evacuation workers may deadlock
-
- Resolved
-
-
JDK-8307111 Shenandoah evacuation workers may deadlock
-
- Resolved
-
-
JDK-8308126 Shenandoah evacuation workers may deadlock
-
- Resolved
-
- relates to
-
JDK-8282997 Shenandoah Generational: Mutator threads may fail to evacuate
-
- Closed
-
-
JDK-8321410 Shenandoah: Remove ShenandoahSuspendibleWorkers flag
-
- Resolved
-
- links to
-
Commit openjdk/jdk17u-dev/1ba2d531
-
Commit openjdk/jdk20u/5122deff
-
Commit openjdk/jdk/793da60e
-
Review openjdk/jdk17u-dev/1242
-
Review openjdk/jdk20u/65
-
Review openjdk/jdk/13309