Bug #40373 Assertion (false) fails in IndexRootPage.cpp::addIndexEntry during recovery
Submitted: 28 Oct 2008 15:49 Modified: 13 Mar 2009 16:16
Reporter: John Embretsen Email Updates:
Status: Duplicate Impact on me:
None 
Category:MySQL Server: Falcon storage engine Severity:S1 (Critical)
Version:6.0-bzr OS:Any
Assigned to: Assigned Account CPU Architecture:Any
Tags: F_INDEX, page-size-2K, pb2, pushbuild, split-page, test failure

[28 Oct 2008 15:49] John Embretsen
Description:
During a forced recovery (after sending KILL signal to the server) during the falcon_pagesize_2k test in Pushbuild 2, a Falcon assertion fails like this:

(...)
#9  0x08535d89 in Error::assertionFailed (text=0x89ab1f8 "false", 
    fileName=0x89aafdf "IndexRootPage.cpp", line=217) at Error.cpp:78
#10 0x085ad632 in IndexRootPage::addIndexEntry (dbb=0xb70f75b8, indexId=46, 
    key=0xb24ba254, recordNumber=1541, transId=0) at IndexRootPage.cpp:217
#11 0x085adb85 in IndexRootPage::indexMerge (dbb=0xb70f75b8, indexId=46, 
    logRecord=0xb24bd154, transId=0) at IndexRootPage.cpp:1009
#12 0x085ebd35 in SRLUpdateIndex::execute (this=0xb24bd154)
    at SRLUpdateIndex.cpp:188
#13 0x085ebddf in SRLUpdateIndex::commit (this=0xb24bd154)
    at SRLUpdateIndex.cpp:166
#14 0x08604f6d in SerialLogTransaction::commit (this=0xb71f23e0)
    at SerialLogTransaction.cpp:92
#15 0x08605063 in SerialLogTransaction::doAction (this=0xb71f23e0)
    at SerialLogTransaction.cpp:158
#16 0x0862ed82 in Gopher::gopherThread (this=0xb70c85a8) at Gopher.cpp:71
#17 0x0862eec1 in Gopher::gopherThread (arg=0xb70c85a8) at Gopher.cpp:37
#18 0x0855e4a5 in Thread::thread (this=0xb70ceba0) at Thread.cpp:167
#19 0x0855e6b5 in Thread::thread (parameter=0xb70ceba0) at Thread.cpp:146
#20 0x0089a45b in start_thread () from /lib/libpthread.so.0
#21 0x007f1c4e in clone () from /lib/libc.so.6

---> Note that Falcon page size is set to 2 KB in this test (--falcon-page-size=2K).

How to repeat:
Branch or checkout the mysql-test-extra-6.0 bzr branch, cd to mysql-test/gentest and run something like this, where basedir points to the mysql binary you want to test.

perl runall.pl \
--basedir=/home/mysql/bzr-repos/mysql-6.0-falcon-team \
--reporters=Deadlock,ErrorLog,Backtrace,Recovery,WinPackage \
--mysqld=--loose-falcon-lock-wait-timeout=1 \
--mysqld=--loose-falcon-debug-mask=2 \
--mysqld=--log-output=none \
--mysqld=--log=off \
--mysqld=--skip-safemalloc \
--duration=1200 \
--engine=falcon \
--grammar=conf/falcon_pagesize.yy \
--mysqld=--falcon-page-size=2K \
--gendata=conf/falcon_pagesize2K.zz \
--queries=100000
[29 Oct 2008 13:35] Kevin Lewis
Previously modified the wrong field when I was trying to assign the bug to Vlad.
[18 Feb 2009 12:32] Kevin Lewis
See also Bug#37056.  A quick fix may be to increase the number of attempts.  But a deterministic solution is needed for splitting pages.
[18 Feb 2009 12:43] Vladislav Vaintroub
Looks like duplicate of Bug#37056
[13 Mar 2009 16:16] Kevin Lewis
This assert cannot occur now that the fix for Bug#37056 is pushed.