Bug #26484 Falcon: recovery failure after more than 80,000 inserts
Submitted: 19 Feb 2007 23:47 Modified: 1 Jul 2007 12:26
Reporter: Peter Gulutzan Email Updates:
Status: Can't repeat Impact on me:
None 
Category:MySQL Server: Falcon storage engine Severity:S1 (Critical)
Version:5.2.4-falcon-alpha-debug OS:Linux (SUSE 10.0 / 64-bit)
Assigned to: Jim Starkey CPU Architecture:Any

[19 Feb 2007 23:47] Peter Gulutzan
Description:
I create a table with one unique numeric column.
I create a procedure which inserts rows.
After inserting more than 80,000 rows, I 'kill -9'.
I restart mysqld and 'use' the database with the table.
Crash.

I have done this several times, with row counts
of 20,000 (no problem), 40,000 (no problem),
80,000 (crash), 120,000 (crash), 200,000 (crash),
500,000 (crash).

How to repeat:
Create a table; create and run a procedure; as follows:

delimiter //
create table t20 (s1 decimal(10,1) unique) engine=falcon//
create procedure p20 ()
begin
  declare v int default 1;
  declare v2 decimal(10,1) default 0.1;
  while v < 1000000 do
    if v mod 1000 = 0 then select v,v2; end if;
    insert into t20 values (v2),(-v2);
    select count(*) into @a from t20 where s1 = v2 or s1 = -v2;
    if @a <> 2 then select 'error',@a,v,v2; set v = 1000000; end if;
    set v = v + 1;
    set v2 = v2 + 0.1;
    end while;
  end//
call p20()//

Wait till the procedure displays a value greater than
40,000 (which indicates it has inserted more than 80,000
rows, since it inserts two at a time).

Find out the process id with "ps -A | grep mysqld",
and say "kill -9 (process id)".

Restart mysqld.

Restart client. Say "use X", where X = name of the
database containing table t20.

If crash doesn't occur immediately, say
create database y;
[20 Feb 2007 1:56] Hakan Küçükyılmaz
Verified as described.

| v     | v2     |
+-------+--------+
| 49000 | 4900.0 |
+-------+--------+
1 row in set (2 min 49.21 sec)

+-------+--------+
| v     | v2     |
+-------+--------+
| 50000 | 5000.0 |
+-------+--------+
1 row in set (2 min 52.54 sec)

ERROR 2013 (HY000): Lost connection to MySQL server during query
mysql>
mysql> Bye
hakan@lu0010:~> mysql -uroot -pmysql50
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.2.4-falcon-alpha-debug Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> use test;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

--> Assertion is hit

Backtrace is:
Serial Log possible gap: 50441 - 33037

Program received signal SIGILL, Illegal instruction.
[Switching to Thread 1076373856 (LWP 30248)]
0x0000002a95bf0479 in raise () from /lib64/tls/libc.so.6
(gdb) bt
#0  0x0000002a95bf0479 in raise () from /lib64/tls/libc.so.6
#1  0x0000000000863d7e in Error::debugBreak () at Error.cpp:93
#2  0x0000000000863d05 in Error::error (string=0xbae5f0 "assertion failed at line %d in file %s\n")
    at Error.cpp:70
#3  0x0000000000863d63 in Error::assertionFailed (fileName=0xbbf7c4 "BDB.cpp", line=72)
    at Error.cpp:77
#4  0x00000000008e44f8 in Bdb::mark (this=0x2a962afa78, transId=0) at BDB.cpp:72
#5  0x00000000008793df in IndexRootPage::indexMerge (dbb=0x2a96452ce8, indexId=29,
    logRecord=0x4027ff50, transId=0) at IndexRootPage.cpp:914
#6  0x00000000008ce970 in SRLUpdateIndex::execute (this=0x4027ff50) at SRLUpdateIndex.cpp:155
#7  0x00000000008ce7f9 in SRLUpdateIndex::redo (this=0x4027ff50) at SRLUpdateIndex.cpp:127
#8  0x00000000008b57f9 in SerialLog::recover (this=0x2a962b5c30) at SerialLog.cpp:354
#9  0x00000000008536a4 in Database::openDatabase (this=0x2a962516e8,
    filename=0x40280280 "/data/mysql/test.fts") at Database.cpp:603
#10 0x000000000084d2b2 in Connection::getDatabase (this=0x2a96452aa0, dbName=0x2a964527d4 "test",
    dbFileName=0x40280280 "/data/mysql/test.fts", threads=0x2a96452830) at Connection.cpp:1643
#11 0x000000000084b1de in Connection::openDatabase (this=0x2a96452aa0, dbName=0x2a964527d4 "test",
    filename=0x2a96452804 "./test.fts", account=0xba4037 "mysql", password=0xba4037 "mysql",
    address=0x0, parent=0x2a96452830) at Connection.cpp:923
