Bug #73919 InnoDB: Failing assertion: error == DB_SUCCESS in file handler0alter.cc line 495
Submitted: 15 Sep 2014 10:14 Modified: 14 Nov 2016 1:31
Reporter: Roel Van de Paar Email Updates:
Status: Verified Impact on me:
None 
Category:MySQL Server: InnoDB storage engine Severity:S3 (Non-critical)
Version:5.6.20, 5.6.22, 5.7.6 OS:Any
Assigned to: CPU Architecture:Any
Tags: debug builds

[15 Sep 2014 10:14] Roel Van de Paar
Description:
2014-09-16 06:10:44 9436 [Note] /sda/mysql-5.6.20-linux-glibc2.5-x86_64/bin/mysqld: ready for connections.
Version: '5.6.20-debug'  socket: '/sda/mysql-5.6.20-linux-glibc2.5-x86_64/socket.sock'  port: 10920  MySQL Community Server - Debug (GPL)
2014-09-16 06:10:46 9436 [ERROR] InnoDB: Cannot rename table 'test/t1' to 'test/#sql-ib21' since the dictionary cache already contains 'test/#sql-ib21'.
2014-09-16 06:10:46 7fe6c0fa9700  InnoDB: Assertion failure in thread 140629056853760 in file handler0alter.cc line 4954
InnoDB: Failing assertion: error == DB_SUCCESS

How to repeat:
DROP DATABASE test;CREATE DATABASE test;USE test;
CREATE TABLE t1(s2 CHAR(1))ENGINE=InnoDB;
SET SESSION debug="+d,dict_table_rename_in_cache_failure";
alter table t1 key_block_size=0;

Crashes optimized 5.6.20
[15 Sep 2014 13:11] MySQL Verification Team
Hello Roel,

Thank you for the bug report and test case.
5.6.20/22 and 5.7.6 debug builds seems to be affected, this is reproducible with debug builds only.

Thanks,
Umesh
[15 Sep 2014 13:12] MySQL Verification Team
// 5.6.22

mysql> show variables like '%version%';
+-------------------------+---------------------------------------------------------------+
| Variable_name           | Value                                                         |
+-------------------------+---------------------------------------------------------------+
| innodb_version          | 5.6.22                                                        |
| protocol_version        | 10                                                            |
| slave_type_conversions  |                                                               |
| version                 | 5.6.22-enterprise-commercial-advanced-debug                   |
| version_comment         | MySQL Enterprise Server - Advanced Edition Debug (Commercial) |
| version_compile_machine | x86_64                                                        |
| version_compile_os      | Linux                                                         |
+-------------------------+---------------------------------------------------------------+
7 rows in set (0.01 sec)

mysql> DROP DATABASE test;CREATE DATABASE test;USE test;
Query OK, 0 rows affected (0.00 sec)

Query OK, 1 row affected (0.00 sec)

Database changed
mysql> CREATE TABLE t1(s2 CHAR(1))ENGINE=InnoDB;
Query OK, 0 rows affected (0.06 sec)

mysql> SET SESSION debug="+d,dict_table_rename_in_cache_failure";
Query OK, 0 rows affected (0.00 sec)

mysql> alter table t1 key_block_size=0;
ERROR 2013 (HY000): Lost connection to MySQL server during query

//
2014-09-17 09:07:12 7ffc68762700  InnoDB: Assertion failure in thread 140722061059840 in file handler0alter.cc line 4978
InnoDB: Failing assertion: error == DB_SUCCESS
InnoDB: We intentionally generate a memory trap.
InnoDB: Submit a detailed bug report to http://bugs.mysql.com.
InnoDB: If you get repeated assertion failures or crashes, even
InnoDB: immediately after the mysqld startup, there may be
InnoDB: corruption in the InnoDB tablespace. Please refer to
InnoDB: http://dev.mysql.com/doc/refman/5.6/en/forcing-innodb-recovery.html
InnoDB: about forcing recovery.
03:37:12 UTC - mysqld got signal 6 ;

