[MDEV-8329] MariaDB crashes when replicate_wild_ignore_table is set to NULL Created: 2015-06-18  Updated: 2019-10-04  Resolved: 2016-12-07

Status: Closed
Project: MariaDB Server
Component/s: Replication
Affects Version/s: 5.5, 10.0, 10.1
Fix Version/s: 5.5.54

Type: Bug Priority: Critical
Reporter: Daniel Yudelevich Assignee: Alexey Botchkov
Resolution: Fixed Votes: 0
Labels: None
Environment:

Centos 6


Issue Links:
Duplicate
duplicates MDEV-11049 Server crash when dynamic replication... Closed
Relates
relates to MDEV-20744 SET GLOBAL `replicate_do_db` = DEFAUL... Closed
Sprint: 10.1.20

 Description   

When trying to clear list of wildcards:

STOP SLAVE;
SET GLOBAL replicate_wild_ignore_table = null;
START SLAVE;

MariaDB crashes, following from logs:

50617 23:55:37 [ERROR] mysqld got signal 11 ;
This could be because you hit a bug. It is also possible that this binary
or one of the libraries it was linked against is corrupt, improperly built,
or misconfigured. This error can also be caused by malfunctioning hardware.
 
To report this bug, see http://kb.askmonty.org/en/reporting-bugs
 
We will try our best to scrape up some info that will hopefully help
diagnose the problem, but since we have already crashed,
something is definitely wrong and this may fail.
 
Server version: 10.0.19-MariaDB-log
key_buffer_size=67108864
read_buffer_size=4194304
max_used_connections=5
max_threads=202
thread_count=3
It is possible that mysqld could use up to
key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 14135174 K  bytes of memory
Hope that's ok; if not, decrease some variables in the equation.
 
Thread pointer: 0x0x7fdcae008008
Attempting backtrace. You can use the following information to find out
where mysqld died. If you see no messages after this, something went
terribly wrong...
stack_bottom = 0x7fdc9a960d00 thread_stack 0x30000
/usr/sbin/mysqld(my_print_stacktrace+0x2b)[0xb7bc1b]
/usr/sbin/mysqld(handle_fatal_signal+0x398)[0x72b318]
/lib64/libpthread.so.0[0x3ae6c0f710]
/lib64/libc.so.6[0x3ae693386f]
/usr/sbin/mysqld(my_strdup+0x1f)[0xb7842f]
/usr/sbin/mysqld(_ZN10Rpl_filter17parse_filter_ruleEPKcMS_FiS1_E+0x2f)[0x55d1ff]
/usr/sbin/mysqld(_ZN10Rpl_filter21set_wild_ignore_tableEPKc+0x39)[0x55d4a9]
/usr/sbin/mysqld(_ZN18Sys_var_rpl_filter16set_filter_valueEPKcP11Master_info+0x45)[0x6ad745]
/usr/sbin/mysqld(_ZN18Sys_var_rpl_filter13global_updateEP3THDP7set_var+0xd6)[0x6ad886]
/usr/sbin/mysqld[0x55e46c]
/usr/sbin/mysqld(_ZN7set_var6updateEP3THD+0x34)[0x55ec44]
/usr/sbin/mysqld(_Z17sql_set_variablesP3THDP4ListI12set_var_baseE+0x89)[0x55ff69]
/usr/sbin/mysqld(_Z21mysql_execute_commandP3THD+0x1f84)[0x5d5cb4]
/usr/sbin/mysqld[0x5da5e7]
/usr/sbin/mysqld(_Z16dispatch_command19enum_server_commandP3THDPcj+0x1c7c)[0x5dc9cc]
/usr/sbin/mysqld(_Z24do_handle_one_connectionP3THD+0x453)[0x699b53]
/usr/sbin/mysqld(handle_one_connection+0x42)[0x699c22]
/usr/sbin/mysqld[0xa715fd]
/lib64/libpthread.so.0[0x3ae6c079d1]
/lib64/libc.so.6(clone+0x6d)[0x3ae68e8b6d]
Trying to get some variables.
Some pointers may be invalid and cause the dump to abort.
Query (0x7fdcaf421020): is an invalid pointer
Connection ID (thread ID): 131
Status: NOT_KILLED
 
Optimizer switch: index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=on,derived_merge=on,derived_with_keys=on,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=on,semijoin_with_cache=on,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off,table_elimination=on,extended_keys=on,exists_to_in=on{quote}