#12 0x000000000081cf5e in StorageDatabase::getOpenConnection (this=0x2a964523f0)
    at StorageDatabase.cpp:144
#13 0x000000000081bdaa in StorageConnection::connect (this=0x2a964522c8) at StorageConnection.cpp:112
#14 0x000000000081f77b in StorageHandler::getStorageConnection (this=0x2a96251048,
    path=0xf9a1b0 "./test", mySqlThread=0x0, createFlag=OpenDatabase) at StorageHandler.cpp:148
#15 0x0000000000815287 in NfsStorageTable::open (this=0xfea768, name=0xfd79e8 "./test/t20", mode=2,
    test_if_locked=2) at ha_falcon.cpp:354
#16 0x000000000075a18b in handler::ha_open (this=0xfea768, table_arg=0xfd8b08,
    name=0xfd79e8 "./test/t20", mode=2, test_if_locked=2) at handler.cc:1532
#17 0x00000000006b0937 in open_table_from_share (thd=0xfc54a8, share=0xfd7678, alias=0xfec820 "t20",
    db_stat=39, prgflag=44, ha_open_flags=0, outparam=0xfd8b08, is_create_table=false)
    at table.cc:1536
#18 0x00000000006a3c17 in open_unireg_entry (thd=0xfc54a8, entry=0xfd8b08, table_list=0x40281bc0,
    alias=0xfec820 "t20", cache_key=0x40281300 "test", cache_key_length=9, mem_root=0x40281430,
    flags=0) at sql_base.cc:2675
#19 0x00000000006a23b4 in open_table (thd=0xfc54a8, table_list=0x40281bc0, mem_root=0x40281430,
    refresh=0x40281467, flags=0) at sql_base.cc:2058
#20 0x00000000006a432e in open_tables (thd=0xfc54a8, start=0x402814f0, counter=0x402814e8, flags=0)
    at sql_base.cc:2922
#21 0x00000000006a4c0e in open_normal_and_derived_tables (thd=0xfc54a8, tables=0x40281bc0, flags=0)
    at sql_base.cc:3254
#22 0x0000000000788307 in mysqld_list_fields (thd=0xfc54a8, table_list=0x40281bc0, wild=0xfec830 "")
    at sql_show.cc:783
#23 0x0000000000671363 in dispatch_command (command=COM_FIELD_LIST, thd=0xfc54a8, packet=0xfe477d "",
    packet_length=5) at sql_parse.cc:1958
#24 0x0000000000670528 in do_command (thd=0xfc54a8) at sql_parse.cc:1626
#25 0x000000000066f658 in handle_one_connection (arg=0xfc54a8) at sql_parse.cc:1232
#26 0x0000002a95ef2aff in start_thread () from /lib64/tls/libpthread.so.0
#27 0x0000002a95c7c4b3 in clone () from /lib64/tls/libc.so.6
#28 0x0000000000000000 in ?? ()

It get's a shared lock instead of an exclusive lock.

(gdb) f 4
#4  0x00000000008e44f8 in Bdb::mark (this=0x2a962afa78, transId=0) at BDB.cpp:72
72              ASSERT (lockType == Exclusive);
(gdb) p lockType
$1 = Shared
[23 Feb 2007 15:18] Jim Starkey
Problem was corruption induced by incorrect index recovery.  The specific problem was that left-most index page were propagating their initial index values (like other buckets) during recovery.
[26 Feb 2007 10:03] Hakan Küçükyılmaz
Still failing. Now with different backtrace:

+-------+--------+
| v     | v2     |
+-------+--------+
| 54000 | 5400.0 |
+-------+--------+
1 row in set (4 min 3.52 sec)

+-------+--------+
| v     | v2     |
+-------+--------+
| 55000 | 5500.0 |
+-------+--------+
1 row in set (4 min 6.40 sec)

ERROR 2013 (HY000): Lost connection to MySQL server during query
5.2.4-falcon-alpha-debug

Backtrace after restarting mysqld:
Serial Log possible gap: 55706 - 40230

Program received signal SIGILL, Illegal instruction.
[Switching to Thread 1098242992 (LWP 8097)]
0xffffe410 in __kernel_vsyscall ()
(gdb) bt
#0  0xffffe410 in __kernel_vsyscall ()
#1  0x40182541 in raise () from /lib/tls/libc.so.6
#2  0x084580a6 in Error::debugBreak () at Error.cpp:93
#3  0x08458103 in Error::error (string=0x87651b8 "assertion failed at line %d in file %s\n") at Error.cpp:70
#4  0x08458193 in Error::assertionFailed (fileName=0x87669c1 "IndexRootPage.cpp", line=305) at Error.cpp:77
#5  0x08469c5b in IndexRootPage::findInsertionLeaf (dbb=0x404fab3c, indexId=29, indexKey=0x4175a094,
    recordNumber=102117, transId=0) at IndexRootPage.cpp:305
