RFR: 8371637: allocateNativeInternal sometimes return incorrectly aligned memory [v3]

Harald Eilertsen haraldei at openjdk.org
Sun Nov 16 18:09:47 UTC 2025


On Sat, 15 Nov 2025 18:54:18 GMT, Jorn Vernee <jvernee at openjdk.org> wrote:

>> Harald Eilertsen has updated the pull request incrementally with one additional commit since the last revision:
>> 
>>   OS agnostic fix for alignment of native segments
>>   
>>   Only align up the requested memory if the requested alignment is larget
>>   than max alignment provided by malloc, or if the requested size is not a
>>   multiple of the alignment size.
>>   
>>   This work was sponsored by: The FreeBSD Foundation
>>   
>>   Co-authored-by: mcimadamore
>
> src/java.base/share/classes/jdk/internal/foreign/SegmentFactories.java line 207:
> 
>> 205:         long result;
>> 206:         if (byteAlignment > MAX_MALLOC_ALIGN || alignedSize % byteAlignment != 0) {
>> 207:             allocationSize = alignedSize + byteAlignment - MAX_MALLOC_ALIGN;
> 
> The calculation of `allocationSize` looks no longer correct now that `byteAlignment` might be smaller than `MAX_MALLOC_ALIGN`, and it can result in a negative size.

Yes, I've just pushed a patch that should fix that.

Also I think it should be possible to change the if-statement like this:


if (byteAlignment > MAX_MALLOC_ALIGN || alignedSize < byteAlignment) {
   ...


But did not include that in this patch, as I tried to keep the change as small as possible.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/28235#discussion_r2532130159


More information about the core-libs-dev mailing list