8194734 : Handle to jimage file inherited into child processes (win)

Alexander Miloslavskiy alexandr.miloslavskiy at gmail.com
Sun Apr 8 17:18:34 UTC 2018


 > The only surprise is that it doesn't close as it shouldn't need the
 > file descriptor after it mmapped.

Indeed, both on Windows and Unix file descriptor can be closed after 
mapping.

On the other hand, ImageFileReader is not prepared for that.

See 
http://hg.openjdk.java.net/jdk/jdk/file/8bdf2b5f472d/src/java.base/share/native/libjimage/imageFile.cpp

ImageFileReader::get_resource() uses ImageFileReader::read_at() if 
resource is not compressed.

Furthermore, ImageFileReader::get_resource() uses 
ImageFileReader::read_at() if not entire jimage is mapped. This happens 
if architecture is not 64-bit.

Even if these code paths are changed, I still think that closing file 
descriptor can be unexpected and will provoke future bugs.


More information about the core-libs-dev mailing list