| Bug #91975 | InnoDB: Assertion failure: dict0dd.cc:1071:!fail | ||
|---|---|---|---|
| Submitted: | 11 Aug 2018 0:24 | Modified: | 17 May 2019 14:11 |
| Reporter: | Roel Van de Paar | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server: InnoDB storage engine | Severity: | S6 (Debug Builds) |
| Version: | 8.0.12 | OS: | Any |
| Assigned to: | CPU Architecture: | Any | |
| Tags: | debug | ||
[11 Aug 2018 0:25]
Roel Van de Paar
Additional testcase CREATE DATABASE test; USE test; CREATE TEMPORARY TABLE t5(c1 INT); create table t1(pk int key); SET GLOBAL super_read_only=1; CREATE TEMPORARY TABLE t1(c1 INT); RENAME TABLE t1 TO t5;
[11 Aug 2018 13:51]
MySQL Verification Team
Thank you for the bugh report. 2018-08-11T13:49:10.218161Z 0 [System] [MY-010931] [Server] /home/miguel/dbsd/8.0/bin/mysqld: ready for connections. Version: '8.0.13-debug' socket: '/tmp/mysql80.sock' port: 3380 Source distribution BUILD: 2018-JUL-20. 2018-08-11T13:49:11.414017Z 0 [ERROR] [MY-011300] [Server] Plugin mysqlx reported: 'Setup of bind-address: '*' port: 33060 failed, `bind()` failed with error: Address already in use (98). Do you already have another mysqld server running with Mysqlx ?' 2018-08-11T13:49:11.414162Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Socket: '/tmp/mysqlx.sock' 2018-08-11T13:49:48.020219Z 9 [ERROR] [MY-013183] [InnoDB] Assertion failure: dict0dd.cc:1072:!fail thread 139726831269632 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/8.0/en/forcing-innodb-recovery.html InnoDB: about forcing recovery. 13:49:48 UTC - mysqld got signal 6 ; This could be because you hit a bug. It is also possible that this binary or one of the libraries it was linked against is corrupt, improperly built, or misconfigured. This error can also be caused by malfunctioning hardware. Attempting to collect some information that could help diagnose the problem. As this is a crash and something is definitely wrong, the information collection process might fail. key_buffer_size=8388608 read_buffer_size=131072 max_used_connections=1 max_threads=151 thread_count=2 connection_count=1 It is possible that mysqld could use up to key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 67870 K bytes of memory Hope that's ok; if not, decrease some variables in the equation. Thread pointer: 0x7f142011c720 Attempting backtrace. You can use the following information to find out where mysqld died. If you see no messages after this, something went terribly wrong... stack_bottom = 7f14b024ac00 thread_stack 0x46000 /home/miguel/dbsd/8.0/bin/mysqld(my_print_stacktrace(unsigned char*, unsigned long)+0x43) [0x4148f2c] /home/miguel/dbsd/8.0/bin/mysqld(handle_fatal_signal+0x3f5) [0x2f1d23e] /lib64/libpthread.so.0(+0xf6d0) [0x7f14c2cf06d0] /lib64/libc.so.6(gsignal+0x37) [0x7f14c1007277] /lib64/libc.so.6(abort+0x148) [0x7f14c1008968] /home/miguel/dbsd/8.0/bin/mysqld(ut_dbg_assertion_failed(char const*, char const*, unsigned long)+0x187) [0x450a010] /home/miguel/dbsd/8.0/bin/mysqld(dd_rename_tablespace(unsigned long long, char const*, char const*)+0x574) [0x45fb086] /home/miguel/dbsd/8.0/bin/mysqld(int innobase_basic_ddl::rename_impl<dd::Table>(THD*, char const*, char const*, dd::Table const*, dd::Table const*)+0x423) [0x4292231] /home/miguel/dbsd/8.0/bin/mysqld(ha_innobase::rename_table(char const*, char const*, dd::Table const*, dd::Table*)+0x268) [0x4275910] /home/miguel/dbsd/8.0/bin/mysqld(handler::ha_rename_table(char const*, char const*, dd::Table const*, dd::Table*)+0x7c) [0x3095d28] /home/miguel/dbsd/8.0/bin/mysqld(mysql_rename_table(THD*, handlerton*, char const*, char const*, char const*, char const*, dd::Schema const&, char const*, char const*, unsigned int)+0xb33) [0x2e23fb7] /home/miguel/dbsd/8.0/bin/mysqld() [0x2dc86aa] /home/miguel/dbsd/8.0/bin/mysqld() [0x2dc8d40] /home/miguel/dbsd/8.0/bin/mysqld(mysql_rename_tables(THD*, TABLE_LIST*)+0x763) [0x2dc7371] /home/miguel/dbsd/8.0/bin/mysqld(mysql_execute_command(THD*, bool)+0x1cc5) [0x2d7dfcb] /home/miguel/dbsd/8.0/bin/mysqld(mysql_parse(THD*, Parser_state*, bool)+0x66f) [0x2d83776] /home/miguel/dbsd/8.0/bin/mysqld(dispatch_command(THD*, COM_DATA const*, enum_server_command)+0x1350) [0x2d79cb6] /home/miguel/dbsd/8.0/bin/mysqld(do_command(THD*)+0x43a) [0x2d783dc] /home/miguel/dbsd/8.0/bin/mysqld() [0x2f09eac] /home/miguel/dbsd/8.0/bin/mysqld() [0x4799b6d] /lib64/libpthread.so.0(+0x7e25) [0x7f14c2ce8e25] /lib64/libc.so.6(clone+0x6d) [0x7f14c10cfbad] Trying to get some variables.
[12 Aug 2018 21:41]
Roel Van de Paar
Another testcase. It crashed 8.0.4rc too, but with a different stack. CREATE DATABASE test; USE test; CREATE TABLE t1(b INT)ENGINE=innodb; ALTER TABLE t1 ALGORITHM=DEFAULT,DISCARD TABLESPACE; ALTER TABLE t1 RENAME b; CREATE TABLE t1(b INT KEY,c TEXT,d TEXT)ENGINE=MyISAM; ALTER TABLE t1 ENGINE=InnoDB;
[12 Aug 2018 21:42]
Roel Van de Paar
Guys, this bug looks bad. Please check.
[14 Aug 2018 13:07]
Erlend Dahl
Posted by developer: The first testcase takes out 8.0.11 too.
[25 Aug 2018 6:11]
Roel Van de Paar
Is the "14 Aug 13:07" comment meant to imply that this bug is not a recent regression? I hope not.
[26 Oct 2018 4:50]
Gopal Shankar
Posted by developer: Docs says: https://dev.mysql.com/doc/refman/8.0/en/temporary-table-problems.html .. To rename TEMPORARY tables, RENAME TABLE does not work. Use ALTER TABLE instead: .. So following works fine: CREATE TABLE t1(c3 INT); SET @@global.super_read_only=TRUE; CREATE TEMPORARY TABLE t1(a INT); CREATE TEMPORARY TABLE t3(a INT); ALTER TABLE t1 rename t3; There are very old bugs related to this JFYI. https://clustra.no.oracle.com/orabugs/bug.php?id=11744752 https://bugs.mysql.com/bug.php?id=49855 https://bugs.mysql.com/bug.php?id=1154 https://bugs.mysql.com/bug.php?id=44364 https://bugs.mysql.com/bug.php?id=8729 This is JFYI. Need few more discussion on approach to fix.
[17 May 2019 11:00]
Gopal Shankar
Posted by developer: Logged another Bug#29793800 for the scenario reported by Roy, as it is not related to this bug. .... [12 Aug 2018 14:42] Mysqlsys_ww (MYSQLSYS) * Original entry logged in the MySQL bug system by: Roel Van de Paar on 12-Aug-2018 21:41:50 MySQL comment id: 478174 Another testcase. It crashed 8.0.4rc too, but with a different stack. ....
[17 May 2019 14:11]
Daniel Price
Posted by developer: Fixed as of the upcoming 8.0.17 release, and here's the changelog entry: With super_read_only enabled, an attempted RENAME TABLE operation on a temporary table raised an assertion instead of returning an error.

