Code review request: 7082769: FileInputStream/FileOutputStream/RandomAccessFile allow file descriptor be closed when still in use

Chris Hegarty chris.hegarty at
Fri Sep 9 10:26:38 UTC 2011


The changes look good, though I haven't gone through the test in much 

One question that is not directly related to your changes, but may be 

Shouldn't the close on FileChannel also check the value of the use count 
before closing the native fd? For example:

    raf = new RandomAccessFile("test1", "rw");
    fd = raf.getFD();
    fos = new FileOutputStream(fd);
    fis = new FileInputStream(fd);
    fos.close()   <<<<<<< will this fail ????

Yes the channel should be closed, but shouldn't the 
FileChannelImpl.close itself decrement the use count and not close the 
fd if it is still in use?


On 08/09/2011 18:11, Seán Coffey wrote:
> webrev :
> Bug fix where we ensure that the fd object is not disposed of until all
> streams are closed out.
> Testcase is a bulked up version of CR 6322678 (which wasn't committed at
> time of 6322678 fix). It includes create/close() calls for
> FileInputStream/FileOutputStream/RandomAccessFile which all reference
> the same file descriptor. Multi threaded access to the same file
> descriptor is also tested.
> Typo fix also as per also
> included.
> regards,
> Sean.

More information about the core-libs-dev mailing list