Description:
When running falcon_bug_22165 I have seen the following assert several times when running against Falcon checked out from the mysql-6.0-falcon-team branch:
Error: assertion (page->pageType == PAGE_sections || page->pageType == 0) failed at line 198 in file Section.cpp
The call stack from the crash is:
[13] Error::assertionFailed(text = 0x158d510 "page->pageType == PAGE_sections || page->pageType == 0", fileName = 0x158d547 "Section.cpp", line = 198), line 78 in "Error.cpp"
[14] Section::getSectionPage(dbb = 0x1d16840, root = 4, sequence = 0, requestedLockType = Exclusive, transId = 268U), line 198 in "Section.cpp"
[15] Section::getSectionPage(this = 0x1d51d98, sequence = 0, lockType = Exclusive, transId = 268U), line 1416 in "Section.cpp"
[16] Section::insertStub(this = 0x1d51d98, transId = 268U), line 348 in "Section.cpp"
[17] Dbb::insertStub(this = 0x1d16840, section = 0x1d51d98, transaction = 0x25400b8), line 306 in "Dbb.cpp"
[18] Table::insert(this = 0x2547c70, transaction = 0x25400b8, stream = 0x2547158), line 3041 in "Table.cpp"
[19] StorageDatabase::insert(this = 0x1d112d8, connection = 0x1d51728, table = 0x2547c70, stream = 0x2547158), line 266 in "StorageDatabase.cpp"
[20] StorageTable::insert(this = 0x2541bb8), line 109 in "StorageTable.cpp"
[21] StorageInterface::write_row(this = 0x3d193d8, buff = 0x3d1a768 "ü"), line 1127 in "ha_falcon.cpp"
[22] handler::ha_write_row(this = 0x3d193d8, buf = 0x3d1a768 "ü"), line 5362 in "handler.cc"
[23] copy_data_between_tables(from = 0x3d13270, to = 0x3d17bc0, create = CLASS, ignore = false, order_num = 0, order = (nil), copied = 0xfffffd7ffd6e1788, deleted = 0xfffffd7ffd6e1780, keys_onoff = LEAVE_AS_IS, error_if_not_empty = false), line 7441 in "sql_table.cc"
[24] mysql_alter_table(thd = 0x3ccb240, new_db = 0x3ce36d8 "test", new_name = 0x3ce93c8 "t1", create_info = 0xfffffd7ffd6e3198, table_list = 0x3ce9410, alter_info = 0xfffffd7ffd6e30f8, order_num = 0, order = (nil), ignore = false), line 7042 in "sql_table.cc"
[25] mysql_execute_command(thd = 0x3ccb240), line 2761 in "sql_parse.cc"
[26] sp_instr_stmt::exec_core(this = 0x3ce9a90, thd = 0x3ccb240, nextp = 0xfffffd7ffd6e4688), line 2910 in "sp_head.cc"
[27] sp_lex_keeper::reset_lex_and_exec_core(this = 0x3ce9ad0, thd = 0x3ccb240, nextp = 0xfffffd7ffd6e4688, open_tables = false, instr = 0x3ce9a90), line 2734 in "sp_head.cc"
[28] sp_instr_stmt::execute(this = 0x3ce9a90, thd = 0x3ccb240, nextp = 0xfffffd7ffd6e4688), line 2847 in "sp_head.cc"
[29] sp_head::execute(this = 0x3ce3238, thd = 0x3ccb240), line 1241 in "sp_head.cc"
[30] sp_head::execute_procedure(this = 0x3ce3238, thd = 0x3ccb240, args = 0x3ccd6a0), line 1972 in "sp_head.cc"
[31] mysql_execute_command(thd = 0x3ccb240), line 4216 in "sql_parse.cc"
[32] mysql_parse(thd = 0x3ccb240, inBuf = 0x3cb2468 "call p1()", length = 9U, found_semicolon = 0xfffffd7ffd6e7be8), line 5719 in "sql_parse.cc"
[33] dispatch_command(command = COM_QUERY, thd = 0x3ccb240, packet = 0x3cbccb1 "call p1();", packet_length = 10U), line 1006 in "sql_parse.cc"
[34] do_command(thd = 0x3ccb240), line 689 in "sql_parse.cc"
[35] handle_one_connection(arg = 0x3ccb240), line 1156 in "sql_connect.cc"
[36] _thr_setup(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7fff10fd7b
[37] _lwp_start(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7fff10ffb0
Information about what the page object:
(dbx) print -r *page
*page = {
SectionPage::Page::pageType = 4
SectionPage::Page::checksum = 0
SectionPage::Page::pageNumber = 4
SectionPage::Page::pageUnused = 0
SectionPage::section = 4
SectionPage::sequence = 0
SectionPage::level = 103
SectionPage::flags = 0
SectionPage::pages = (5)
}
How to repeat:
Run falcon_bug_22165 repeatably (probably on a multi-CPU machine).
Suggested fix:
No idea.