RFR: 8260262: Use common code in function unmap_shared() in perfMemory_posix.cpp
Thomas Stuefe
stuefe at openjdk.java.net
Mon Aug 9 17:40:35 UTC 2021
On Mon, 9 Aug 2021 17:16:58 GMT, Coleen Phillimore <coleenp at openjdk.org> wrote:
>> Please review this change to use common code in function unmap_shared() in perfMemory_posix.cpp, to fix JDK-8260262. The change calls munmap() directly to deallocate the memory because functions mmap_create_shared() and mmap_attach_shared() call mmap() directly to allocate the memory.
>>
>> The change was tested by running Mach5 tiers 1-2 on Linux, MacOS, and Windows, and Mach5 tiers 3-5 on Linux x64 and MacOS x64.
>>
>> Note that testing on AIX is needed.
>>
>> Thanks, Harold
>
> src/hotspot/os/posix/perfMemory_posix.cpp line 1036:
>
>> 1034: }
>> 1035: #else
>> 1036: os::release_memory(addr, bytes);
>
> Why doesn't AIX call munmap with os::release_memory() and then do this NMT tracking?
I'm not sure I understand what you are proposing.
The old code was incorrect since it used raw `::mmap()` to map perf memory, but used `os::release_memory()` to release it. This was asymmetric and assumed the underlying implementation for os::reserve/release... uses mmap, which is not always true. The patch corrects this by coupling raw ::mmap with raw ::munmap, and do NMT tracking accordingly.
Arguably, one could factor out mmap+NMT and munmap+NMT in os_posix.cpp. We probably have a number of places where this would be needed. E.g. polling pages and such. But I guess that was out of scope for this issue.
-------------
PR: https://git.openjdk.java.net/jdk/pull/4995
More information about the hotspot-runtime-dev
mailing list