List:Falcon Storage Engine« Previous MessageNext Message »
From:Olav Sandstaa Date:May 18 2009 11:29am
Subject:Review request for Bug#44292 falcon_bug_34351_C fails with assertion
(false) in file RecordLocatorPage.cpp
View as plain text  
Hi,

I have committed a patch that fixes Bug#44292 "falcon_bug_34351_C fails 
with assertion (false) in file RecordLocatorPage.cpp":

     http://lists.mysql.com/commits/74353

The inconsistency that eventually lead to the crash was introduced by 
inserting entries into the record index array at a position that was 
larger than the "maxLine" value and without updating the maxLine value 
to be larger than the inserted slot number.

The fix is fairly easy: in RecordLocatorPage::setIndexSlot() if/when we 
insert a new slot in the record index array and this slot position is 
larger than the current maxLine value, update the maxLine value to be 
larger ( +1) than the inserted slot position.

The only concern I have about this fix is whether is is correct that 
RecordLocatorPage::setIndexSlot() should be called with slot positions 
larger than the current maxLine value. By tracing I see that in most 
cases the slot position is smaller than the current maxLine value but 
then occationally a slot position is larger (by a fair amount) than the 
maxLine value. Anyone with knowledge about this part of the code that 
can answer this question?

Testing: without this patch I normally run into this crash after running 
falcon_bug_34351_C for a few hours. With the fix I have been running the 
test continually over the weekend (+48 hours) without running into any 
inconsistencies.

Olav


Thread
Review request for Bug#44292 falcon_bug_34351_C fails with assertion(false) in file RecordLocatorPage.cppOlav Sandstaa18 May