-
Bug
-
Resolution: Fixed
-
P3
-
21, 22, 23
-
b26
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8343438 | 21.0.7-oracle | Erik Österlund | P3 | Resolved | Fixed | b01 |
JDK-8338830 | 21.0.5 | Aleksey Shipilev | P3 | Resolved | Fixed | b05 |
When marking through the object graph, encountered strings get requests for deduplication, which publishes an oop in OopStorage using a phantom store. When performing stores, it is implicitly assumed that surely the thing you are attaching to the object graph, is already considered strongly reachable, right?!
Unfortunately, when marking through the finalizer graph, it is not strongly reachable. Yet we invoke the same string deduplication code. The result is that that pointer colours look better than they necessarily are. When the reference processor processes the referents of the OopStorage, they can incorrectly not get cleared, due to the colour looking as if it should be strongly reachable. This will eventually end up in a crash as the object referred to isn't live.
Unfortunately, when marking through the finalizer graph, it is not strongly reachable. Yet we invoke the same string deduplication code. The result is that that pointer colours look better than they necessarily are. When the reference processor processes the referents of the OopStorage, they can incorrectly not get cleared, due to the colour looking as if it should be strongly reachable. This will eventually end up in a crash as the object referred to isn't live.
- backported by
-
JDK-8338830 ZGC: Should not dedup strings in the finalizer graph
- Resolved
-
JDK-8343438 ZGC: Should not dedup strings in the finalizer graph
- Resolved
- links to
-
Commit openjdk/jdk/2f2dc228
-
Commit(master) openjdk/jdk21u-dev/d5b8ea8d
-
Review openjdk/jdk/19444
-
Review(master) openjdk/jdk21u-dev/917
(1 links to)