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