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.cpp | Olav Sandstaa | 18 May |