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