-
Enhancement
-
Resolution: Fixed
-
P4
-
17, 21, 22
-
b02
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8310113 | 21 | Aleksey Shipilev | P4 | Resolved | Fixed | b28 |
JDK-8310464 | 17.0.9 | Aleksey Shipilev | P4 | Resolved | Fixed | b01 |
This is because `oopDesc::age` is subtly racy: we read the mark, check it for displaced header, and then reach for the displaced header, reading the mark again. If stack unlock happened at the same time, we might be reading non-displaced mark the second time, which would fail the assert or even reach `fatal` in `markWord::displaced_mark_helper`. (We should really be reading the mark once there, see
But it would be even easier to rectify the filtering in Shenandoah dedup to avoid going into oopDesc::age to begin with. This is easy, since we load the mark anyway.
- backported by
-
JDK-8310113 Shenandoah: Strengthen the mark word check in string dedup
-
- Resolved
-
-
JDK-8310464 Shenandoah: Strengthen the mark word check in string dedup
-
- Resolved
-
- relates to
-
JDK-8309953 Strengthen and optimize oopDesc age methods
-
- Resolved
-
- links to
-
Commit openjdk/jdk17u-dev/fb1741ca
-
Commit openjdk/jdk21/0ac92753
-
Commit openjdk/jdk/57b82512
-
Review openjdk/jdk17u-dev/1443
-
Review openjdk/jdk21/19
-
Review openjdk/jdk/14455