Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
10.1.3, 10.2.0, 10.3.0, 10.4.0
-
None
Description
10.4 382115b992 |
DEADLOCK of threads detected!
|
2019-01-22 13:40:02 18 [Note] InnoDB: Mutex 0x557b01794b80 owned by thread 139807583119104 file /home/travis/src/storage/innobase/handler/i_s.cc line 9060
|
--Thread 139809977779968 has waited at sync0rw.cc line 262 for 0.00 seconds the semaphore:
|
Mutex at 0x557b01794b80, Mutex RW_LOCK_LIST created sync0debug.cc:1727, lock var 2
|
Last time reserved in file /home/travis/src/storage/innobase/handler/i_s.cc line 9060
|
2019-01-22 13:40:02 18 [Note] InnoDB: Mutex 0x557b095274d0 owned by thread 139809977779968 file /home/travis/src/storage/innobase/row/row0mysql.cc line 2330
|
--Thread 139807583119104 has waited at dict0dict.cc line 513 for 0.00 seconds the semaphore:
|
Mutex at 0x557b095274d0, Mutex DICT_SYS created dict0dict.cc:1095, lock var 2
|
Last time reserved in file /home/travis/src/storage/innobase/row/row0mysql.cc line 2330
|
2019-01-22 13:40:02 18 [ERROR] [FATAL] InnoDB: ######################################## Deadlock Detected!
|
190122 13:40:02 [ERROR] mysqld got signal 6 ;
|
#5 0x00007f28288d902a in abort () from /lib/x86_64-linux-gnu/libc.so.6
|
#6 0x0000557b006b4113 in ib::fatal::~fatal (this=0x7f277d540660, __in_chrg=<optimized out>) at /home/travis/src/storage/innobase/ut/ut0ut.cc:765
|
#7 0x0000557b0065d767 in sync_array_wait_event (arr=0x557b02838770, cell=@0x7f277d540848: 0x557b028389e0) at /home/travis/src/storage/innobase/sync/sync0arr.cc:462
|
#8 0x0000557b004a8af8 in TTASEventMutex<GenericPolicy>::enter (this=0x557b095274d0, max_spins=60, max_delay=4, filename=0x557b00ddcd68 "/home/travis/src/storage/innobase/dict/dict0dict.cc", line=513) at /home/travis/src/storage/innobase/include/ib0mutex.h:478
|
#9 0x0000557b004a6be5 in PolicyMutex<TTASEventMutex<GenericPolicy> >::enter (this=0x557b095274d0, n_spins=30, n_delay=4, name=0x557b00ddcd68 "/home/travis/src/storage/innobase/dict/dict0dict.cc", line=513) at /home/travis/src/storage/innobase/include/ib0mutex.h:595
|
#10 0x0000557b00766ef5 in dict_table_close (table=0x7f276c0c3488, dict_locked=0, try_drop=1) at /home/travis/src/storage/innobase/dict/dict0dict.cc:513
|
#11 0x0000557b005edf02 in row_prebuilt_free (prebuilt=0x7f276c1581e8, dict_locked=0) at /home/travis/src/storage/innobase/row/row0mysql.cc:1041
|
#12 0x0000557b00483966 in ha_innobase::close (this=0x7f276c0dfdb8) at /home/travis/src/storage/innobase/handler/ha_innodb.cc:6507
|
#13 0x0000557b002690d2 in handler::ha_close (this=0x7f276c0dfdb8) at /home/travis/src/sql/handler.cc:2786
|
#14 0x0000557b00068545 in closefrm (table=0x7f276c1c8640) at /home/travis/src/sql/table.cc:3609
|
#15 0x0000557b0018dea4 in intern_close_table (table=0x7f276c1c8640) at /home/travis/src/sql/table_cache.cc:222
|
#16 0x0000557b00190da3 in tdc_remove_table (thd=0x7f276c000d10, remove_type=TDC_RT_REMOVE_ALL, db=0x7f276c014048 "transforms", table_name=0x7f276c014058 "insert_select_22992", kill_delayed_threads=false) at /home/travis/src/sql/table_cache.cc:1151
|
#17 0x0000557affeb913c in drop_open_table (thd=0x7f276c000d10, table=0x7f276c1c8640, db_name=0x7f276c0140c8, table_name=0x7f276c0140d8) at /home/travis/src/sql/sql_base.cc:1406
|
#18 0x0000557afff188a3 in select_create::abort_result_set (this=0x7f276c016c40) at /home/travis/src/sql/sql_insert.cc:4755
|
#19 0x0000557afff911a1 in handle_select (thd=0x7f276c000d10, lex=0x7f276c004b20, result=0x7f276c016c40, setup_tables_done_option=0) at /home/travis/src/sql/sql_select.cc:391
|
#20 0x0000557afff527a3 in mysql_execute_command (thd=0x7f276c000d10) at /home/travis/src/sql/sql_parse.cc:4245
|
#21 0x0000557afff5f0bc in mysql_parse (thd=0x7f276c000d10, rawbuf=0x7f276c013d88 "CREATE TABLE transforms.insert_select_22992 SELECT * FROM INFORMATION_SCHEMA.`INNODB_MUTEXES` AS table1 ORDER BY table1.`CREATE_LINE`, table1.`NAME`, table1.`CREATE_LINE`, table1.`OS_WAITS`, table1.`"..., length=292, parser_state=0x7f277d541600, is_com_multi=false, is_next_command=false) at /home/travis/src/sql/sql_parse.cc:8116
|
#22 0x0000557afff4bf07 in dispatch_command (command=COM_QUERY, thd=0x7f276c000d10, packet=0x7f276c00b521 "CREATE TABLE transforms.insert_select_22992 SELECT * FROM INFORMATION_SCHEMA.`INNODB_MUTEXES` AS table1 ORDER BY table1.`CREATE_LINE`, table1.`NAME`, table1.`CREATE_LINE`, table1.`OS_WAITS`, table1.`"..., packet_length=293, is_com_multi=false, is_next_command=false) at /home/travis/src/sql/sql_parse.cc:1852
|
#23 0x0000557afff4a924 in do_command (thd=0x7f276c000d10) at /home/travis/src/sql/sql_parse.cc:1397
|
#24 0x0000557b000b6924 in do_handle_one_connection (connect=0x557b09650600) at /home/travis/src/sql/sql_connect.cc:1402
|
#25 0x0000557b000b6675 in handle_one_connection (arg=0x557b09650600) at /home/travis/src/sql/sql_connect.cc:1308
|
#26 0x0000557b009bea3c in pfs_spawn_thread (arg=0x557b0957fc70) at /home/travis/src/storage/perfschema/pfs.cc:1862
|
#27 0x00007f28295146ba in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
|
#28 0x00007f28289a941d in clone () from /lib/x86_64-linux-gnu/libc.so.6
|
All threads' stack trace is attached.
It's not reproducible right away, but maybe the stack traces will be enough. If not, please return it to me.
Notes on the origin of the report
https://travis-ci.org/elenst/travis-tests/jobs/482884727
2557 2 1
Tests: elenst-dev 8b68af909d539eb8af1752d1a0e817a6b204d929
Toolbox: b534cb88ebea7d4a116ad03502613d209968d95d
perl ./runall-new.pl --basedir=/home/travis/server --vardir=/home/travis/logs/vardir --duration=350 --threads=6 --seed=1548164361 --short-column-names --reporters=Backtrace,ErrorLog,Deadlock --validators=TransformerNoComparator --transformers=ExecuteAsExecuteImmediate,ExecuteAsInsertSelect,ExecuteAsUpdateDelete --redefine=conf/mariadb/alter_table.yy --redefine=conf/mariadb/instant_add.yy --redefine=conf/mariadb/modules/alter_table_columns.yy --redefine=conf/mariadb/modules/alter_table_indexes.yy --redefine=conf/mariadb/bulk_insert.yy --redefine=conf/mariadb/modules/admin.yy --redefine=conf/mariadb/modules/foreign_keys.yy -redefine=conf/mariadb/modules/locks.yy --redefine=conf/mariadb/modules/sql_mode.yy --redefine=conf/mariadb/redefine_temporary_tables.yy --redefine=conf/mariadb/versioning.yy --redefine=conf/mariadb/sequences.yy --mysqld=--log_output=FILE --mysqld=--max-statement-time=15 --mysqld=--lock-wait-timeout=10 --mysqld=--loose-innodb-lock-wait-timeout=5 --mysqld=--loose-debug_assert_on_not_freed_memory=0 --mysqld=--innodb-buffer-pool-size=2G --grammar=conf/runtime/performance_schema.yy --mysqld=--performance-schema --filter=/home/travis/mariadb-toolbox/travis/10.4-combo-filter.ff --scenario=Restart
|
Attachments
Issue Links
- is caused by
-
MDEV-7399 Add support for INFORMATION_SCHEMA.INNODB_MUTEXES
-
- Closed
-
- relates to
-
MDEV-15798 Mutex leak on accessing INFORMATION_SCHEMA.INNODB_MUTEXES
-
- Closed
-
I tried and failed to repeat this with the following:
--source include/have_innodb.inc
./mtr --mysqld=--innodb-mutexes --mysqld=--innodb-sync-debug innodb.mdev-18343
That said, code review suggests that the bug is very possible. The key could be the ORDER BY or some buffering which can cause calls to Field::store() or similar to fail.
The function i_s_innodb_mutexes_fill_table() is wrapping some calls in the following macro:
#define OK(expr) \
DBUG_RETURN(1); \
}
If this macro causes a return from i_s_innodb_mutexes_fill_table(), then a call to mutex_exit(&rw_lock_list_mutex) would be skipped.
The broken code was introduced in MariaDB 10.1.3.
The function sync_arr_fill_sys_semphore_waits_table that was added at the same time to implement INFORMATION_SCHEMA.INNODB_SEMAPHORE_WAITS does not appear to suffer from a deadlock, but instead it appears to suffer from race conditions, because the access to the global data structure is not being protected by anything.