[ 
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

Reply via email to