#6  0x0846b967 in IndexRootPage::indexMerge (dbb=0x404fab3c, indexId=29, logRecord=0x4175b014, transId=0)
    at IndexRootPage.cpp:863
#7  0x084bdb56 in SRLUpdateIndex::execute (this=0x4175b014) at SRLUpdateIndex.cpp:155
#8  0x084bdc39 in SRLUpdateIndex::redo (this=0x4175b014) at SRLUpdateIndex.cpp:127
#9  0x084a4dac in SerialLog::recover (this=0x41795614) at SerialLog.cpp:354
#10 0x0844ac46 in Database::openDatabase (this=0x4175e028, filename=0x4175b2a0 "/data/mysql-sap/test.fts")
    at Database.cpp:603
#11 0x0843f7bd in Connection::getDatabase (this=0x404fa9dc, dbName=0x404fa7dc "test",
    dbFileName=0x4175b2a0 "/data/mysql-sap/test.fts", threads=0x404fa820) at Connection.cpp:1643
#12 0x0843f9e9 in Connection::openDatabase (this=0x404fa9dc, dbName=0x404fa7dc "test",
    filename=0x404fa800 "./test.fts", account=0x875d570 "mysql", password=0x875d570 "mysql", address=0x0,
    parent=0x404fa820) at Connection.cpp:923
#13 0x08413c49 in StorageDatabase::getOpenConnection (this=0x404fa5d4) at StorageDatabase.cpp:144
#14 0x08410a25 in StorageConnection::connect (this=0x404fa514) at StorageConnection.cpp:112
#15 0x0841525a in StorageHandler::getStorageConnection (this=0x404fa028, path=0x8951808 "./test", mySqlThread=0x0,
    createFlag=OpenDatabase) at StorageHandler.cpp:148
#16 0x0840daef in NfsStorageTable::open (this=0x89831c8, name=0x894a7f0 "./test/t20", mode=2, test_if_locked=2)
    at ha_falcon.cpp:352
#17 0x08356db4 in handler::ha_open (this=0x89831c8, table_arg=0x8982720, name=0x894a7f0 "./test/t20", mode=2,
    test_if_locked=2) at handler.cc:1532
#18 0x082b43e6 in open_table_from_share (thd=0x896b470, share=0x894a590, alias=0x8997600 "t20", db_stat=39,
    prgflag=44, ha_open_flags=0, outparam=0x8982720, is_create_table=false) at table.cc:1536
#19 0x082ae443 in open_unireg_entry (thd=0x896b470, entry=0x8982720, table_list=0x8997608, alias=0x8997600 "t20",
    cache_key=0x4175bf6e "test", cache_key_length=9, mem_root=0x4175c080, flags=0) at sql_base.cc:2675
#20 0x082b00e2 in open_table (thd=0x896b470, table_list=0x8997608, mem_root=0x4175c080, refresh=0x4175c0b7, flags=0)
    at sql_base.cc:2059
#21 0x082b090c in open_tables (thd=0x896b470, start=0x4175c114, counter=0x4175c104, flags=0) at sql_base.cc:2922
#22 0x082b0d48 in open_and_lock_tables (thd=0x896b470, tables=0x8997608) at sql_base.cc:3213
#23 0x082769e4 in execute_sqlcom_select (thd=0x896b470, all_tables=0x8997608) at sql_parse.cc:5312
#24 0x0827c5f3 in mysql_execute_command (thd=0x896b470) at sql_parse.cc:2699
#25 0x0828428c in mysql_parse (thd=0x896b470, inBuf=0x8997460 "select count(*) from t20", length=24)
    at sql_parse.cc:6162
#26 0x08284c97 in dispatch_command (command=COM_QUERY, thd=0x896b470, packet=0x898f401 "select count(*) from t20",
    packet_length=25) at sql_parse.cc:1857
#27 0x08285cfe in do_command (thd=0x896b470) at sql_parse.cc:1626
#28 0x082861af in handle_one_connection (arg=0x896b470) at sql_parse.cc:1232
#29 0x40284297 in start_thread () from /lib/tls/libpthread.so.0
#30 0x4021937e in clone () from /lib/tls/libc.so.6
#31 0x4175dbb0 in ?? ()

(gdb) f 5
#5  0x08469c5b in IndexRootPage::findInsertionLeaf (dbb=0x404fab3c, indexId=29, indexKey=0x4175a094,
    recordNumber=102117, transId=0) at IndexRootPage.cpp:305
305                     ASSERT(page->level > 0 || bdb->lockType == Exclusive);
(gdb) p page->level
$1 = 0 '\0'
(gdb) p bdb->lockType
$2 = Shared
(gdb)
[7 Mar 2007 0:14] Hakan Küçükyılmaz
With latest change set we are still hitting the same assertion:

