Bug #46777 Crash in setup_tables() on concurrent DDL
Submitted: 18 Aug 2009 8:03 Modified: 15 May 2010 9:40
Reporter: Philip Stoev Email Updates:
Status: Can't repeat Impact on me:
None 
Category:MySQL Server Severity:S2 (Serious)
Version:5.4 OS:Any
Assigned to: Philip Stoev CPU Architecture:Any

[18 Aug 2009 8:03] Philip Stoev
Description:
When executing a concurrent workload involving a lot of DDL, mysqld crashed as follows:

# 16:13:14 #4  0x00000000006d1bb7 in setup_tables (thd=0x157c798, context=0x1678bc8, from_clause=0x1678ce0, tables=0x167a888, leaves=0x7f0eab148390,
# 16:13:14     select_insert=false) at sql_base.cc:7238
# 16:13:14 #5  0x00000000006d1e56 in setup_tables_and_check_access (thd=0x157c798, context=0x1678bc8, from_clause=0x1678ce0, tables=0x167a888, leaves=0x1678d20,
# 16:13:14     select_insert=false, want_access_first=1, want_access=1) at sql_base.cc:7320
# 16:13:14 #6  0x000000000071cc2e in JOIN::prepare (this=0x16d0740, rref_pointer_array=0x1678d60, tables_init=0x167a888, wild_num=0, conds_init=0x0, og_num=0,
# 16:13:14     order_init=0x0, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x1678b78, unit_arg=0x16784f0) at sql_select.cc:523
# 16:13:14 #7  0x000000000071e3f5 in mysql_select (thd=0x157c798, rref_pointer_array=0x1678d60, tables=0x167a888, wild_num=0, fields=@0x1678c80, conds=0x0, og_num=0,
# 16:13:14     order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2149338624, result=0x1679ae0, unit=0x16784f0, select_lex=0x1678b78)
# 16:13:14     at sql_select.cc:3070
# 16:13:14 #8  0x0000000000723d44 in handle_select (thd=0x157c798, lex=0x1678450, result=0x1679ae0, setup_tables_done_option=0) at sql_select.cc:306
# 16:13:14 #9  0x000000000067d14e in execute_sqlcom_select (thd=0x157c798, all_tables=0x167a888) at sql_parse.cc:4930
# 16:13:14 #10 0x000000000067e9ae in mysql_execute_command (thd=0x157c798) at sql_parse.cc:2112
# 16:13:14 #11 0x0000000000861491 in sp_instr_stmt::exec_core (this=0x167ae18, thd=0x157c798, nextp=0x7f0eab14a128) at sp_head.cc:2929
# 16:13:14 #12 0x00000000008616b7 in sp_lex_keeper::reset_lex_and_exec_core (this=0x167ae58, thd=0x157c798, nextp=0x7f0eab14a128, open_tables=false, instr=0x167ae18)
# 16:13:14     at sp_head.cc:2754
# 16:13:14 #13 0x000000000086759e in sp_instr_stmt::execute (this=0x167ae18, thd=0x157c798, nextp=0x7f0eab14a128) at sp_head.cc:2867
# 16:13:14 #14 0x00000000008637c5 in sp_head::execute (this=0x1677bf0, thd=0x157c798) at sp_head.cc:1249
# 16:13:14 #15 0x00000000008645ec in sp_head::execute_procedure (this=0x1677bf0, thd=0x157c798, args=0x157eca0) at sp_head.cc:1991
# 16:13:14 #16 0x00000000006855fc in mysql_execute_command (thd=0x157c798) at sql_parse.cc:4388
# 16:13:14 #17 0x000000000068726f in mysql_parse (thd=0x157c798, inBuf=0x15b2710 "CALL proc_1 ( @inout1 )", length=23, found_semicolon=0x7f0eab14bf00)
# 16:13:14     at sql_parse.cc:5945
# 16:13:14 #18 0x0000000000687e8a in dispatch_command (command=COM_QUERY, thd=0x157c798, packet=0x158a869 " CALL proc_1 ( @inout1 ) ", packet_length=25)
# 16:13:14     at sql_parse.cc:1062
# 16:13:14 #19 0x0000000000689356 in do_command (thd=0x157c798) at sql_parse.cc:744
# 16:13:14 #20 0x000000000067656b in handle_one_connection (arg=0x157c798) at sql_connect.cc:1163
# 16:13:14 #21 0x000000315b0073da in start_thread () from /lib64/libpthread.so.0
# 16:13:14 #22 0x000000315a4e627d in clone () from /lib64/libc.so.6

How to repeat:
It has happened more than once, however a repeatable test case for this crash is still being worked on.

RQG command line:

$ perl runall.pl \
  --grammar=conf/metadata_locking.yy \
  --gendata=conf/metadata_locking.zz \
  --queries=100K \
  --duration=600 \
  --basedir=/build/bzr/azalea-bugfixing \
  --validator=ResultsetProperties \
  --reporters=Deadlock,ErrorLog,Backtrace,Recovery,Shutdown \
  --mysqld=--innodb-lock-wait-timeout=1 \
  --mysqld=--transaction-isolation=REPEATABLE-READ \
  --engine=MEMORY \
  --rows=10 \
  --threads=8 \
  --mask=8173 \
  --queries=100000000 \
  --basedir=/build/bzr/azalea-bugfixing/ \
  --seed=1
[15 May 2010 9:40] Philip Stoev
No longer repeatable.