[
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: [email protected]
For additional commands, e-mail: [email protected]