On Thu, 12 Mar 2026 07:17:14 GMT, Damon Fenacci <[email protected]> wrote:
> # Issue > AOT‑cached c2i adapters can mis-handle inline‑buffer oops when the JVM runs > with a different compressed‑oops mode than the one used when the AOT cache > was created, leading to wrong object decoding and test failures/crashes. > > # Cause > Adapters only need this special handling in Valhalla because inline types are > flattened and require heap buffers during c2i transitions, which are decoded > inside the adapter. If the runtime compressed‑oops settings > (UseCompressedOops, shift, base) differ from the AOT‑creation settings, the > adapter decodes those oops incorrectly (non‑Valhalla adapters don’t decode > inline‑buffer oops, so they don’t hit this path). > > # Fix > During AOT cache verification, if we detect any mismatch in compressed‑oops > flag, shift, or base, we disable AOT adapter caching, forcing adapters to be > regenerated at runtime with the correct configuration (this mirrors what the > VM already does for AOT stub caching). Logging has been slightly modified for > consistency. > > # Testing > Tier 1-3+ > JBS issue failing tests using `--enable-preview` > `test/hotspot/jtreg/runtime/cds/appcds/aotCode/AOTCodeCompressedOopsTest.java` > had to be adapted to reflect the modified log This pull request has now been integrated. Changeset: 5fa3e605 Author: Damon Fenacci <[email protected]> URL: https://git.openjdk.org/valhalla/commit/5fa3e605878046e075579f6dd9f8266c5782e271 Stats: 18 lines in 2 files changed: 11 ins; 0 del; 7 mod 8377351: [lworld] runtime/clinit/ClassInitBarrier.java crashes with SIGSEGV/EAV with AOT class linking and --enable-preview Reviewed-by: chagedorn, thartmann ------------- PR: https://git.openjdk.org/valhalla/pull/2217
