RFR: 8340307: Add explanation around MemorySegment:reinterpret regarding arenas [v4]

Maurizio Cimadamore mcimadamore at openjdk.org
Thu Oct 31 17:27:33 UTC 2024


On Thu, 31 Oct 2024 14:32:46 GMT, Per Minborg <pminborg at openjdk.org> wrote:

>> This PR proposes to add a small text segment on the `MemorySegment::reinterpret` overloads that takes an Arena stating the responsibility of actually freeing reinterpreted segments lies with the *original* arena.
>
> Per Minborg has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Improve docs

src/java.base/share/classes/java/lang/foreign/MemorySegment.java line 766:

> 764:      * method returns a segment that can be used as any other segment allocated using the
> 765:      * provided arena. However, The returned segment is backed by the same memory region
> 766:      * as that of the original segment. As such, the region of memory backing the

s/original/this

src/java.base/share/classes/java/lang/foreign/MemorySegment.java line 768:

> 766:      * as that of the original segment. As such, the region of memory backing the
> 767:      * returned segment is deallocated only when the original segment's arena is closed.
> 768:      * Care must be taken as this might lead to unexpected behavior:

maybe s/unexpected/unsafe

src/java.base/share/classes/java/lang/foreign/MemorySegment.java line 770:

> 768:      * Care must be taken as this might lead to unexpected behavior:
> 769:      * <ol>
> 770:      *     <li>The reinterpreted segment can be accessed <em>after</em> its region

s/reinterpreted/returned

src/java.base/share/classes/java/lang/foreign/MemorySegment.java line 771:

> 769:      * <ol>
> 770:      *     <li>The reinterpreted segment can be accessed <em>after</em> its region
> 771:      *         of memory has been deallocated via the original arena (use after free).</li>

s/the original arena/this segment's arena

src/java.base/share/classes/java/lang/foreign/MemorySegment.java line 771:

> 769:      * <ol>
> 770:      *     <li>The reinterpreted segment can be accessed <em>after</em> its region
> 771:      *         of memory has been deallocated via the original arena (use after free).</li>

Suggestion:

     *         of memory has been deallocated via the original arena, resulting in *use after free*.</li>

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

PR Review Comment: https://git.openjdk.org/jdk/pull/21761#discussion_r1824872032
PR Review Comment: https://git.openjdk.org/jdk/pull/21761#discussion_r1824875339
PR Review Comment: https://git.openjdk.org/jdk/pull/21761#discussion_r1824876869
PR Review Comment: https://git.openjdk.org/jdk/pull/21761#discussion_r1824878427
PR Review Comment: https://git.openjdk.org/jdk/pull/21761#discussion_r1824880684


More information about the core-libs-dev mailing list