Serializing cache can cause Segfault in 1.1 -------------------------------------------
Key: CASSANDRA-4111 URL: https://issues.apache.org/jira/browse/CASSANDRA-4111 Project: Cassandra Issue Type: Bug Components: Core Affects Versions: 1.1.0 Reporter: Vijay Assignee: Vijay Fix For: 1.1.0 Rare but this can happen per sure, looks like this issue is after CASSANDRA-3862 hence affectes only 1.1 FreeableMemory old = map.get(key); if (old == null) return false; // see if the old value matches the one we want to replace FreeableMemory mem = serialize(value); if (mem == null) return false; // out of memory. never mind. V oldValue = deserialize(old); boolean success = oldValue.equals(oldToReplace) && map.replace(key, old, mem); if (success) old.unreference(); else mem.unreference(); return success; in the above code block we deserialize(old) without taking reference to the old memory, this can case seg faults when the old is reclaimed (free is called) Fix is to get the reference just for deserialization V oldValue; // reference old guy before de-serializing old.reference(); try { oldValue = deserialize(old); } finally { old.unreference(); } -- 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