On Mon, 1 Sep 2025 05:31:43 GMT, Amit Kumar <[email protected]> wrote:
> Originally Reported in OpenJ9, fix by @AditiS11 present here: > https://github.com/ibmruntimes/openj9-openjdk-jdk25/pull/32 > > These test failure were reported in OpenJ9 (x86), I can't reproduce on my > system (s390x): > > java/foreign/TestFill.java > java/foreign/TestSegments.java > java/foreign/TestSegmentBulkOperationsContentHash.java > java/foreign/TestStringEncoding.java > java/foreign/TestVarArgs.java > > > > ```java > // Always allocate at least some memory so that zero-length segments > have distinct > // non-zero addresses. > alignedSize = Math.max(1, alignedSize); > > > Here minimum-allocated size will be 1, which is incorrect because > > > private static void initNativeMemory(long address, long byteSize) { > for (long i = 0; i < byteSize; i += Long.BYTES) { > UNSAFE.putLongUnaligned(null, address + i, 0); > } > } > > `initNativeMemory()` is going to write Long. src/java.base/share/classes/jdk/internal/foreign/SegmentFactories.java line 201: > 199: // Always allocate at least some memory so that zero-length > segments have distinct > 200: // non-zero addresses. > 201: alignedSize = Math.max(Long.BYTES, alignedSize); A few lines above this code there's a comment which says: // Align the allocation size up to a multiple of 8 so we can init the memory with longs long alignedSize = init ? Utils.alignUp(byteSize, Long.BYTES) : byteSize; Should we have a similar comment as well as a check for `init` here? After all, we are increasing this size here because of `init` initializing the allocated memory. So perhaps something like: // Always allocate at least some memory so that zero-length segments have distinct // non-zero addresses. If we are initializing the allocated memory, then use a minimum // size of 8 because we init the memory with longs. alignedSize = Math.max((init ? Long.BYTES : 1), alignedSize); If you do use this newer proposed change, then please have it verified against the original reproducer. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/27027#discussion_r2314932199
