RFR: JDK-8308300: enhance exceptions in MappedMemoryUtils.c
Alan Bateman
alanb at openjdk.org
Fri May 19 09:08:52 UTC 2023
On Fri, 19 May 2023 06:58:49 GMT, Matthias Baesken <mbaesken at openjdk.org> wrote:
> MappedMemoryUtils.c can generate exceptions like those :
> java.io.UncheckedIOException: java.io.IOException: Invalid argument
> at java.base/java.nio.MappedMemoryUtils.force(MappedMemoryUtils.java:105)
> at java.base/java.nio.Buffer$2.force(Buffer.java:890)
> at java.base/jdk.internal.misc.ScopedMemoryAccess.forceInternal(ScopedMemoryAccess.java:317)
> at java.base/jdk.internal.misc.ScopedMemoryAccess.force(ScopedMemoryAccess.java:305)
> at java.base/jdk.internal.foreign.MappedMemorySegmentImpl.force(MappedMemorySegmentImpl.java:92)
> at TestByteBuffer.testMappedSegmentAsByteBuffer(TestByteBuffer.java:327)
>
> (we see this for example on AIX); there is some room for improvement, at least the info should be added that msync failed and caused this exception.
src/java.base/share/native/libjava/jni_util.c line 196:
> 194: {
> 195: JNU_ThrowByNameWithMessageAndLastError(env, "java/io/IOException", message);
> 196: }
The additional function looks okay but I think the function description would be clearer if it were like this
/*
* Throw java.io.IOException using a given message and the string
* returned by getLastErrorString to construct the detail string.
*/
I see JNU_ThrowIOExceptionWithLastError also "Convenience method" but it's a function :-)
src/java.base/unix/native/libnio/MappedMemoryUtils.c line 114:
> 112: if (result == -1) {
> 113: JNU_ThrowIOExceptionWithMessageAndLastError(env, "madvise with parameter MADV_WILLNEED failed");
> 114: }
Maybe change "with parameter" to "with advise" so it's clearer what the value is about?
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/14054#discussion_r1198727146
PR Review Comment: https://git.openjdk.org/jdk/pull/14054#discussion_r1198728333
More information about the core-libs-dev
mailing list