| Bug #80745 | Segmentation fault while altering table engine to innodb from memory engine | ||
|---|---|---|---|
| Submitted: | 15 Mar 2016 11:34 | Modified: | 6 May 2016 10:48 |
| Reporter: | Shahriyar Rzayev | Email Updates: | |
| Status: | Duplicate | Impact on me: | |
| Category: | MySQL Server: InnoDB storage engine | Severity: | S1 (Critical) |
| Version: | 5.7.11 | OS: | Any |
| Assigned to: | CPU Architecture: | Any | |
[15 Mar 2016 12:17]
MySQL Verification Team
Hello Shahriyar, Thank you for the report. Thanks, Umesh
[15 Mar 2016 12:18]
MySQL Verification Team
-- Only debug build is affected
-- Single user can be used for all steps(just used to see if more pri required)
-- As a root
mysql> create user 'bug'@'localhost';
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT ALL ON db1.* TO 'bug'@'localhost';
Query OK, 0 rows affected (0.00 sec)
mysql> CREATE TABLESPACE `s1` ADD DATAFILE 'ts1.ibd' ENGINE=INNODB;
Query OK, 0 rows affected (0.00 sec)
mysql> create database db1;
Query OK, 1 row affected (0.01 sec)
-- As a bug user
[umshastr@hod03]/export/umesh/server/binaries/mysql-5.7.11: bin/mysql -ubug -S/tmp/mysql_ushastry.sock
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.7.11 MySQL Community Server (GPL)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> use db1
Database changed
mysql> DROP TABLE IF EXISTS sbtest1;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> CREATE TABLE `sbtest1` (
-> `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
-> `k` int(10) unsigned NOT NULL DEFAULT '0',
-> `c` char(120) NOT NULL DEFAULT '',
-> `pad` char(60) NOT NULL DEFAULT '',
-> PRIMARY KEY (`id`),
-> KEY `k_1` (`k`)
-> ) ENGINE=InnoDB TABLESPACE=s1 AUTO_INCREMENT=685441 DEFAULT CHARSET=utf8 MAX_ROWS=1000000;
Query OK, 0 rows affected (0.01 sec)
mysql> alter table sbtest1 engine=memory;
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> alter table sbtest1 encryption='y';
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> alter table sbtest1 compression='zlib';
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> show create table sbtest1\G
*************************** 1. row ***************************
Table: sbtest1
Create Table: CREATE TABLE `sbtest1` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`k` int(10) unsigned NOT NULL DEFAULT '0',
`c` char(120) NOT NULL DEFAULT '',
`pad` char(60) NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
KEY `k_1` (`k`)
) /*!50100 TABLESPACE `s1` */ ENGINE=MEMORY AUTO_INCREMENT=685441 DEFAULT CHARSET=utf8 MAX_ROWS=1000000 COMPRESSION='zlib' ENCRYPTION='y'
1 row in set (0.00 sec)
-- With release build
mysql> alter table sbtest1 engine=innodb;
ERROR 3183 (HY000): This tablespace can't be encrypted.
-- With debug build
mysql> alter table sbtest1 engine=innodb;
ERROR 2013 (HY000): Lost connection to MySQL server during query
mysql> \q
(gdb) bt
#0 0x00007f675dcf5771 in pthread_kill () from /lib64/libpthread.so.0
#1 0x00000000017aa0cd in my_write_core (sig=6) at /export/home/pb2/build/sb_0-17781605-1454370718.35/mysql-5.7.11/mysys/stacktrace.c:247
#2 0x0000000000d8b058 in handle_fatal_signal (sig=6) at /export/home/pb2/build/sb_0-17781605-1454370718.35/mysql-5.7.11/sql/signal_handler.cc:220
#3 <signal handler called>
#4 0x00007f675c8fb5d7 in raise () from /lib64/libc.so.6
#5 0x00007f675c8fccc8 in abort () from /lib64/libc.so.6
#6 0x0000000001a337a7 in ut_dbg_assertion_failed (expr=0x2211a10 "block->magic_n == MEM_BLOCK_MAGIC_N",
file=0x2211978 "/export/home/pb2/build/sb_0-17781605-1454370718.35/mysql-5.7.11/storage/innobase/include/mem0mem.ic", line=157)
at /export/home/pb2/build/sb_0-17781605-1454370718.35/mysql-5.7.11/storage/innobase/ut/ut0dbg.cc:67
#7 0x0000000001afaf7e in mem_block_validate (block=0x7f66d491f5c8) at /export/home/pb2/build/sb_0-17781605-1454370718.35/mysql-5.7.11/storage/innobase/include/mem0mem.ic:157
#8 0x0000000001afb22f in mem_heap_free (heap=0x7f66d491f5c8) at /export/home/pb2/build/sb_0-17781605-1454370718.35/mysql-5.7.11/storage/innobase/include/mem0mem.ic:523
#9 0x0000000001afc4c3 in dict_mem_table_free (table=0x7f66d491f760) at /export/home/pb2/build/sb_0-17781605-1454370718.35/mysql-5.7.11/storage/innobase/dict/dict0mem.cc:224
#10 0x00000000018164b9 in create_table_info_t::create_table_def (this=0x7f671a7acab0)
at /export/home/pb2/build/sb_0-17781605-1454370718.35/mysql-5.7.11/storage/innobase/handler/ha_innodb.cc:10044
#11 0x00000000018039e8 in create_table_info_t::create_table (this=0x7f671a7acab0) at /export/home/pb2/build/sb_0-17781605-1454370718.35/mysql-5.7.11/storage/innobase/handler/ha_innodb.cc:11567
#12 0x000000000180464d in ha_innobase::create (this=0x7f66d4011d90, name=0x7f671a7ae454 "./db1/#sql-2a9c_2", form=0x7f671a7acc00, create_info=0x7f671a7afc40)
at /export/home/pb2/build/sb_0-17781605-1454370718.35/mysql-5.7.11/storage/innobase/handler/ha_innodb.cc:11917
#13 0x0000000000e0cc76 in handler::ha_create (this=0x7f66d4011d90, name=0x7f671a7ae454 "./db1/#sql-2a9c_2", form=0x7f671a7acc00, info=0x7f671a7afc40)
at /export/home/pb2/build/sb_0-17781605-1454370718.35/mysql-5.7.11/sql/handler.cc:4819
#14 0x0000000000e0d2a5 in ha_create_table (thd=0x7f66d4000b70, path=0x7f671a7ae454 "./db1/#sql-2a9c_2", db=0x7f66d40064b8 "db1", table_name=0x7f671a7adc00 "#sql-2a9c_2",
create_info=0x7f671a7afc40, update_create_info=false, is_temp_table=false) at /export/home/pb2/build/sb_0-17781605-1454370718.35/mysql-5.7.11/sql/handler.cc:4978
#15 0x00000000014f1723 in mysql_alter_table (thd=0x7f66d4000b70, new_db=0x7f66d40064b8 "db1", new_name=0x0, create_info=0x7f671a7afc40, table_list=0x7f66d4005f30, alter_info=0x7f671a7afd40)
at /export/home/pb2/build/sb_0-17781605-1454370718.35/mysql-5.7.11/sql/sql_table.cc:9570
#16 0x0000000001679969 in Sql_cmd_alter_table::execute (this=0x7f66d40064c8, thd=0x7f66d4000b70) at /export/home/pb2/build/sb_0-17781605-1454370718.35/mysql-5.7.11/sql/sql_alter.cc:316
#17 0x000000000145ccfe in mysql_execute_command (thd=0x7f66d4000b70, first_level=true) at /export/home/pb2/build/sb_0-17781605-1454370718.35/mysql-5.7.11/sql/sql_parse.cc:4806
#18 0x000000000145ec61 in mysql_parse (thd=0x7f66d4000b70, parser_state=0x7f671a7b1690) at /export/home/pb2/build/sb_0-17781605-1454370718.35/mysql-5.7.11/sql/sql_parse.cc:5518
#19 0x0000000001453776 in dispatch_command (thd=0x7f66d4000b70, com_data=0x7f671a7b1e00, command=COM_QUERY)
at /export/home/pb2/build/sb_0-17781605-1454370718.35/mysql-5.7.11/sql/sql_parse.cc:1428
#20 0x0000000001452631 in do_command (thd=0x7f66d4000b70) at /export/home/pb2/build/sb_0-17781605-1454370718.35/mysql-5.7.11/sql/sql_parse.cc:996
#21 0x0000000001588c6d in handle_connection (arg=0x4ee26a0) at /export/home/pb2/build/sb_0-17781605-1454370718.35/mysql-5.7.11/sql/conn_handler/connection_handler_per_thread.cc:301
#22 0x0000000001bc0c75 in pfs_spawn_thread (arg=0x5032610) at /export/home/pb2/build/sb_0-17781605-1454370718.35/mysql-5.7.11/storage/perfschema/pfs.cc:2192
#23 0x00007f675dcf0df5 in start_thread () from /lib64/libpthread.so.0
#24 0x00007f675c9bc60d in clone () from /lib64/libc.so.6
(gdb)
[15 Mar 2016 22:55]
Roel Van de Paar
ERROR 3183 (HY000): This tablespace can't be encrypted. This looks incorrect in release build too (it's either already encrypted as shown or encryption is not possible for MEMORY, or ... :)
[6 May 2016 10:48]
Erlend Dahl
Fixed in 5.7.13 along with Bug#80182 Unsupported extension error for new features while 'create table like'

Description: Hi dear experts. As simple as possible - tested with MySQL 5.7.11 debug-valgrind create tablespace s1 add datafile 's1.ibd' engine=innodb; CREATE TABLE `sbtest2` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `k` int(10) unsigned NOT NULL DEFAULT '0', `c` char(120) NOT NULL DEFAULT '', `pad` char(60) NOT NULL DEFAULT '', PRIMARY KEY (`id`), KEY `k_1` (`k`) ) /*!50100 TABLESPACE `s1` */ ENGINE=MEMORY DEFAULT CHARSET=utf8 MAX_ROWS=1000000 COMPRESSION='zlib' ENCRYPTION='y'; mysql> alter table sbtest2 engine=innodb; ERROR 2013 (HY000): Lost connection to MySQL server during query Program terminated with signal SIGSEGV, Segmentation fault. #0 0x00007fb1d67ea621 in __pthread_kill (threadid=<optimized out>, signo=11) at ../nptl/sysdeps/unix/sysv/linux/pthread_kill.c:61 61 ../nptl/sysdeps/unix/sysv/linux/pthread_kill.c: No such file or directory. (gdb) bt #0 0x00007fb1d67ea621 in __pthread_kill (threadid=<optimized out>, signo=11) at ../nptl/sysdeps/unix/sysv/linux/pthread_kill.c:61 #1 0x000000000186b1d9 in my_write_core (sig=11) at /opt/mysql-5.7.11/mysys/stacktrace.c:247 #2 0x0000000000e6bb52 in handle_fatal_signal (sig=11) at /opt/mysql-5.7.11/sql/signal_handler.cc:220 #3 <signal handler called> #4 0x00000000018f2fa7 in ut_allocator<unsigned char>::deallocate_trace (this=0x7fb1936eed90, pfx=0x4d1ffffffe8) at /opt/mysql-5.7.11/storage/innobase/include/ut0new.h:726 #5 0x00000000018f0e4c in ut_allocator<unsigned char>::deallocate (this=0x7fb1936eed90, ptr=0x4d200000000 <error: Cannot access memory at address 0x4d200000000>, n_elements=0) at /opt/mysql-5.7.11/storage/innobase/include/ut0new.h:402 #6 0x0000000001bf6cef in dict_mem_table_free (table=0x7fb148921890) at /opt/mysql-5.7.11/storage/innobase/dict/dict0mem.cc:212 #7 0x00000000018ef159 in create_table_info_t::create_table_def (this=0x7fb1936ef2e0) at /opt/mysql-5.7.11/storage/innobase/handler/ha_innodb.cc:10044 #8 0x00000000018db93a in create_table_info_t::create_table (this=0x7fb1936ef2e0) at /opt/mysql-5.7.11/storage/innobase/handler/ha_innodb.cc:11567 #9 0x00000000018dc534 in ha_innobase::create (this=0x7fb148920840, name=0x7fb1936f2174 "./test/#sql-12bf_2", form=0x7fb1936efad0, create_info=0x7fb1936f24f0) at /opt/mysql-5.7.11/storage/innobase/handler/ha_innodb.cc:11917 #10 0x0000000000ef1c9e in handler::ha_create (this=0x7fb148920840, name=0x7fb1936f2174 "./test/#sql-12bf_2", form=0x7fb1936efad0, info=0x7fb1936f24f0) at /opt/mysql-5.7.11/sql/handler.cc:4819 #11 0x0000000000ef22b9 in ha_create_table (thd=0x7fb148000b70, path=0x7fb1936f2174 "./test/#sql-12bf_2", db=0x7fb148004a10 "test", table_name=0x7fb1936f1920 "#sql-12bf_2", create_info=0x7fb1936f24f0, update_create_info=false, is_temp_table=false) at /opt/mysql-5.7.11/sql/handler.cc:4978 #12 0x00000000015a8374 in mysql_alter_table (thd=0x7fb148000b70, new_db=0x7fb148004a10 "test", new_name=0x0, create_info=0x7fb1936f24f0, table_list=0x7fb14891d820, alter_info=0x7fb1936f2440) at /opt/mysql-5.7.11/sql/sql_table.cc:9572 #13 0x00000000017300e7 in Sql_cmd_alter_table::execute (this=0x7fb14800e5b0, thd=0x7fb148000b70) at /opt/mysql-5.7.11/sql/sql_alter.cc:316 #14 0x000000000150f2f5 in mysql_execute_command (thd=0x7fb148000b70, first_level=true) at /opt/mysql-5.7.11/sql/sql_parse.cc:4806 #15 0x00000000015112e2 in mysql_parse (thd=0x7fb148000b70, parser_state=0x7fb1936f41d0) at /opt/mysql-5.7.11/sql/sql_parse.cc:5518 #16 0x0000000001506394 in dispatch_command (thd=0x7fb148000b70, com_data=0x7fb1936f4dd0, command=COM_QUERY) at /opt/mysql-5.7.11/sql/sql_parse.cc:1428 #17 0x00000000015052ed in do_command (thd=0x7fb148000b70) at /opt/mysql-5.7.11/sql/sql_parse.cc:996 #18 0x00000000016439af in handle_connection (arg=0x48dd210) at /opt/mysql-5.7.11/sql/conn_handler/connection_handler_per_thread.cc:301 #19 0x0000000001cc0a3f in pfs_spawn_thread (arg=0x4b30a30) at /opt/mysql-5.7.11/storage/perfschema/pfs.cc:2192 #20 0x00007fb1d67e5182 in start_thread (arg=0x7fb1936f5700) at pthread_create.c:312 #21 0x00007fb1d5cf247d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111 How to repeat: see description Suggested fix: no idea