RFR: 8367485: os::physical_memory is broken in 32-bit JVMs when running on 64-bit OSes [v4]

Stefan Karlsson stefank at openjdk.org
Thu Sep 18 14:20:02 UTC 2025


On Thu, 18 Sep 2025 14:02:00 GMT, Anton Artemov <duke at openjdk.org> wrote:

>> Hi, please consider the following changes:
>> 
>> In this PR we address the overflow issue in `os::physical_memory()` on Linux, which can occur when running a 32-bit JVM on a 64-bit machine, introduced by https://bugs.openjdk.org/browse/JDK-8357086. The problem is that the product of _SC_PHYS_PAGES and _SC_PAGESIZE can overflow according to the documentation. 
>> 
>> The issue is addressed by changing the output type of all related functions to `uint64_t`.
>> 
>> Tested in tiers 1 - 5.
>
> Anton Artemov has updated the pull request incrementally with one additional commit since the last revision:
> 
>   8367485: Addressed reviewer's comments

One last nit, but otherwise this looks good to me. Please make sure to get review feedback from the other people that has been active in this PR.

src/hotspot/os/windows/os_windows.cpp line 3967:

> 3965: // Processor level is not available on non-NT systems, use vm_version instead
> 3966: int    os::win32::_processor_level           = 0;
> 3967: uint64_t os::win32::_physical_memory         = 0;

I suggest that you change the three variables to:

int      os::win32::_processor_type          = 0;
// Processor level is not available on non-NT systems, use vm_version instead
int      os::win32::_processor_level         = 0;
uint64_t os::win32::_physical_memory         = 0;

bool     os::win32::_is_windows_server       = false;

The proposed patch messes up the pre-existing alignment.

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

PR Review: https://git.openjdk.org/jdk/pull/27335#pullrequestreview-3240038293
PR Review Comment: https://git.openjdk.org/jdk/pull/27335#discussion_r2359541576


More information about the hotspot-runtime-dev mailing list