RFR: 8371216: oopDesc::print_value_on breaks if klass is garbage [v2]

Paul Hübner phubner at openjdk.org
Fri Nov 7 14:35:23 UTC 2025


> Hi all,
> 
> The `oopDesc::print_value_on` function checks if an oop is a string, and if so just prints the raw string. To do this, it needs to read the `klass()`. If the `klass()` reads garbage, one of many assertion errors is likely triggered.
> 
> For example, if G1's verification finds problematic oops, it will attempt to print them. If these oops have garbage (incorrect or racey) klasses, this will cause an assertion error, fail fast, and VM crash. G1 never finishes printing, which may make debugging more difficult. The developer can/will be made aware in other ways if the `klass()` is garbage, for example by being told that it is not in the metaspace.
> 
> We observed the above in Valhalla and already patched it there.
> 
> Testing: tiers 1-5 on Linux (x64, AArch64), macOS (x64, AArch64), Windows (x64).

Paul Hübner has updated the pull request incrementally with one additional commit since the last revision:

  Don't make a new function.

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/28190/files
  - new: https://git.openjdk.org/jdk/pull/28190/files/e8be53d0..b5991b7f

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=28190&range=01
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28190&range=00-01

  Stats: 12 lines in 3 files changed: 3 ins; 8 del; 1 mod
  Patch: https://git.openjdk.org/jdk/pull/28190.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/28190/head:pull/28190

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


More information about the hotspot-dev mailing list