Serial Log possible gap: 55717 - 46045

Program received signal SIGILL, Illegal instruction.
[Switching to Thread 1098242992 (LWP 22351)]
0xffffe410 in __kernel_vsyscall ()
(gdb) bt
#0  0xffffe410 in __kernel_vsyscall ()
#1  0x40182541 in raise () from /lib/tls/libc.so.6
#2  0x08458772 in Error::debugBreak () at Error.cpp:93
#3  0x084587cf in Error::error (string=0x8765538 "assertion failed at line %d in file %s\n") at Error.cpp:70
#4  0x0845885f in Error::assertionFailed (fileName=0x8766d31 "IndexRootPage.cpp", line=305) at Error.cpp:77
#5  0x0846a1b1 in IndexRootPage::findInsertionLeaf (dbb=0x404fab3c, indexId=29, indexKey=0x4175a094,
    recordNumber=106315, transId=0) at IndexRootPage.cpp:305
#6  0x0846bec1 in IndexRootPage::indexMerge (dbb=0x404fab3c, indexId=29, logRecord=0x4175b014, transId=0)
    at IndexRootPage.cpp:863
#7  0x084bdf5a in SRLUpdateIndex::execute (this=0x4175b014) at SRLUpdateIndex.cpp:155
#8  0x084be03d in SRLUpdateIndex::redo (this=0x4175b014) at SRLUpdateIndex.cpp:127
#9  0x084a51b0 in SerialLog::recover (this=0x41795614) at SerialLog.cpp:354
#10 0x0844b2ec in Database::openDatabase (this=0x4175e028, filename=0x4175b2a0 "/data/mysql-sap/test.fts")
    at Database.cpp:604
#11 0x0843fda9 in Connection::getDatabase (this=0x404fa9dc, dbName=0x404fa7dc "test",
    dbFileName=0x4175b2a0 "/data/mysql-sap/test.fts", threads=0x404fa820) at Connection.cpp:1643
#12 0x0843ffd5 in Connection::openDatabase (this=0x404fa9dc, dbName=0x404fa7dc "test",
    filename=0x404fa800 "./test.fts", account=0x875d8d4 "mysql", password=0x875d8d4 "mysql", address=0x0,
    parent=0x404fa820) at Connection.cpp:923
#13 0x08413f15 in StorageDatabase::getOpenConnection (this=0x404fa5d4) at StorageDatabase.cpp:146
#14 0x08410cc9 in StorageConnection::connect (this=0x404fa514) at StorageConnection.cpp:113
#15 0x08415526 in StorageHandler::getStorageConnection (this=0x404fa028, path=0x8950860 "./test", mySqlThread=0x0,
    createFlag=OpenDatabase) at StorageHandler.cpp:148
#16 0x0840dd1b in NfsStorageTable::open (this=0x8982220, name=0x8949848 "./test/t20", mode=2, test_if_locked=2)
    at ha_falcon.cpp:352
[6 Apr 2007 15:31] Hakan Küçükyılmaz
Still fails with assertion:

#0  0x00002b923d2a12ac in raise () from /lib/libpthread.so.0
#1  0x000000000089e260 in Error::debugBreak () at Error.cpp:93
#2  0x000000000089e379 in Error::error (string=0xc14b48 "assertion failed at line %d in file %s\n")
    at Error.cpp:70
#3  0x000000000089e40f in Error::assertionFailed (fileName=0xc166f0 "IndexRootPage.cpp", line=764)
    at Error.cpp:77
#4  0x00000000008b2aed in IndexRootPage::redoIndexPage (dbb=0x2aaaab02f068, pageNumber=1563,
    parentPage=103, level=0, priorPage=112, nextPage=1555, length=2031, data=0x2aaaad9be626 "")
    at IndexRootPage.cpp:764
#5  0x000000000090e7ef in SRLIndexPage::pass2 (this=0x4087ed38) at SRLIndexPage.cpp:76
#6  0x00000000008f7c6b in SerialLog::recover (this=0x2aaaaaf976d8) at SerialLog.cpp:300
#7  0x000000000088ea4f in Database::openDatabase (this=0x2aaaaaf33190,
    filename=0x4087f2b0 "/data/mysql-sap/test.fts") at Database.cpp:606
#8  0x00000000008819ee in Connection::getDatabase (this=0x2aaaab02ee20, dbName=0x2aaaab02dea4 "TEST",
    dbFileName=0x4087f2b0 "/data/mysql-sap/test.fts", threads=0x2aaaab00d0f8) at Connection.cpp:1643
#9  0x0000000000882f93 in Connection::openDatabase (this=0x2aaaab02ee20, dbName=0x2aaaab02dea4 "TEST",
    filename=0x2aaaab02e7ec "./test.fts", account=0xc0b087 "mysql", password=0xc0b087 "mysql",
    address=0x0, parent=0x2aaaab00d0f8) at Connection.cpp:923
