Bug #39456 Falcon: assertion (false) failed at line 258 in file RecordLocatorPage.cpp
Submitted: 15 Sep 2008 18:01 Modified: 13 Dec 2008 7:02
Reporter: Alexey Stroganov Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Falcon storage engine Severity:S1 (Critical)
Version:6.0.7 OS:Any
Assigned to: Sergey Vojtovich CPU Architecture:Any
Tags: F_PAGE IO, pb2, pushbuild, test failure
Triage: Triaged: D1 (Critical)

[15 Sep 2008 18:01] Alexey Stroganov
Description:
Following assert happened during run of mysql-bench test:

[Falcon] Error: assertion (false) failed at line 258 in file RecordLocatorPage.cpp

bt:

(gdb) bt
#0  0x00002add8d7b74c5 in pthread_kill () from /lib64/libpthread.so.0
#1  0x0000000000644dbe in handle_segfault (sig=6) at mysqld.cc:2660
#2  <signal handler called>
#3  0x00002add8d7b9fed in raise () from /lib64/libpthread.so.0
#4  0x000000000087ef2f in Error::error (string=<value optimized out>) at Error.cpp:94
#5  0x000000000090b714 in RecordLocatorPage::corrupt (this=0x2aaaaca14000) at RecordLocatorPage.cpp:258
#6  0x000000000090b8e1 in RecordLocatorPage::insertSpaceSlot (this=0x2aaaaca14000, slot=0, availableSpace=6)
    at RecordLocatorPage.cpp:207
#7  0x00000000008cd208 in Section::storeRecord (this=0x2aaab4ef0d28, recordLocatorPage=0x2aaaaca14000,
    indexPageNumber=21015, index=<value optimized out>, stream=0x428033d0, transId=2517, earlyWrite=false)
    at Section.cpp:724
#8  0x00000000008ce32b in Section::updateRecord (this=0x2aaab4ef0d28, recordNumber=<value optimized out>,
    stream=0x428033d0, transId=2517, earlyWrite=false) at Section.cpp:586
#9  0x0000000000874265 in Dbb::updateRecord (this=0x2aaaab4b8060, sectionId=<value optimized out>, recordId=99764,
    stream=0x428033d0, transId=2517, earlyWrite=false) at Dbb.cpp:350
#10 0x00000000008c6bc3 in SRLUpdateRecords::commit (this=0x42803e78) at SRLUpdateRecords.cpp:369
#11 0x00000000008db561 in SerialLogTransaction::commit (this=0x2aaaab681cd8) at SerialLogTransaction.cpp:92
#12 0x00000000008fe348 in Gopher::gopherThread (this=0x2aaaab4aeb10) at Gopher.cpp:71
#13 0x000000000084bb83 in Thread::thread (this=0x2aaaab4ba010) at Thread.cpp:167
#14 0x000000000084bd49 in Thread::thread (parameter=0x5b63) at Thread.cpp:146
#15 0x00002add8d7b3193 in start_thread () from /lib64/libpthread.so.0
#16 0x00002add8e13645d in clone () from /lib64/libc.so.6

How to repeat:
Working on test-case. For now assert looks like sporadic one. After several runs can't reproduce issue.
[28 Oct 2008 14:55] John Embretsen
This assertion fails consistently in the falcon_pagesize_32K test of Pushbuild 2, in the mysql-6.0-falcon-team branch (Linux and Windows).

I have reproduced it by running the following command on a linux host, from a copy of the (internal) mysql-test-extra-6.0 bzr repository (directory mysql-test/gentest):

perl runall.pl \
--basedir=/export/home/tmp/je159969/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=32K \
--gendata=conf/falcon_pagesize32K.zz \
--queries=100000

See also Bug#33068 (Closed) (MySQL/Falcon crashes due to corruption of RecordLocatorPage).
[25 Nov 2008 17:55] Kevin Lewis
Sergey,  In order to distribute the BETA bugs better, I thought you might want to take a look at this.  It seems to be limited to 32k pages.  Maybe you can figure out what causes the page corruption.
[3 Dec 2008 15:32] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

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

2922 Sergey Vojtovich	2008-12-03
      BUG#39456 - Falcon: assertion (false) failed at line 258 in file
                  RecordLocatorPage.cpp
      
      Falcon in-memory data page structures may get corrupt and
      cause assertion failures in certain cases.
      
      Fixed two integer overruns.
[4 Dec 2008 13:24] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

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

2922 Sergey Vojtovich	2008-12-04
      BUG#39456 - Falcon: assertion (false) failed at line 258 in file
                  RecordLocatorPage.cpp
      
      Falcon in-memory data page structures may get corrupt and
      cause assertion failures in certain cases.
      
      Fixed two integer overruns.
[11 Dec 2008 14:20] Bugs System
Pushed into 6.0.9-alpha  (revid:svoj@mysql.com-20081204122204-2qd3h26aefbxdjey) (version source revid:hky@sun.com-20081205164847-vbocpvlyf6fbxkkj) (pib:5)
[13 Dec 2008 7:02] MC Brown
No documentation needed.