Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
10.2.34
Description
commit 309302a3dad5f06cb62b0846dcb8a3671d91ff29 (HEAD, origin/10.2)
|
2020-08-19 16:36:05 122901187513344 [Note] /home/mleich/Server_bin/10.2_asan/bin/mysqld: ready for connections.
|
Version: '10.2.34-MariaDB-debug-log' socket: '/home/mleich/Server_bin/10.2_asan/mysql-test/var/tmp/4/mysqld.1.sock' port: 16060 Source distribution
|
ASAN:DEADLYSIGNAL
|
=================================================================
|
==12019==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000080 (pc 0x5644ffd7498d bp 0x640001607070 sp 0x640001606f40 T29)
|
==12019==The signal is caused by a READ memory access.
|
==12019==Hint: address points to the zero page.
|
#0 0x5644ffd7498c in row_log_table_low /home/mleich/Server/10.2/storage/innobase/row/row0log.cc:863
|
#1 0x5644ffd75840 in row_log_table_update(unsigned char const*, dict_index_t*, unsigned short const*, dtuple_t const*) /home/mleich/Server/10.2/storage/innobase/row/row0log.cc:967
|
#2 0x56450028d7f1 in row_undo_mod_clust /home/mleich/Server/10.2/storage/innobase/row/row0umod.cc:339
|
#3 0x564500293248 in row_undo_mod(undo_node_t*, que_thr_t*) /home/mleich/Server/10.2/storage/innobase/row/row0umod.cc:1244
|
#4 0x5644ffe0999e in row_undo /home/mleich/Server/10.2/storage/innobase/row/row0undo.cc:291
|
#5 0x5644ffe09cfd in row_undo_step(que_thr_t*) /home/mleich/Server/10.2/storage/innobase/row/row0undo.cc:334
|
#6 0x5644ffc8f8d4 in que_thr_step /home/mleich/Server/10.2/storage/innobase/que/que0que.cc:1040
|
#7 0x5644ffc8fc9f in que_run_threads_low /home/mleich/Server/10.2/storage/innobase/que/que0que.cc:1104
|
#8 0x5644ffc90050 in que_run_threads(que_thr_t*) /home/mleich/Server/10.2/storage/innobase/que/que0que.cc:1144
|
#9 0x5644ffeebf37 in trx_rollback_to_savepoint_low /home/mleich/Server/10.2/storage/innobase/trx/trx0roll.cc:107
|
#10 0x5644ffeec586 in trx_rollback_for_mysql_low /home/mleich/Server/10.2/storage/innobase/trx/trx0roll.cc:169
|
#11 0x5644ffeeccfe in trx_rollback_for_mysql(trx_t*) /home/mleich/Server/10.2/storage/innobase/trx/trx0roll.cc:200
|
#12 0x5644ffa3a183 in innobase_rollback /home/mleich/Server/10.2/storage/innobase/handler/ha_innodb.cc:4764
|
#13 0x5644ff4fa06d in ha_rollback_trans(THD*, bool) /home/mleich/Server/10.2/sql/handler.cc:1707
|
#14 0x5644ff263cdd in trans_rollback(THD*) /home/mleich/Server/10.2/sql/transaction.cc:415
|
#15 0x5644fee9fc21 in mysql_execute_command(THD*) /home/mleich/Server/10.2/sql/sql_parse.cc:5350
|
#16 0x5644feeb02b2 in mysql_parse(THD*, char*, unsigned int, Parser_state*, bool, bool) /home/mleich/Server/10.2/sql/sql_parse.cc:7733
|
#17 0x5644fee86f5d in dispatch_command(enum_server_command, THD*, char*, unsigned int, bool, bool) /home/mleich/Server/10.2/sql/sql_parse.cc:1823
|
#18 0x5644fee83984 in do_command(THD*) /home/mleich/Server/10.2/sql/sql_parse.cc:1377
|
#19 0x5644ff22cc43 in do_handle_one_connection(CONNECT*) /home/mleich/Server/10.2/sql/sql_connect.cc:1336
|
#20 0x5644ff22c500 in handle_one_connection /home/mleich/Server/10.2/sql/sql_connect.cc:1241
|
#21 0x5645006b5845 in pfs_spawn_thread /home/mleich/Server/10.2/storage/perfschema/pfs.cc:1869
|
#22 0x39490f1cd7fb in start_thread (/lib/x86_64-linux-gnu/libpthread.so.0+0x77fb)
|
#23 0x73ed0113ab5e in clone (/lib/x86_64-linux-gnu/libc.so.6+0x114b5e)
|
|
AddressSanitizer can not provide additional info.
|
SUMMARY: AddressSanitizer: SEGV /home/mleich/Server/10.2/storage/innobase/row/row0log.cc:863 in row_log_table_low
|
Thread T29 created by T0 here:
|
#0 0x5645028e0d2f in __interceptor_pthread_create (/usr/lib/x86_64-linux-gnu/libasan.so.4+0x37d2f)
|
#1 0x5645006b5c7f in spawn_thread_v1 /home/mleich/Server/10.2/storage/perfschema/pfs.cc:1919
|
#2 0x5644fec19130 in inline_mysql_thread_create /home/mleich/Server/10.2/include/mysql/psi/mysql_thread.h:1246
|
#3 0x5644fec3101d in create_thread_to_handle_connection(CONNECT*) /home/mleich/Server/10.2/sql/mysqld.cc:6520
|
#4 0x5644fec317ee in create_new_thread /home/mleich/Server/10.2/sql/mysqld.cc:6588
|
#5 0x5644fec329a0 in handle_connections_sockets() /home/mleich/Server/10.2/sql/mysqld.cc:6846
|
#6 0x5644fec303c9 in mysqld_main(int, char**) /home/mleich/Server/10.2/sql/mysqld.cc:6137
|
#7 0x5644fec17a79 in main /home/mleich/Server/10.2/sql/main.cc:25
|
#8 0x73ed010471c0 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x211c0)
|
|
==12019==ABORTING
|
200819 16:43:54 [ERROR] mysqld got signal 6 ;
|
...
|
Query (0x62b00003f228): ROLLBACK
|
Connection ID (thread ID): 11
|
Status: NOT_KILLED
|
Attachments
Issue Links
- is caused by
-
MDEV-23484 Rollback unnecessarily acquires dict_operation_lock for every row
-
- Closed
-
How to replay
1. cd <Top directory with MariaDB binaries>/mysql-test
2. tar xvzf MDEV-23514.tgz
This unpacks
- shellscript mysqltest_background.sh
- test suite/innodb/t/ml_TBR-631.test
3. ./mtr --mem --parallel=4 -rr -rr-arg='--chaos' --mysqld=--innodb_page_size=16K ml_TBR-631{,,,}
or similar
4. After observing the test failure you might need to wait lets say 10 seconds and than run
killall -9 perl mysqld mariadbd mysqltest
because otherwise certain processes will make useless load for several minutes.
Some notes:
The test and the shape of the MTR call are a brute force attempt to replay the problem.
I assume that neither "rr" nor ASAN build nor parallel > 1 nor the flood of SQL inside of ml_TBR-631 are strict required.
But its quite probable that their use made replays of the problem more likely.
The grammar of the corresponding RQG test is
__clone__3:
COMMIT |
ROLLBACK ;
thread1:
ALTER TABLE t2 ADD PRIMARY KEY ( col_text(9) , col2 ) |
ALTER TABLE t2 DROP PRIMARY KEY ;
thread1_connect:
;
thread1_init:
CREATE TABLE t2 ( col1 INT, col2 INT, col_int INTEGER , col_string INTEGER, col_text TEXT ) ENGINE = InnoDB ROW_FORMAT = Compressed ;
thread2:
UPDATE t2 SET col_int = { $my_int= $prng->int( 65, 512) } LIMIT 2 |
INSERT INTO t2 (col2,col_int,col_string, col_text) VALUES ( { $my_int= $prng->int( 65, 512) } , $my_int, 1111111111, REPEAT(SUBSTR(CAST( $my_int AS CHAR),1,1), @fill_amount) ); __clone__3 ;
thread2_connect:
SET AUTOCOMMIT = 0; SET @fill_amount = (@@innodb_page_size / 2 ) + 1 ;
thread2_init:
;