#10 0x00000000008517bf in StorageDatabase::getOpenConnection (this=0x2aaaab02e728)
    at StorageDatabase.cpp:149
#11 0x000000000084e8a3 in StorageConnection::connect (this=0x2aaaab02ed10) at StorageConnection.cpp:130
#12 0x000000000085360f in StorageHandler::getStorageConnection (this=0x2aaaaadfe048,
    tableShare=0x2aaaaafff1c8, mySqlThread=0x1012908, createFlag=OpenDatabase) at StorageHandler.cpp:676

Regards, Hakan
[13 Apr 2007 19:32] Hakan Küçükyılmaz
Still failing:

Program received signal SIGILL, Illegal instruction.
[Switching to Thread 1082665312 (LWP 7809)]
0x00002afced5ac2ac in raise () from /lib/libpthread.so.0
(gdb) bt
#0  0x00002afced5ac2ac in raise () from /lib/libpthread.so.0
#1  0x00000000007c23f2 in Error::debugBreak () at Error.cpp:93
#2  0x00000000007c24ed in Error::error (string=<value optimized out>) at Error.cpp:70
#3  0x00000000007c254c in Error::assertionFailed (fileName=0x4 <Address 0x4 out of bounds>, line=7809)
    at Error.cpp:77
#4  0x00000000007d0c75 in IndexRootPage::redoIndexPage (dbb=0x2aaaab0338d0, pageNumber=1800, parentPage=103,
    level=<value optimized out>, priorPage=112, nextPage=1790, length=2031, data=0x2aaaada9e626 "")
    at IndexRootPage.cpp:766
#5  0x000000000080aed5 in SRLIndexPage::pass2 (this=0x4087f088) at SRLIndexPage.cpp:76
#6  0x00000000007fc2a2 in SerialLog::recover (this=0x2aaaaafa3920) at SerialLog.cpp:303
#7  0x00000000007b646b in Database::openDatabase (this=0x2aaaaaf372d8,
    filename=0x4087f3f0 "/data/mysql-sap/test.fts") at Database.cpp:607
#8  0x00000000007af09d in Connection::getDatabase (this=0x2aaaab033648, dbName=0x2aaaab032784 "TEST",
    dbFileName=0x4087f3f0 "/data/mysql-sap/test.fts", threads=0x2aaaab00a190) at Connection.cpp:1644
#9  0x00000000007afd61 in Connection::openDatabase (this=0x2aaaab033648, dbName=0x2aaaab032784 "TEST",
    filename=<value optimized out>, account=0x9d599c "mysql", password=0x9d599c "mysql", address=0x0,
    parent=0x2aaaab00a190) at Connection.cpp:924
#10 0x000000000079098b in StorageDatabase::getOpenConnection (this=0x2aaaab032698) at StorageDatabase.cpp:149
#11 0x000000000078f42f in StorageConnection::connect (this=0x2aaaab033538) at StorageConnection.cpp:131
#12 0x0000000000792d62 in StorageHandler::getStorageConnection (this=0x2aaaaae00048,
    tableShare=0x2aaaab0011c8, mySqlThread=0xe4d028, mySqlThdId=1, createFlag=OpenDatabase)
    at StorageHandler.cpp:662
#13 0x000000000078c6d1 in NfsStorageTable::open (this=0xe79e58, name=0xe4c108 "./test/t20",
    mode=<value optimized out>, test_if_locked=<value optimized out>) at ha_falcon.cpp:387
#14 0x00000000006e60f9 in handler::ha_open (this=0xe79e58, table_arg=0xe4b238, name=0xe4c108 "./test/t20",
    mode=2, test_if_locked=<value optimized out>) at handler.cc:1527
#15 0x00000000006594d4 in open_table_from_share (thd=0xe4d028, share=0xe4bd98, alias=<value optimized out>,
    db_stat=39, prgflag=<value optimized out>, ha_open_flags=0, outparam=0xe4b238, is_create_table=false)
    at table.cc:1577
#16 0x0000000000650918 in open_unireg_entry (thd=0xe4d028, entry=0xe4b238, table_list=0x40881de0,
---Type <return> to continue, or q <return> to quit---q
alias=0xe7bfQuit
) at sql_base.cc:2899
#17 0x00000000006521e8 in open_table (thd=0xe4d028, table_list=0x40881de0, mem_root=0x40881630,
    refresh=0x4088168f, flags=0) at sql_base.cc:2284
#18 0x0000000000652be2 in open_tables (thd=0xe4d028, start=0x408816e0, counter=0x40881704, flags=0)
    at sql_base.cc:3180
#19 0x0000000000652f03 in open_normal_and_derived_tables (thd=0xe4d028, tables=0x40881de0, flags=0)
    at sql_base.cc:3522
