JDK 9 RFR of 8168628: (ch) JVM Crash in : ~StubRoutines::jshort_disjoint_arraycopy

Volker Simonis volker.simonis at gmail.com
Fri Dec 2 09:28:26 UTC 2016


Hi Brian,

would it be possible to add some of the tests which are attached to
the bug report as regression tests?
Maybe as manual test if the resource requirements are to demanding for
automatic testing?
I think this would help to verify the issue on other platforms.

Thanks,
Volker


On Fri, Dec 2, 2016 at 3:13 AM, Brian Burkhalter
<brian.burkhalter at oracle.com> wrote:
> Please review at your convenience:
>
> Issue:  https://bugs.openjdk.java.net/browse/JDK-8168628
> Patch:  http://cr.openjdk.java.net/~bpb/8168628/webrev.00/
>
> The FileChannel.map() method extends the size of the file being mapped when it is not already sufficiently large. On Unix, file size extension is implemented via the ftruncate() function. On Linux, this function does not actually allocate any blocks for the file when the new size is larger than the existing size. This may cause problems when the file is memory-mapped. This might occur proximately because map() may be invoked from multiple, different threads wherein one thread reduces the size of a file previously mapped at a larger size by another thread. The eventual result is a SIGBUS.
>
> This patch addresses the problem by using fallocate() on Linux when the requested size exceeds the allocated size, and by synchronizing on positionLock in the section in FileChannelImpl.map() where the file is extended. Note that the same crash is observed on OS X without the addition of this synchronization.
>
> Thanks,
>
> Brian
>
> [1] https://linux.die.net/man/2/ftruncate


More information about the nio-dev mailing list