Back Midas Rome Roody Rootana
  Midas DAQ System  Not logged in ELOG logo
Message ID: 3286     Entry time: 29 Oct 2026
Author: Konstantin Olchanski 
Topic: Bug Fix 
Subject: odb free_data() refactored 
I was debugging a core dump from a crash inside ODB free_data() and after 
refactoring free_data(), I may have fixed a bug in merging of free data blocks.

the case where freed data closed a gap between two free data blocks maybe had a 
mistake, it should be fixed now. "free_block_1 | freed data | free_block_2" 
becomes "free_block".

commit 9b54a1264b252b4e88c259c82afdf7e16b5a89eb

P.S.

1) to remember, odbedit now has a check and repair for the ODB free list, and I 
just added one more test against ODB free list corruption (infinite loop if a 
free block points at itself).

2) to test ODB edge cases, run "./bin/torture_odb --all". I now added an "odb 
full" test which exercises most ODB free list edge cases. 

K.O.
ELOG V3.1.6-083448f7