#20 0x00000000007111ae in mysqld_list_fields (thd=0xe4d028, table_list=0x40881de0, wild=0xe7bf20 "")
    at sql_show.cc:783
#21 0x000000000061d81d in dispatch_command (command=<value optimized out>, thd=0xe4d028,
    packet=0xe73e69 "t20", packet_length=5) at sql_parse.cc:994
#22 0x000000000061dafc in do_command (thd=0xe4d028) at sql_parse.cc:662
#23 0x000000000060f77e in handle_one_connection (arg=<value optimized out>) at sql_connect.cc:1089
#24 0x00002afced5a5f1a in start_thread () from /lib/libpthread.so.0
#25 0x00002afcedc5a602 in clone () from /lib/libc.so.6
#26 0x0000000000000000 in ?? ()
(gdb) f 4
#4  0x00000000007d0c75 in IndexRootPage::redoIndexPage (dbb=0x2aaaab0338d0, pageNumber=1800, parentPage=103,
    level=<value optimized out>, priorPage=112, nextPage=1790, length=2031, data=0x2aaaada9e626 "")
    at IndexRootPage.cpp:766
766                             ASSERT(parent->level == indexPage->level + 1);
(gdb) p parent->level
$1 = 2 '\002'
(gdb) p indexPage->level
$2 = 0 '\0'
(gdb)
[14 Jun 2007 15:48] Jim Starkey
No longer reproducable.  Don't know when or how it got fixed, but it no longer seems to be a problem.
[15 Jun 2007 9:24] Hakan Küçükyılmaz
Still failing as described on Linux 64-bit.

#4  0x00000000007a6935 in ~SyncObject (this=0x2b75950af030) at SyncObject.cpp:119
119             ASSERT(lockState == 0);
(gdb) p lockState
$1 = -1

Backtrace is

[New LWP 23562]
Exception: assertion failed at line 790 in file IndexRootPage.cpp

Bugcheck: assertion failed at line 119 in file SyncObject.cpp

Memory

Module  Line    In Use  Space in Use    Deleted Space deleted
SerialLog.cpp   785     19960   3353280 0       0
RecoveryObjects.cpp     136     856     61632   1       72
Dbb.cpp 345     0       0       2       576
SparseArray.h   92      0       0       1       432
Log.cpp 150     1       64      0       0
Thread.cpp      235     1       320     0       0
StorageHandler.cpp      529     1       168     0       0
StorageTableShare.cpp   60      1       280     0       0
StorageTableShare.cpp   64      1       160     0       0
JString.cpp     476     15      808     28      3056
Index.cpp       92      0       0       9       448
StorageHandler.cpp      360     1       368     0       0
StorageDatabase.cpp     95      1       360     0       0
StorageDatabase.cpp     113     1       136     0       0
StorageDatabase.cpp     115     1       608     0       0
Database.cpp    414     0       0       1       704
Dbb.cpp 79      0       0       1       224
Database.cpp    419     0       0       1       360
Dbb.cpp 166     1       552     0       0
Cache.cpp       69      1       40      0       0
Database.cpp    465     0       0       1       896
Database.cpp    467     0       0       1       608
Schedule.cpp    67      2       112     3       168
ScheduleElement.cpp     53      11      616     3       168
SerialLog.cpp   66      0       0       1       144
SerialLog.cpp   67      0       0       1       144
Database.cpp    471     0       0       1       64
Stack.cpp       114     0       0       21      1176
Database.cpp    1048    0       0       1       448
Database.cpp    1147    0       0       1       448
Syntax.cpp      345     0       0       30      7296
Index.cpp       96      0       0       9       448
Table.cpp       1880    0       0       7       648
Table.cpp       795     0       0       7       504
Database.cpp    993     0       0       7       5768
Table.cpp       790     0       0       7       1344
Table.cpp       166     0       0       53      7208
Table.cpp       177     0       0       9       2592
Table.cpp       406     0       0       7       560
Format.cpp      53      0       0       7       1072
Threads.cpp     105     0       0       2       640
Role.cpp        121     7       448     0       0
Syntax.cpp      149     0       0       2       80
TableSpaceManager.cpp   193     0       0       2       208
Database.cpp    475     0       0       1       216
Database.cpp    476     0       0       1       216
Database.cpp    477     0       0       1       152
Database.cpp    478     0       0       1       152
Database.cpp    479     0       0       1       984
Database.cpp    481     1       496     0       0
Database.cpp    483     1       856     0       0
Value.cpp       196     0       0       3       168
TableSpace.cpp  42      0       0       2       1408
SerialLog.cpp   693     0       0       19      3192
SerialLog.cpp   301     1       856     0       0
SerialLog.cpp   302     0       0       1       856
SerialLog.cpp   303     0       0       1       856
Cache.cpp       88      1       4198432 0       0
StorageHandler.cpp      86      1       2880    0       0
Connection.cpp  1646    1       4664    0       0
Cache.cpp       74      1       253992  0       0
Database.cpp    452     1       4208    0       0
SymbolManager.cpp       54      1       5040    0       0
Database.cpp    466     1       1696    0       0
RoleModel.cpp   109     1       1032    0       0
RoleModel.cpp   110     1       1032    0       0
Database.cpp    480     1       1080    0       0
Total           20875   7896216 258     46704
Number small hunks:     2
Number big hunks:       3
Unique sizes: 4
Free segments:  4
Free space:     1821288
Records

