[ https://issues.apache.org/jira/browse/LUCENE-3588?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Uwe Schindler resolved LUCENE-3588. ----------------------------------- Resolution: Fixed Lucene Fields: New,Patch Available (was: New) Committed trunk revision: 1205430 Committed 3.x revision: 1205434 > Try harder to prevent SIGSEGV on cloned MMapIndexInputs > ------------------------------------------------------- > > Key: LUCENE-3588 > URL: https://issues.apache.org/jira/browse/LUCENE-3588 > Project: Lucene - Java > Issue Type: Improvement > Components: core/store > Affects Versions: 3.4, 3.5 > Reporter: Uwe Schindler > Assignee: Uwe Schindler > Fix For: 3.6, 4.0 > > Attachments: LUCENE-3588-simpler.patch, LUCENE-3588-simpler.patch, > LUCENE-3588-simpler.patch, LUCENE-3588.patch, LUCENE-3588.patch, > LUCENE-3588.patch > > > We are unmapping mmapped byte buffers which is disallowed by the JDK, because > it has the risk of SIGSEGV when you access the mapped byte buffer after > unmapping. > We currently prevent this for the main IndexInput by setting its buffer to > null, so we NPE if somebody tries to access the underlying buffer. I recently > fixed also the stupid curBuf (LUCENE-3200) by setting to null. > The big problem are cloned IndexInputs which are generally not closed. Those > still contain references to the unmapped ByteBuffer, which lead to SIGSEGV > easily. The patch from Mike in LUCENE-3439 prevents most of this in Lucene > 3.5, but its still not 100% safe (as it uses non-volatiles). > This patch will fix the remaining issues by also setting the buffers of > clones to null when the original is closed. The trick is to record weak > references of all clones created and close them together with the original. > This uses a ConcurrentHashMap<WeakReference<MMapIndexInput>,?> as store with > the logic borrowed from WeakHashMap to cleanup the GCed references (using > ReferenceQueue). > If we respin 3.5, we should maybe also get this in. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org