[ 
https://issues.apache.org/jira/browse/CASSANDRA-21714?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Yifan Cai updated CASSANDRA-21714:
----------------------------------
    Test and Documentation Plan: unit
                         Status: Patch Available  (was: Open)

> Fix Use-After-Free in Zstd Dictionary Compressor When Cache Eviction Races 
> In-Flight Compression
> ------------------------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-21714
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-21714
>             Project: Apache Cassandra
>          Issue Type: Bug
>          Components: Local/SSTable
>            Reporter: Yifan Cai
>            Assignee: Yifan Cai
>            Priority: Normal
>
> ZstdDictionaryCompressor's compress/uncompress calls relied on a 
> compressor-lifetime dictionary reference rather than holding one for the 
> duration of each native call. When Caffeine evicts the compressor from its 
> cache, the eviction listener releases that reference synchronously, and if it 
> was the dictionary's last reference, the dictionary's native compression 
> tables are closed while a borrowed context is still in use, causing a 
> use-after-free. This change has each compress/uncompress call take its own 
> reference for the duration of the native call, so eviction cannot tidy the 
> dictionary out from under an in-flight call. Includes a concurrency test that 
> races cache eviction against compress/uncompress calls to reproduce the 
> failure without the fix.
> Scott raised the issue at https://github.com/cscotta/cassandra/issues/18



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to