-
Bug
-
Resolution: Fixed
-
P3
-
8, 11, 13, 14
-
b29
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8227480 | 14 | Erik Österlund | P3 | Resolved | Fixed | b05 |
JDK-8228302 | 13.0.2 | Erik Österlund | P3 | Resolved | Fixed | b01 |
JDK-8228086 | 13.0.1 | Erik Österlund | P3 | Resolved | Fixed | master |
JDK-8229938 | 11.0.6-oracle | Erik Österlund | P3 | Resolved | Fixed | b01 |
JDK-8228875 | 11.0.5 | Erik Österlund | P3 | Resolved | Fixed | b02 |
JDK-8322268 | 8u411 | Ludvig Janiuk | P3 | Resolved | Fixed | b01 |
JDK-8324603 | 8u401 | Ludvig Janiuk | P3 | Closed | Fixed | b32 |
Arguably, whether CMS is observed to crash or not, we really should not be walking over dead objects and exposing them anyway. It's not safe... and it will crash sooner or later.
For example, CMS yields to safepoints (including young GCs) while sweeping. This means that both the AbstractOwnableSynchronizer and its owner thread might have died, but while sweeping, we could yield for a young GC that promotes objects overriding the memory of the dead thread object with random primitives, but not yet freeing the dead AbstractOwnableSynchronizer. A subsequent dumping operation could use the heap walker to find the dead AbstractOwnableSynchronizer, and pointer chase into its dead owner thread, which by now has been freed and had its memory clobbered with primitive data.
This will all eventually end up in a glorious crash. So we shouldn't do this.
- backported by
-
JDK-8227480 HeapInspection::find_instances_at_safepoint walks dead objects
- Resolved
-
JDK-8228086 HeapInspection::find_instances_at_safepoint walks dead objects
- Resolved
-
JDK-8228302 HeapInspection::find_instances_at_safepoint walks dead objects
- Resolved
-
JDK-8228875 HeapInspection::find_instances_at_safepoint walks dead objects
- Resolved
-
JDK-8229938 HeapInspection::find_instances_at_safepoint walks dead objects
- Resolved
-
JDK-8322268 HeapInspection::find_instances_at_safepoint walks dead objects
- Resolved
-
JDK-8324603 HeapInspection::find_instances_at_safepoint walks dead objects
- Closed