The following works as expected:

STOP SLAVE;
SET GLOBAL replicate_wild_ignore_table = "";
START SLAVE;



 Comments   
Comment by Elena Stepanova [ 2015-06-18 ]

Thanks for the report.

Reproducible on old versions of 5.5 as well.
Not reproducible on MySQL because there it's not a variable, just a command-line option.

Stack trace from 5.5 commit d199a0ffb0aac86881ea2db7dd78bc07b438dc67

#3  <signal handler called>
#4  __strlen_sse2 () at ../sysdeps/x86_64/multiarch/../strlen.S:32
#5  0x0000000000ce306a in my_strdup (from=0x0, my_flags=16) at 5.5/mysys/my_malloc.c:138
#6  0x00000000005a0933 in Rpl_filter::parse_filter_rule (this=0x7ff76385c220, spec=0x0, add=(int (Rpl_filter::*)(Rpl_filter * const, const char *)) 0x5a0d30 <Rpl_filter::add_wild_ignore_table(char const*)>) at 5.5/sql/rpl_filter.cc:282
#7  0x00000000005a0eca in Rpl_filter::set_wild_ignore_table (this=0x7ff76385c220, table_spec=0x0) at 5.5/sql/rpl_filter.cc:430
#8  0x0000000000749dbf in Sys_var_rpl_filter::set_filter_value (this=0x156daa0, value=0x0) at 5.5/sql/sys_vars.cc:3394
#9  0x0000000000749c5e in Sys_var_rpl_filter::global_update (this=0x156daa0, thd=0x7ff756523060, var=0x7ff7598521f0) at 5.5/sql/sys_vars.cc:3363
#10 0x00000000005a2503 in sys_var::update (this=0x156daa0, thd=0x7ff756523060, var=0x7ff7598521f0) at 5.5/sql/set_var.cc:199
#11 0x00000000005a35b2 in set_var::update (this=0x7ff7598521f0, thd=0x7ff756523060) at 5.5/sql/set_var.cc:667
#12 0x00000000005a317a in sql_set_variables (thd=0x7ff756523060, var_list=0x7ff756527048) at 5.5/sql/set_var.cc:570
#13 0x00000000006380af in mysql_execute_command (thd=0x7ff756523060) at 5.5/sql/sql_parse.cc:3255
#14 0x000000000063f01a in mysql_parse (thd=0x7ff756523060, rawbuf=0x7ff759852078 "SET GLOBAL replicate_wild_ignore_table = null", length=45, parser_state=0x7ff766257620) at 5.5/sql/sql_parse.cc:5909
#15 0x0000000000632c5d in dispatch_command (command=COM_QUERY, thd=0x7ff756523060, packet=0x7ff75652d061 "SET GLOBAL replicate_wild_ignore_table = null", packet_length=45) at 5.5/sql/sql_parse.cc:1079
#16 0x0000000000631de9 in do_command (thd=0x7ff756523060) at 5.5/sql/sql_parse.cc:793
#17 0x0000000000734a99 in do_handle_one_connection (thd_arg=0x7ff756523060) at 5.5/sql/sql_connect.cc:1269
#18 0x0000000000734813 in handle_one_connection (arg=0x7ff756523060) at 5.5/sql/sql_connect.cc:1185
#19 0x0000000000b6d539 in pfs_spawn_thread (arg=0x7ff756444260) at 5.5/storage/perfschema/pfs.cc:1015
#20 0x00007ff765fb5b50 in start_thread (arg=<optimized out>) at pthread_create.c:304
#21 0x00007ff76426b95d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#22 0x0000000000000000 in ?? ()

Comment by Brian Evans [ 2016-10-13 ]

It seems that several dynamic strings in replication cause the crash.

replicate_do_db, replicate_do_table, replicate_ignore_db, replicate_ignore_table, replicate_wild_ignore_table, replicate_wild_do_table

Comment by Alexey Botchkov [ 2016-12-06 ]

http://lists.askmonty.org/pipermail/commits/2016-December/010230.html

Comment by Sergei Golubchik [ 2016-12-07 ]

ok to push

Comment by Sergei Golubchik [ 2016-12-07 ]

note, that it's a 5.5 bug

Comment by Alexey Botchkov [ 2016-12-07 ]

Pushed into 5.5

Generated at Thu Feb 08 07:26:20 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.