(gdb) bt
#0  0x0000003b3ba0c8ac in pthread_kill () from /lib64/libpthread.so.0
#1  0x0000000000afe982 in my_write_core (sig=6) at /export/home/pb2/build/sb_0-13146752-1409933888.09/mysqlcom-pro-5.6.22/mysys/stacktrace.c:422
#2  0x000000000077e6cc in handle_fatal_signal (sig=6) at /export/home/pb2/build/sb_0-13146752-1409933888.09/mysqlcom-pro-5.6.22/sql/signal_handler.cc:230
#3  <signal handler called>
#4  0x0000003b3b632925 in raise () from /lib64/libc.so.6
#5  0x0000003b3b634105 in abort () from /lib64/libc.so.6
#6  0x0000000000bbe97f in commit_cache_rebuild (ctx=0x7ffc38005c20) at /export/home/pb2/build/sb_0-13146752-1409933888.09/mysqlcom-pro-5.6.22/storage/innobase/handler/handler0alter.cc:4978
#7  0x0000000000bbc724 in ha_innobase::commit_inplace_alter_table (this=0x7ffc38022f30, altered_table=0x7ffc3801da30, ha_alter_info=0x7ffc6875eac0, commit=true)
    at /export/home/pb2/build/sb_0-13146752-1409933888.09/mysqlcom-pro-5.6.22/storage/innobase/handler/handler0alter.cc:5655
#8  0x0000000000693490 in handler::ha_commit_inplace_alter_table (this=0x7ffc38022f30, altered_table=0x7ffc3801da30, ha_alter_info=0x7ffc6875eac0, commit=true)
    at /export/home/pb2/build/sb_0-13146752-1409933888.09/mysqlcom-pro-5.6.22/sql/handler.cc:4386
#9  0x000000000089e510 in mysql_inplace_alter_table (thd=0x9579c70, table_list=0x7ffc380050c0, table=0x7ffc38022640, altered_table=0x7ffc3801da30, ha_alter_info=0x7ffc6875eac0,
    inplace_supported=HA_ALTER_INPLACE_NO_LOCK_AFTER_PREPARE, target_mdl_request=0x7ffc6875f420, alter_ctx=0x7ffc6875e010)
    at /export/home/pb2/build/sb_0-13146752-1409933888.09/mysqlcom-pro-5.6.22/sql/sql_table.cc:6601
#10 0x00000000008a28f6 in mysql_alter_table (thd=0x9579c70, new_db=0x7ffc38005620 "test", new_name=0x0, create_info=0x7ffc6875fe90, table_list=0x7ffc380050c0, alter_info=0x7ffc6875ff70,
    order_num=0, order=0x0, ignore=false) at /export/home/pb2/build/sb_0-13146752-1409933888.09/mysqlcom-pro-5.6.22/sql/sql_table.cc:8395
#11 0x00000000009e99d6 in Sql_cmd_alter_table::execute (this=0x7ffc38005630, thd=0x9579c70) at /export/home/pb2/build/sb_0-13146752-1409933888.09/mysqlcom-pro-5.6.22/sql/sql_alter.cc:313
#12 0x0000000000834385 in mysql_execute_command (thd=0x9579c70) at /export/home/pb2/build/sb_0-13146752-1409933888.09/mysqlcom-pro-5.6.22/sql/sql_parse.cc:4945
#13 0x00000000008375d1 in mysql_parse (thd=0x9579c70, rawbuf=0x7ffc38004fd0 "alter table t1 key_block_size=0", length=31, parser_state=0x7ffc68761680)
    at /export/home/pb2/build/sb_0-13146752-1409933888.09/mysqlcom-pro-5.6.22/sql/sql_parse.cc:6245
#14 0x000000000082a3a2 in dispatch_command (command=COM_QUERY, thd=0x9579c70, packet=0x96aa941 "alter table t1 key_block_size=0", packet_length=31)
    at /export/home/pb2/build/sb_0-13146752-1409933888.09/mysqlcom-pro-5.6.22/sql/sql_parse.cc:1332
