The problem is reproduced when some delay happens between calling eblob_write_prepare_disk() and eblob_commit_ram(), while defragmentation process is running and L2 cache enabled. These conditions causes inserting to L2 hash (cache) ram control with pointer to bctl which was already defragmented. After that, writing of a new key, which has same L2 hash leads to collision resolving by reading full 64 byte key from bctl (which points to the sorted blob with '-1' blob and index descriptors).
Issue: https://github.com/reverbrain/eblob/issues/118
The problem is reproduced when some delay happens between calling eblob_write_prepare_disk() and eblob_commit_ram(), while defragmentation process is running and L2 cache enabled. These conditions causes inserting to L2 hash (cache) ram control with pointer to bctl which was already defragmented. After that, writing of a new key, which has same L2 hash leads to collision resolving by reading full 64 byte key from bctl (which points to the sorted blob with '-1' blob and index descriptors).