Module  Line    In Use  Space in Use    Deleted Space deleted
Total           0       0       0       0
Number small hunks:     0
Number big hunks:       0
Unique sizes: 0
Free segments:  0
Free space:     0

Program received signal SIGILL, Illegal instruction.
[Switching to LWP 23562]
0x00002b75939e1fed in ?? ()
(gdb) bt
#0  0x00002b75939e1fed in ?? ()
#1  0x00000000007d25c2 in Error::debugBreak () at Error.cpp:92
#2  0x00000000007d26bd in Error::error (string=<value optimized out>) at Error.cpp:69
#3  0x00000000007d271c in Error::assertionFailed (fileName=0x4 <Address 0x4 out of bounds>, line=23562)
    at Error.cpp:76
#4  0x00000000007a6935 in ~SyncObject (this=0x2b75950af030) at SyncObject.cpp:119
#5  0x000000000082c843 in ~Bdb (this=0x2b75950aefc8) at BDB.cpp:65
#6  0x000000000082e670 in ~Cache (this=0x2b759524a198) at Cache.cpp:117
#7  0x00000000007c81bb in ~Database (this=0x2b7595048b98) at Database.cpp:572
#8  0x00000000007bed75 in Connection::getDatabase (this=0x2b75952499b0, dbName=0x2b75952496ac "falcon_master",
    dbFileName=0x4007e1d0 "/data/mysql-sap/falcon_master.fts", threads=0x2b7595249718) at Connection.cpp:1656
#9  0x00000000007bfa11 in Connection::openDatabase (this=0x2b75952499b0,
    dbName=0x2b75952496ac "falcon_master", filename=<value optimized out>, account=0x9f0efc "mysql",
    password=0x9f0efc "mysql", address=0x0, parent=0x2b7595249718) at Connection.cpp:928
#10 0x000000000079ef83 in StorageDatabase::getOpenConnection (this=0x2b7595249538) at StorageDatabase.cpp:127
#11 0x00000000007a0ac7 in StorageHandler::initialize (this=0x2b7595048048) at StorageHandler.cpp:911
#12 0x00000000007a1a62 in StorageHandler::getStorageConnection (this=0x2b7595048048,
    tableShare=0x2b75952491c8, mySqlThread=0xf49618, mySqlThdId=1, createFlag=OpenDatabase, tableSpaceMode=0)
    at StorageHandler.cpp:576
#13 0x000000000079a4ca in StorageInterface::open (this=0xfa16f8, name=0xf94770 "./test/t20",
    mode=<value optimized out>, test_if_locked=<value optimized out>) at ha_falcon.cpp:405
#14 0x00000000006ef29a in handler::ha_open (this=0xfa16f8, table_arg=0xf93b28, name=0xf94770 "./test/t20",
    mode=2, test_if_locked=<value optimized out>) at handler.cc:1555
#15 0x000000000065fca5 in open_table_from_share (thd=0xf49618, share=0xf943e8, alias=<value optimized out>,
    db_stat=39, prgflag=<value optimized out>, ha_open_flags=0, outparam=0xf93b28, is_create_table=false)
    at table.cc:1625
#16 0x0000000000656d68 in open_unireg_entry (thd=0xf49618, entry=0xf93b28, table_list=0x40080d20,
    alias=0xfa33b0 "t20", cache_key=0x40080330 "test", cache_key_length=9, mem_root=0x40080560, flags=0)
[26 Jun 2007 18:22] Jim Starkey
I've tried it on both Windows and Linux without a recovery failure.

If somebody can reproduce it, please re-open the bug with more detail.
[26 Jun 2007 21:05] Hakan Küçükyılmaz
Still hits assertion:

+-------+--------+
| v     | v2     |
+-------+--------+
| 58000 | 5800.0 |
+-------+--------+
1 row in set (1 min 29.33 sec)

+-------+--------+
| v     | v2     |
+-------+--------+
| 59000 | 5900.0 |
+-------+--------+
1 row in set (1 min 32.06 sec)

killed mysqld

Exception: assertion failed at line 790 in file IndexRootPage.cpp

Bugcheck: assertion failed at line 119 in file SyncObject.cpp

Program received signal SIGILL, Illegal instruction.
[Switching to LWP 20462]
0x00002b645c77efed in ?? ()

