-
Enhancement
-
Resolution: Fixed
-
P3
-
11, 17, 21, 24
-
b23
-
generic
-
generic
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8351030 | 21.0.8 | Aleksey Shipilev | P3 | Resolved | Fixed | master |
However, in Shenandoah, a similar scheme is used to indicate forwarding objects: the lowest two bits in object's mark are set, and the reference to the forwarding object in the upper bits of the header. We may go through the load-reference-barrier of an object that has an associated Edge* in BFSClosure::do_oop(), which would decode the assumed forwarding pointer, get the index instead of the reference, and eventually crash, when trying to dereference anything from there.
Notice that
As an aside, in Shenandoah, we distinguish forwarding pointers from JVMTI heap-walk 'marked' objects by checking for the upper mark-bits to be NULL. JFR breaks this scheme (which is rather brittle in itself) by putting the Edge* association in the mark-word too.
We may want to consider something similar to: https://github.com/openjdk/lilliput/pull/18
- backported by
-
JDK-8351030 JFR Leak Profiler is broken with Shenandoah
-
- Resolved
-
- duplicates
-
JDK-8337194 Shenandoah: Multiple forwardings detected in JFR Leak Profiler tests
-
- Closed
-
- relates to
-
JDK-8343754 Problemlist jdk/jfr/event/oldobject/TestShenandoah.java after JDK-8279016
-
- Resolved
-
-
JDK-8342951 JFR: Leak Profiler should avoid touching mark words
-
- Open
-
-
JDK-8275415 Prepare Leak Profiler for Lilliput
-
- Resolved
-
- links to
-
Commit(master) openjdk/jdk21u-dev/ef23a01a
-
Commit(master) openjdk/jdk/0be7118b
-
Review(master) openjdk/jdk21u-dev/1439
-
Review(master) openjdk/jdk/20328