-
Type:
Bug
-
Resolution: Unresolved
-
Priority:
P4
-
None
-
Affects Version/s: 25, 26
-
Component/s: hotspot
This came in on the mailing list: https://mail.openjdk.org/pipermail/shenandoah-dev/2025-December/028724.html.
Summary:
I believe the issue is a Reference in the old generation will sometimes fail to be discovered by the GC. A reference in the old gen will not be encountered by any young gen collections. And when it gets encountered in the old gen, should_discover() is returning false, so there's no way for it to ever be enqueued. I think this is due to the references being wrongly considered strongly live:
[23.999s][trace][gc,ref ] GC(259) Encountered Reference: 0x000000030000b6e8 (Weak, OLD)
[23.999s][trace][gc,ref ] GC(259) Reference strongly live: 0x000000030000b6e8
Summary:
I believe the issue is a Reference in the old generation will sometimes fail to be discovered by the GC. A reference in the old gen will not be encountered by any young gen collections. And when it gets encountered in the old gen, should_discover() is returning false, so there's no way for it to ever be enqueued. I think this is due to the references being wrongly considered strongly live:
[23.999s][trace][gc,ref ] GC(259) Encountered Reference: 0x000000030000b6e8 (Weak, OLD)
[23.999s][trace][gc,ref ] GC(259) Reference strongly live: 0x000000030000b6e8