Description: New regression. Not present in 5.7.21. Please fix asap. 2018-08-11T00:22:27.667506Z 9 [ERROR] [MY-000000] [InnoDB] InnoDB: Assertion failure: dict0dd.cc:1071:!fail InnoDB: thread 140409159669504 Core was generated by `/sda/MS300718-mysql-8.0.12-linux-x86_64-debug/bin/mysqld --no-defaults --core-f'. Program terminated with signal SIGABRT, Aborted. #0 __pthread_kill (threadid=<optimized out>, signo=6) at ../sysdeps/unix/sysv/linux/pthread_kill.c:57 57 ../sysdeps/unix/sysv/linux/pthread_kill.c: No such file or directory. [Current thread is 1 (Thread 0x7fb38e15d700 (LWP 32644))] (gdb) bt #0 __pthread_kill (threadid=<optimized out>, signo=6) at ../sysdeps/unix/sysv/linux/pthread_kill.c:57 #1 0x0000563347c9878d in my_write_core (sig=6) at /git/MS-8.0.12_dbg/mysys/stacktrace.cc:278 #2 0x00005633469ecd94 in handle_fatal_signal (sig=6) at /git/MS-8.0.12_dbg/sql/signal_handler.cc:249 #3 <signal handler called> #4 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51 #5 0x00007fb38e19e801 in __GI_abort () at abort.c:79 #6 0x0000563348082239 in ut_dbg_assertion_failed (expr=0x563349343516 "!fail", file=0x563349342e18 "/git/MS-8.0.12_dbg/storage/innobase/dict/dict0dd.cc", line=1071) at /git/MS-8.0.12_dbg/storage/innobase/ut/ut0dbg.cc:90 #7 0x00005633481803ad in dd_rename_tablespace (dd_space_id=7, new_space_name=0x7fb38e156cf0 "test/t3", new_path=0x7fb364a4e7a8 "./test/t3.ibd") at /git/MS-8.0.12_dbg/storage/innobase/dict/dict0dd.cc:1071 #8 0x0000563347dec24d in innobase_basic_ddl::rename_impl<dd::Table> (thd=0x7fb364823000, from=0x7fb38e1585a0 "./test/t1", to=0x7fb38e1587b0 "./test/t3", from_table=0x7fb36481ec78, to_table=0x7fb36481f178) at /git/MS-8.0.12_dbg/storage/innobase/handler/ha_innodb.cc:12277 #9 0x0000563347dd1f55 in ha_innobase::rename_table (this=0x7fb364a3c028, from=0x7fb38e1585a0 "./test/t1", to=0x7fb38e1587b0 "./test/t3", from_table_def=0x7fb36481ec78, to_table_def=0x7fb36481f178) at /git/MS-8.0.12_dbg/storage/innobase/handler/ha_innodb.cc:13603 #10 0x0000563346b7723c in handler::ha_rename_table (this=0x7fb364a3c028, from=0x7fb38e1585a0 "./test/t1", to=0x7fb38e1587b0 "./test/t3", from_table_def=0x7fb36481ec78, to_table_def=0x7fb36481f178) at /git/MS-8.0.12_dbg/sql/handler.cc:4646 #11 0x00005633468ed022 in mysql_rename_table (thd=0x7fb364823000, base=0x7fb38d846fa0, old_db=0x7fb36499efc8 "test", old_name=0x7fb36499e9c0 "t1", old_fk_db=0x7fb36499efc8 "test", old_fk_name=0x7fb36499e9c0 "t1", new_schema=..., new_db=0x7fb36499f560 "test", new_name=0x7fb36499ea00 "t3", flags=8) at /git/MS-8.0.12_dbg/sql/sql_table.cc:8288 #12 0x000056334688ec49 in do_rename (thd=0x7fb364823000, ren_table=0x7fb36499ea40, new_db=0x7fb36499f560 "test", new_table_name=0x7fb36499ea00 "t3", new_table_alias=0x7fb36499efd0 "t3", skip_error=false, int_commit_done=0x7fb38e159ffe, post_ddl_htons=0x7fb38e15a070, fk_invalidator=0x7fb38e15a0a0) at /git/MS-8.0.12_dbg/sql/sql_rename.cc:463 #13 0x000056334688f2f9 in rename_tables (thd=0x7fb364823000, table_list=0x7fb36499ea40, skip_error=false, int_commit_done=0x7fb38e159ffe, post_ddl_htons=0x7fb38e15a070, fk_invalidator=0x7fb38e15a0a0) at /git/MS-8.0.12_dbg/sql/sql_rename.cc:614 #14 0x000056334688dee4 in mysql_rename_tables (thd=0x7fb364823000, table_list=0x7fb36499ea40) #15 0x00005633468400c2 in mysql_execute_command (thd=0x7fb364823000, first_level=true) at /git/MS-8.0.12_dbg/sql/sql_parse.cc:3138 #16 0x0000563346845f94 in mysql_parse (thd=0x7fb364823000, parser_state=0x7fb38e15c330) at /git/MS-8.0.12_dbg/sql/sql_parse.cc:4925 #17 0x000056334683baeb in dispatch_command (thd=0x7fb364823000, com_data=0x7fb38e15cc90, command=COM_QUERY) at /git/MS-8.0.12_dbg/sql/sql_parse.cc:1607 #18 0x000056334683a3c6 in do_command (thd=0x7fb364823000) at /git/MS-8.0.12_dbg/sql/sql_parse.cc:1232 #19 0x00005633469da678 in handle_connection (arg=0x7fb37bba5480) at /git/MS-8.0.12_dbg/sql/conn_handler/connection_handler_per_thread.cc:308 #20 0x0000563348349422 in pfs_spawn_thread (arg=0x7fb381be7720) at /git/MS-8.0.12_dbg/storage/perfschema/pfs.cc:2836 #21 0x00007fb38fb8a6db in start_thread (arg=0x7fb38e15d700) at pthread_create.c:463 #22 0x00007fb38e27f88f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 How to repeat: CREATE DATABASE test; USE test; CREATE TABLE t1(c1 TIME,c2 CHAR (1),c3 INT(1),c4 VARCHAR(1) KEY,c5 TIME UNIQUE KEY,c6 NUMERIC(0,0) DEFAULT 3.141592); SET @@global.super_read_only=TRUE; create temporary TABLE t1(i int,b BLOB,primary key pk(i),index sk(b(1))); create temporary table t3(f int); rename TABLE t1 to t3;