Bug #34617 Falcon assertion in StorageHandler::addTable, line 622
Submitted: 16 Feb 2008 10:18 Modified: 16 Apr 2008 10:03
Reporter: Philip Stoev Email Updates:
Status: Duplicate Impact on me:
None 
Category:MySQL Server: Falcon storage engine Severity:S3 (Non-critical)
Version:6.0.4 OS:Any
Assigned to: Assigned Account CPU Architecture:Any
Triage: D2 (Serious) / R3 (Medium) / E3 (Medium)

[16 Feb 2008 10:18] Philip Stoev
Description:
Concurrent ALTER TABLE statements of various types cause assertion StorageHandler.cpp line 622 with the following backtrace (the actual query that crashes may be different each time):

#0  0x00110402 in __kernel_vsyscall ()
#1  0x00bdc617 in pthread_kill () from /lib/libpthread.so.0
#2  0x083f46fb in write_core (sig=4) at stacktrace.c:240
#3  0x0828dc05 in handle_segfault (sig=4) at mysqld.cc:2313
#4  <signal handler called>
#5  0x00110402 in __kernel_vsyscall ()
#6  0x00bdf891 in raise () from /lib/libpthread.so.0
#7  0x084ceaf2 in Error::debugBreak () at Error.cpp:92
#8  0x084ceb49 in Error::error (string=0x8842334 "assertion failed at line %d in file %s\n") at Error.cpp:69
#9  0x084cebb8 in Error::assertionFailed (fileName=0x8838129 "StorageHandler.cpp", line=622) at Error.cpp:76
#10 0x0848dce7 in StorageHandler::addTable (this=0xb731e028, table=0xb71654f8) at StorageHandler.cpp:622
#11 0x084928e9 in StorageTableShare::renameTable (this=0xb71654f8, storageConnection=0xb7304100, newName=0xa99d71db "./test/#sql2-7b71-100")
    at StorageTableShare.cpp:232
#12 0x0848634f in StorageInterface::rename_table (this=0xb081850, from=0xa99d73db "./test/inter2", to=0xa99d71db "./test/#sql2-7b71-100")
    at ha_falcon.cpp:1461
#13 0x0839e5d3 in mysql_rename_table (base=0xa984030, old_db=0xb080900 "test", old_name=0xb0806e8 "inter2", new_db=0xb080900 "test",
    new_name=0xa99d84cc "#sql2-7b71-100", flags=2) at sql_table.cc:3706
#14 0x083aa318 in mysql_alter_table (thd=0xb0745c8, new_db=0xb080900 "test", new_name=0xb0806e8 "inter2", create_info=0xa99d8890, table_list=0xb080710,
    alter_info=0xa99d8d50, order_num=0, order=0x0, ignore=false) at sql_table.cc:6802
#15 0x0829f442 in mysql_execute_command (thd=0xb0745c8) at sql_parse.cc:2393
#16 0x0829ff5c in mysql_parse (thd=0xb0745c8, inBuf=0xb080640 "ALTER TABLE inter2 PARTITION BY KEY(t2_autoinc)", length=47, found_semicolon=0xa99d92e4)
    at sql_parse.cc:5410
#17 0x082a0ed9 in dispatch_command (command=COM_QUERY, thd=0xb0745c8, packet=0xb031aa1 "ALTER TABLE inter2 PARTITION BY KEY(t2_autoinc)", packet_length=47)
    at sql_parse.cc:921
#18 0x082a1f73 in do_command (thd=0xb0745c8) at sql_parse.cc:697
#19 0x08291b1a in handle_one_connection (arg=0xb0745c8) at sql_connect.cc:1146
#20 0x00bd750b in start_thread () from /lib/libpthread.so.0
#21 0x00b18b2e in clone () from /lib/libc.so.6

How to repeat:
Simplified test case will follow shortly.
[16 Feb 2008 11:21] Philip Stoev
No concurrency is required to trigger the assertion, just those three queries:

mysql> create table t1 (f1 integer) engine = Falcon;
Query OK, 0 rows affected (1.03 sec)
mysql> alter table t1 tablespace foo;
ERROR 1005 (HY000): Can't create table 'test.#sql-40a6_1' (errno: 156)
mysql> alter table t1 tablespace foo;
ERROR 2013 (HY000): Lost connection to MySQL server during query
[16 Feb 2008 11:49] Sveta Smirnova
Thank you for the report.

Verified as described.
[20 Feb 2008 19:43] Hakan Küçükyılmaz
Still happens with latest binary provided by build team and with self compiled binary:

[20:41] root@test>alter table t1 tablespace foo;
ERROR 1005 (HY000): Can't create table 'test.#sql-1fd1_1' (errno: 156)

[20:41] root@test>alter table t1 tablespace foo;
ERROR 2013 (HY000): Lost connection to MySQL server during query

[20:41] root@test>080220 20:41:59 mysqld_safe Number of processes running now: 0
080220 20:41:59 mysqld_safe mysqld restarted
[16 Apr 2008 10:03] Sergey Vojtovich
Will be fixed by patch for BUG#33723.
[18 Jun 2008 14:14] 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/48095

2712 John H. Embretsen	2008-06-18
      Refactored test case for 
       * Bug#34617 - Falcon assertion in StorageHandler::addTable, line 622
      
       - Now using falcon_bug.template
       - Extracted tests for bug variants into separate test cases.
      
      Added test cases for variants of the same bug: 
       * Bug#33397 - ALTER TABLE into non-existing Falcon tablespace causes vague error.
       * Bug#33723 - ALTER TABLE into non-existing Falcon tablespace blocks further ALTERs
       * Bug#34048 - Falcon: after error with tablespace, I can't create table
      
      All of these bugs were most likely fixed by the fixes for 
      Bug#33397 and Bug#33723.
[19 Jun 2008 10:22] 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/48155

2712 John H. Embretsen	2008-06-19
      Refactored test case for
        * Bug#34617 - Falcon assertion in StorageHandler::addTable, line 622
      
        - Now using falcon_bug.template
        - Extracted tests for bug variants into separate test cases.
      
      Added test cases for variants of the same bug:
        * Bug#33397 - ALTER TABLE into non-existing Falcon tablespace causes vague error.
        * Bug#33723 - ALTER TABLE into non-existing Falcon tablespace blocks further ALTERs
        * Bug#34048 - Falcon: after error with tablespace, I can't create table
      
      All of these bugs were most likely fixed by the fixes for Bug#33397 and Bug#33723.
[19 Jun 2008 14:02] John Embretsen
Test refactoring patch pushed to mysql-6.0-falcon, see http://lists.mysql.com/commits/48170