RFR: 8367317: ZGC: ZVirtualMemoryReserver::force_reserve_discontiguous arithmetic underflow
Axel Boldt-Christmas
aboldtch at openjdk.org
Thu Sep 11 05:20:29 UTC 2025
ZVirtualMemoryReserver::force_reserve_discontiguous is a debug only API used to simulate and test a discontinuous heap. The loop variable `end` is incorrectly checked which may lead to an underflow.
In our normal testing we never observe this as the address space is always available. We observed this issue when running a hardened build (like ASAN) which had already mmapped the address space we tried to reserve.
Rather than always jump two reserve sizes in its search, it searches every reserve size, moving an extra reserve size every time it succeeds with a reservation (so that there always is a gap). Searching in reserve sized steps is not really a requirement here, we could have just used a granule sized step.
-------------
Commit messages:
- 8367317: ZGC: ZVirtualMemoryReserver::force_reserve_discontiguous arithmetic underflow
Changes: https://git.openjdk.org/jdk/pull/27207/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=27207&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8367317
Stats: 2 lines in 1 file changed: 1 ins; 0 del; 1 mod
Patch: https://git.openjdk.org/jdk/pull/27207.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/27207/head:pull/27207
PR: https://git.openjdk.org/jdk/pull/27207
More information about the hotspot-gc-dev
mailing list