RFR: 8346971: [ubsan] psCardTable.cpp:131:24: runtime error: large index is out of bounds

Kim Barrett kbarrett at openjdk.org
Fri Jan 10 11:25:55 UTC 2025


Please review this change to PSStripeShadowCardTable to avoid several examples
of UB in it's internal calculations.  We avoid the UB by switching to the
integer domain (using uintptr_t) for all of the internal calculations, with
casts between pointers and uintptr_t as needed at the boundaries.

This applies not just to the various pointer adjustments, but also to pointer
comparisons. In particular, the prior range check assertions using pointer
comparisons could have been partially or even completely "optimized" away
based on the no-UB assumption.

Testing: mach5 tier1-5
local (linux-x64) tier1 with -XX:+UseParallelGC

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

Commit messages:
 - avoid UB

Changes: https://git.openjdk.org/jdk/pull/23032/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=23032&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8346971
  Stats: 35 lines in 1 file changed: 29 ins; 0 del; 6 mod
  Patch: https://git.openjdk.org/jdk/pull/23032.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/23032/head:pull/23032

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


More information about the hotspot-gc-dev mailing list