#15 0x0000000000829407 in do_command (thd=0x9579c70) at /export/home/pb2/build/sb_0-13146752-1409933888.09/mysqlcom-pro-5.6.22/sql/sql_parse.cc:1034
#16 0x00000000007f0887 in do_handle_one_connection (thd_arg=0x9579c70) at /export/home/pb2/build/sb_0-13146752-1409933888.09/mysqlcom-pro-5.6.22/sql/sql_connect.cc:982
#17 0x00000000007f0358 in handle_one_connection (arg=0x9579c70) at /export/home/pb2/build/sb_0-13146752-1409933888.09/mysqlcom-pro-5.6.22/sql/sql_connect.cc:898
#18 0x0000000000e5c19d in pfs_spawn_thread (arg=0x959e8c0) at /export/home/pb2/build/sb_0-13146752-1409933888.09/mysqlcom-pro-5.6.22/storage/perfschema/pfs.cc:1860
#19 0x0000003b3ba079d1 in start_thread () from /lib64/libpthread.so.0
#20 0x0000003b3b6e8b5d in clone () from /lib64/libc.so.6
[15 Sep 2014 13:12] MySQL Verification Team
// 5.7.6

mysql> show variables like '%version%';
+-------------------------+---------------------------------------------------------------+
| Variable_name           | Value                                                         |
+-------------------------+---------------------------------------------------------------+
| innodb_version          | 5.7.6                                                         |
| protocol_version        | 10                                                            |
| slave_type_conversions  |                                                               |
| version                 | 5.7.6-m16-enterprise-commercial-advanced-debug                |
| version_comment         | MySQL Enterprise Server - Advanced Edition Debug (Commercial) |
| version_compile_machine | x86_64                                                        |
| version_compile_os      | Linux                                                         |
+-------------------------+---------------------------------------------------------------+
7 rows in set (0.00 sec)

mysql> DROP DATABASE test;CREATE DATABASE test;USE test;
Query OK, 1 row affected (0.06 sec)

Query OK, 1 row affected (0.00 sec)

Database changed
mysql> CREATE TABLE t1(s2 CHAR(1))ENGINE=InnoDB;
Query OK, 0 rows affected (0.05 sec)

mysql> SET SESSION debug="+d,dict_table_rename_in_cache_failure";
Query OK, 0 rows affected (0.00 sec)

mysql> alter table t1 key_block_size=0;

//

2014-09-17 09:17:27 0x7fca9c93d700  InnoDB: Assertion failure in thread 140508187055872 in file handler0alter.cc line 5647
InnoDB: Failing assertion: error == DB_SUCCESS
InnoDB: We intentionally generate a memory trap.
InnoDB: Submit a detailed bug report to http://bugs.mysql.com.
InnoDB: If you get repeated assertion failures or crashes, even
InnoDB: immediately after the mysqld startup, there may be
InnoDB: corruption in the InnoDB tablespace. Please refer to
InnoDB: http://dev.mysql.com/doc/refman/5.7/en/forcing-innodb-recovery.html
InnoDB: about forcing recovery.
03:47:27 UTC - mysqld got signal 6 ;

(gdb) bt
#0  0x0000003b3ba0c8ac in pthread_kill () from /lib64/libpthread.so.0
#1  0x0000000000e794c5 in my_write_core (sig=6) at /pb2/build/sb_0-13146106-1409929295.44/mysqlcom-pro-5.7.6-m16/mysys/stacktrace.c:247
#2  0x000000000086cb4e in handle_fatal_signal (sig=6) at /pb2/build/sb_0-13146106-1409929295.44/mysqlcom-pro-5.7.6-m16/sql/signal_handler.cc:219
#3  <signal handler called>
#4  0x0000003b3b632925 in raise () from /lib64/libc.so.6
#5  0x0000003b3b634105 in abort () from /lib64/libc.so.6
#6  0x00000000010663db in ut_dbg_assertion_failed (expr=0x15830a7 "error == DB_SUCCESS",
    file=0x1581be0 "/pb2/build/sb_0-13146106-1409929295.44/mysqlcom-pro-5.7.6-m16/storage/innobase/handler/handler0alter.cc", line=5647)
    at /pb2/build/sb_0-13146106-1409929295.44/mysqlcom-pro-5.7.6-m16/storage/innobase/ut/ut0dbg.cc:68
#7  0x0000000000ecf5b4 in commit_cache_rebuild (ctx=0x7fca68006858) at /pb2/build/sb_0-13146106-1409929295.44/mysqlcom-pro-5.7.6-m16/storage/innobase/handler/handler0alter.cc:5647
#8  0x0000000000ecd02f in ha_innobase::commit_inplace_alter_table (this=0x7fca6801aac0, altered_table=0x7fca68049b70, ha_alter_info=0x7fca9c939850, commit=true)
    at /pb2/build/sb_0-13146106-1409929295.44/mysqlcom-pro-5.7.6-m16/storage/innobase/handler/handler0alter.cc:6412