(gdb) f 4
#4  0x00000000007a6f45 in ~SyncObject (this=0x2b645de4c318) at SyncObject.cpp:119
119             ASSERT(lockState == 0);
(gdb) p lockState
$1 = -1
$1 = -1
(gdb) bt
#0  0x00002b645c77efed in ?? ()
#1  0x00000000007d3af2 in Error::debugBreak () at Error.cpp:92
#2  0x00000000007d3be8 in Error::error (string=<value optimized out>) at Error.cpp:69
#3  0x00000000007d3c48 in Error::assertionFailed (fileName=0x4 <Address 0x4 out of bounds>, line=20462)
    at Error.cpp:76
#4  0x00000000007a6f45 in ~SyncObject (this=0x2b645de4c318) at SyncObject.cpp:119
#5  0x000000000082e34f in ~Bdb (this=0x2b645de4c2b0) at BDB.cpp:65
#6  0x0000000000830180 in ~Cache (this=0x2b645dfe7198) at Cache.cpp:117
#7  0x00000000007c96eb in ~Database (this=0x2b645dde5b98) at Database.cpp:572
#8  0x00000000007c02b5 in Connection::getDatabase (this=0x2b645dfe69b0, dbName=0x2b645dfe66ac "falcon_master",
    dbFileName=0x4007e1d0 "/data/mysql-sap/falcon_master.fts", threads=0x2b645dfe6718) at Connection.cpp:1656
#9  0x00000000007c0f51 in Connection::openDatabase (this=0x2b645dfe69b0, dbName=0x2b645dfe66ac "falcon_master",
    filename=<value optimized out>, account=0x9f29fc "mysql", password=0x9f29fc "mysql", address=0x0,
    parent=0x2b645dfe6718) at Connection.cpp:928
#10 0x000000000079f7d3 in StorageDatabase::getOpenConnection (this=0x2b645dfe6538) at StorageDatabase.cpp:127
#11 0x00000000007a0ff7 in StorageHandler::initialize (this=0x2b645dde5048) at StorageHandler.cpp:913
#12 0x00000000007a1f82 in StorageHandler::getStorageConnection (this=0x2b645dde5048, tableShare=0x2b645dfe61c8,
    mySqlThread=0xf4b618, mySqlThdId=1, createFlag=OpenDatabase, tableSpaceMode=0) at StorageHandler.cpp:576
#13 0x000000000079abba in StorageInterface::open (this=0xfa3788, name=0xf96800 "./test/t20",
    mode=<value optimized out>, test_if_locked=<value optimized out>) at ha_falcon.cpp:402
#14 0x00000000006ef81a in handler::ha_open (this=0xfa3788, table_arg=0xf95bb8, name=0xf96800 "./test/t20",
    mode=2, test_if_locked=<value optimized out>) at handler.cc:1555
#15 0x0000000000660225 in open_table_from_share (thd=0xf4b618, share=0xf96478, alias=<value optimized out>,
    db_stat=39, prgflag=<value optimized out>, ha_open_flags=0, outparam=0xf95bb8, is_create_table=false)
    at table.cc:1625
#16 0x00000000006572e8 in open_unireg_entry (thd=0xf4b618, entry=0xf95bb8, table_list=0x40080d20,
    alias=0xfa5440 "t20", cache_key=0x40080330 "test", cache_key_length=9, mem_root=0x40080560, flags=0)
    at sql_base.cc:3301
[27 Jun 2007 18:08] Jim Starkey
I can't reproduce it.  I'm not arguing that it doesn't happen, just that
I can't make it happen.  I've tried it six times; typical result below.

Before restarting the server, please zip the falcon*.* files and the
schema directory in the data directory before restarting?  That will
at least give me something to work on.

+--------+---------+
| v      | v2      |
+--------+---------+
| 101000 | 10100.0 |
+--------+---------+
1 row in set (2 min 24.65 sec)

+--------+---------+
| v      | v2      |
+--------+---------+
| 102000 | 10200.0 |
+--------+---------+
1 row in set (2 min 26.95 sec)

+--------+---------+
| v      | v2      |
+--------+---------+
| 103000 | 10300.0 |
+--------+---------+
1 row in set (2 min 29.14 sec)

+--------+---------+
| v      | v2      |
+--------+---------+
| 104000 | 10400.0 |
+--------+---------+
1 row in set (2 min 31.92 sec)

ERROR 2013 (HY000): Lost connection to MySQL server during query
mysql> select count(*) from t20;
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id:    1
Current database: test

+----------+
| count(*) |
+----------+
|   209258 |
+----------+
1 row in set (2.92 sec)
[1 Jul 2007 12:26] Hakan Küçükyılmaz
Can't repeat anymore. I tried it six times and killed mysqld at

1) 50k
2) 50k
3) 40k
4) 110k
5) 170k
6) 410k

Restarting and recovery worked without a crash.

Best regards,

Hakan