[jdk21u-dev] RFR: 8358334: C2/Shenandoah: incorrect execution with Unsafe

Roland Westrelin roland at openjdk.org
Wed Jun 18 13:53:48 UTC 2025


Patch doesn't apply cleanly:

- jdk21u still has IU barriers: context for some of the changes is
  different.
  
- Because of IU barriers, there's an extra call to `fix_ctrl()` for
  which the renaming to `nodes_above_barriers` must be applied.
  
- The initial patch makes a subtle change that doesn't affect jdk
  25/26 in the code that was
  refactored. `ShenandoahBarrierC2Support::push_data_inputs_at_control()`
  is introduced with logic:

    if (in != nullptr && phase->has_ctrl(in) && phase->get_ctrl(in) == ctrl) {


  which replaces the same logic in
  `ShenandoahBarrierC2Support::fix_ctrl()` but also a slightly
  different logic in
  `ShenandoahBarrierC2Support::is_dominator_same_ctrl()`:
  

    if (m->in(i) != nullptr && phase->ctrl_or_self(m->in(i)) == c) {


  that is, it uses `ctrl_or_self()` which works for both data nodes
  and control nodes but the new method uses `has_ctrl(in) &&
  get_ctrl(in)` which can only be true for data nodes. That change
  causes failures in jdk 21 again because of IU barriers that produce
  a new memory state when expanded and need the logic from
  `MemoryGraphFixer`. What I propose in this backport to be on the
  safe side is to leave
  `ShenandoahBarrierC2Support::is_dominator_same_ctrl()` alone (not
  apply that part of the refactoring).
  
Tested with hotspot_gc_shenandoah + tier1 with -XX:+UseShenandoahGC

-------------

Commit messages:
 - Backport 46cfc1e1940ff6b91c4f0cb0a9161fd0aef37c38

Changes: https://git.openjdk.org/jdk21u-dev/pull/1901/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk21u-dev&pr=1901&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8358334
  Stats: 138 lines in 3 files changed: 117 ins; 13 del; 8 mod
  Patch: https://git.openjdk.org/jdk21u-dev/pull/1901.diff
  Fetch: git fetch https://git.openjdk.org/jdk21u-dev.git pull/1901/head:pull/1901

PR: https://git.openjdk.org/jdk21u-dev/pull/1901


More information about the jdk-updates-dev mailing list