#9  0x00000000008d5be6 in handler::ha_commit_inplace_alter_table (this=0x7fca6801aac0, altered_table=0x7fca68049b70, ha_alter_info=0x7fca9c939850, commit=true)
    at /pb2/build/sb_0-13146106-1409929295.44/mysqlcom-pro-5.7.6-m16/sql/handler.cc:4475
#10 0x0000000000c1ede2 in mysql_inplace_alter_table (thd=0x7fca68000d30, table_list=0x7fca68005c60, table=0x7fca6801a120, altered_table=0x7fca68049b70, ha_alter_info=0x7fca9c939850,
    inplace_supported=HA_ALTER_INPLACE_NO_LOCK_AFTER_PREPARE, target_mdl_request=0x7fca9c93a1d0, alter_ctx=0x7fca9c938db0)
    at /pb2/build/sb_0-13146106-1409929295.44/mysqlcom-pro-5.7.6-m16/sql/sql_table.cc:6780
#11 0x0000000000c23387 in mysql_alter_table (thd=0x7fca68000d30, new_db=0x7fca680061d8 "test", new_name=0x0, create_info=0x7fca9c93ac60, table_list=0x7fca68005c60, alter_info=0x7fca9c93ad40)
    at /pb2/build/sb_0-13146106-1409929295.44/mysqlcom-pro-5.7.6-m16/sql/sql_table.cc:8603
#12 0x0000000000d6854f in Sql_cmd_alter_table::execute (this=0x7fca680061e8, thd=0x7fca68000d30) at /pb2/build/sb_0-13146106-1409929295.44/mysqlcom-pro-5.7.6-m16/sql/sql_alter.cc:315
#13 0x0000000000ba8698 in mysql_execute_command (thd=0x7fca68000d30) at /pb2/build/sb_0-13146106-1409929295.44/mysqlcom-pro-5.7.6-m16/sql/sql_parse.cc:4815
#14 0x0000000000baa012 in mysql_parse (thd=0x7fca68000d30, parser_state=0x7fca9c93c660) at /pb2/build/sb_0-13146106-1409929295.44/mysqlcom-pro-5.7.6-m16/sql/sql_parse.cc:5427
#15 0x0000000000b9dec7 in dispatch_command (command=COM_QUERY, thd=0x7fca68000d30, packet=0x7fca680098b1 "alter table t1 key_block_size=0", packet_length=31)
    at /pb2/build/sb_0-13146106-1409929295.44/mysqlcom-pro-5.7.6-m16/sql/sql_parse.cc:1250
#16 0x0000000000b9cb7b in do_command (thd=0x7fca68000d30) at /pb2/build/sb_0-13146106-1409929295.44/mysqlcom-pro-5.7.6-m16/sql/sql_parse.cc:834
#17 0x0000000000caa2d8 in handle_connection (arg=0xdbc0810) at /pb2/build/sb_0-13146106-1409929295.44/mysqlcom-pro-5.7.6-m16/sql/conn_handler/connection_handler_per_thread.cc:298
#18 0x0000000001241f24 in pfs_spawn_thread (arg=0xdc8a4a0) at /pb2/build/sb_0-13146106-1409929295.44/mysqlcom-pro-5.7.6-m16/storage/perfschema/pfs.cc:2137
#19 0x0000003b3ba079d1 in start_thread () from /lib64/libpthread.so.0
#20 0x0000003b3b6e8b5d in clone () from /lib64/libc.so.6
[25 Sep 2014 21:06] Roel Van de Paar
S3.
[6 Oct 2014 13:42] Todd Farmer
Removing security designation as only debug builds are affected.
[14 Nov 2016 1:31] Roel Van de Paar
Apologies, correcting testcase from previous comment;

DROP DATABASE test;CREATE DATABASE test;USE test;
SET SESSION debug="+d,dict_table_rename_in_cache_failure";
CREATE TABLE t1(a VARCHAR(1)) ROW_FORMAT=REDUNDANT ENGINE=InnoDB;
ALTER TABLE t1 engine=InnoDB;