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