Bug #40852 Falcon assert due to wrong page type in Section.cpp
Submitted: 19 Nov 2008 13:18 Modified: 25 Nov 2008 22:06
Reporter: Olav Sandstå Email Updates:
Status: Duplicate Impact on me:
None 
Category:MySQL Server: Falcon storage engine Severity:S1 (Critical)
Version:6.0.8-alpha OS:Any
Assigned to: Assigned Account CPU Architecture:Any
Tags: F_PAGE IO

[19 Nov 2008 13:18] Olav Sandstå
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.
[25 Nov 2008 21:32] Olav Sandstå
This is likely a duplicate of bug#35255.
[25 Nov 2008 22:06] Hakan Küçükyılmaz
Duplicate of Bug#35255.