[MDEV-3821] Server crashes in fetch_data_into_cache_low on concurrent select from I_S and ALTER TABLE Created: 2012-10-29  Updated: 2013-11-28  Resolved: 2013-11-28

Status: Closed
Project: MariaDB Server
Component/s: None
Affects Version/s: 10.0.0
Fix Version/s: None

Type: Bug Priority: Major
Reporter: Elena Stepanova Assignee: Elena Stepanova
Resolution: Fixed Votes: 0
Labels: None

Issue Links:
Blocks
is blocked by MDEV-3932 5.6 merge Closed
Relates

 Description   

#3  <signal handler called>
#4  0x0000000000aea2fc in fetch_data_into_cache_low (cache=0x1d78e00, only_ac_nl=1, trx_list=0x7f45248c53e0) at 10.0/storage/innobase/trx/trx0i_s.cc:1298
#5  0x0000000000aea7fb in fetch_data_into_cache (cache=0x1d78e00) at 10.0/storage/innobase/trx/trx0i_s.cc:1359
#6  0x0000000000aea8b8 in trx_i_s_possibly_fetch_data_into_cache (cache=0x1d78e00) at 10.0/storage/innobase/trx/trx0i_s.cc:1391
#7  0x0000000000a4b2fd in trx_i_s_common_fill_table (thd=0x7f4524b85710, tables=0x33c62a8) at 10.0/storage/innobase/handler/i_s.cc:1252
#8  0x0000000000698fba in do_fill_table (thd=0x7f4524b85710, table_list=0x33c62a8, join_table=0x7f450c28bdc0) at 10.0/sql/sql_show.cc:7579
#9  0x00000000006993cc in get_schema_tables_result (join=0x33c7570, executed_place=PROCESSED_BY_JOIN_EXEC) at 10.0/sql/sql_show.cc:7686
#10 0x0000000000644005 in JOIN::exec_inner (this=0x33c7570) at 10.0/sql/sql_select.cc:2408
#11 0x0000000000643669 in JOIN::exec (this=0x33c7570) at 10.0/sql/sql_select.cc:2251
#12 0x0000000000646baa in mysql_select (thd=0x7f4524b85710, rref_pointer_array=0x7f4524b88a68, tables=0x33c62a8, wild_num=1, fields=..., conds=0x0, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2684619520, result=0x33c7550, unit=0x7f4524b88130, select_lex=0x7f4524b88808) at 10.0/sql/sql_select.cc:3188
#13 0x000000000063d4a0 in handle_select (thd=0x7f4524b85710, lex=0x7f4524b88080, result=0x33c7550, setup_tables_done_option=0) at 10.0/sql/sql_select.cc:362
#14 0x0000000000615c64 in execute_sqlcom_select (thd=0x7f4524b85710, all_tables=0x33c62a8) at 10.0/sql/sql_parse.cc:4937
#15 0x000000000060e2da in mysql_execute_command (thd=0x7f4524b85710) at 10.0/sql/sql_parse.cc:2421
#16 0x0000000000618520 in mysql_parse (thd=0x7f4524b85710, rawbuf=0x33c6038 "SELECT * FROM INFORMATION_SCHEMA . `INNODB_LOCKS`", length=49, parser_state=0x7f452814d540) at 10.0/sql/sql_parse.cc:6056
#17 0x000000000060b4cc in dispatch_command (command=COM_QUERY, thd=0x7f4524b85710, packet=0x7f4524b8ace1 "SELECT * FROM INFORMATION_SCHEMA . `INNODB_LOCKS`", packet_length=49) at 10.0/sql/sql_parse.cc:1216
#18 0x000000000060a6c5 in do_command (thd=0x7f4524b85710) at 10.0/sql/sql_parse.cc:945
#19 0x000000000070efc0 in do_handle_one_connection (thd_arg=0x7f4524b85710) at 10.0/sql/sql_connect.cc:1254
#20 0x000000000070e990 in handle_one_connection (arg=0x7f4524b85710) at 10.0/sql/sql_connect.cc:1168
#21 0x00007f45329daefc in start_thread (arg=0x7f452814e700) at pthread_create.c:304
#22 0x00007f453218a59d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112

Trying to get some variables.
Some pointers may be invalid and cause the dump to abort.
Query (0x33c6038): SELECT * FROM INFORMATION_SCHEMA . `INNODB_LOCKS`
Connection ID (thread ID): 9
Status: NOT_KILLED

branch: 10.0

revision-id: sergii@pisem.net-20121030171542-xbhcun8kfqykdy9l
date: 2012-10-30 18:15:42 +0100
revno: 3466

Could not reproduce on MariaDB 5.5, MySQL 5.6 revno 4229.

RQG grammar (is.yy):

query:
        SELECT * FROM database . _table ;
 
thread1:
        ALTER TABLE A ADD COLUMN _letter INTEGER |
        ALTER TABLE A DROP COLUMN _letter ;
 
database:
        { $last_database = $prng->arrayElement(['INFORMATION_SCHEMA']); return $last_database };
 

Run as

perl ./gentest.pl --grammar=is.yy --queries=100M --duration=600 --threads=8 --dsn=dbi:mysql:host=127.0.0.1:port=3306:user=root:database=test --gendata



 Comments   
Comment by Jan Lindström (Inactive) [ 2013-07-16 ]

I have at least one problem, I'm not in mariadb group, can't run the test and I can't copy the files (not in sudoers).

R: Jan

Comment by Jan Lindström (Inactive) [ 2013-07-16 ]

Fix candidate:

=== modified file 'storage/innobase/trx/trx0i_s.cc'
— storage/innobase/trx/trx0i_s.cc 2012-08-01 14:27:34 +0000
+++ storage/innobase/trx/trx0i_s.cc 2013-07-16 09:04:13 +0000
@@ -1290,7 +1290,10 @@

for (trx = UT_LIST_GET_FIRST(*trx_list);
trx != NULL;

  • trx = UT_LIST_GET_NEXT(trx_list, trx)) {
    + trx =
    + (trx_list == &trx_sys->mysql_trx_list
    + ? UT_LIST_GET_NEXT(mysql_trx_list, trx)
    + : UT_LIST_GET_NEXT(trx_list, trx))) {

i_s_trx_row_t* trx_row;
i_s_locks_row_t* requested_lock_row;

Comment by Elena Stepanova [ 2013-11-28 ]

I can't remember why the bug is on me, but from test results, it was fixed in 10.0.4, possibly by the 5.6.10 merge (easily reproducible as described on 10.0.3, not reproducible on 10.0.4). Closing as fixed.

Generated at Thu Feb 08 06:51:27 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.