RFR: 8358680: AOT cache creation fails: no strings should have been added

Ioi Lam iklam at openjdk.org
Mon Jun 16 03:34:44 UTC 2025


Background: when writing the string table in the AOT cache, we do this:

1. Find out the number of strings in the interned string table
2. Allocate Java object arrays that are large enough to store these strings. These arrays are used by `StringTable::lookup_shared()` in the production run.
3. Enter safepoint
4. Copy the strings into the arrays

This bug happened because:

- Step 1 is not thread safe, so it may be reading a stale version of `_items_count`
- JIT compiler threads may create more interned strings after step 1

This PR attempts to fix both issues.

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

Commit messages:
 - 8358680: AOT cache creation fails: no strings should have been added

Changes: https://git.openjdk.org/jdk/pull/25816/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=25816&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8358680
  Stats: 66 lines in 8 files changed: 48 ins; 2 del; 16 mod
  Patch: https://git.openjdk.org/jdk/pull/25816.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/25816/head:pull/25816

PR: https://git.openjdk.org/jdk/pull/25816


More information about the hotspot-dev mailing list