Uploaded image for project: 'Harmony'
  1. Harmony
  2. HARMONY-6315

[classlib][nio] FileChannel.map throws IOException when called with size 0

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • 6.0M1, 5.0M12
    • Classlib
    • None
    • Unix
    • Patch Available
    • Moderate

    Description

      Creating a MappedByteBuffer by calling FileChannel.map with size 0 throws an IOException, as the native call to mmap will fail with invalid argument when called with size 0. Also the IOException is thrown without any message from the Java after the native has returned with -1, which isn't ideal. On IBM and Sun Java a MappedByteBuffer is constructed with 0 capacity.

      The stack trace of the error is:
      java.io.IOException: Call to mmap failed with error 22: Invalid argument
      at org.apache.harmony.luni.platform.OSMemory.mmap(OSMemory.java:547) /* after calling OSMemoryLinux32.c which calls mmap */
      at org.apache.harmony.luni.platform.PlatformAddressFactory.allocMap(PlatformAddressFactory.java:37) /* returns a PlatformAddress of where the map is */
      at org.apache.harmony.nio.internal.FileChannelImpl.mapImpl(FileChannelImpl.java:191) /* creates PlatformAddress, which is passed to MappedByteBuffer constructor */
      at org.apache.harmony.nio.internal.ReadOnlyFileChannel.map(ReadOnlyFileChannel.java:89)
      at org.apache.harmony.nio.tests.java.nio.MappedByteBufferTest.testEmptyBuffer(MappedByteBufferTest.java:70)

      I think where to fix this is the native function, and return a dummy long address, as the implementation of the MappedByteBuffer constructor (in my testcase this is a ReadOnlyDirectByteBuffer) requires a PlatformAddress.

      Attachments

        1. 6315-patch.txt
          6 kB
          Catherine Hope
        2. 6315.patch
          4 kB
          Catherine Hope

        Activity

          People

            odeakin Oliver Deakin
            chope Catherine Hope
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: