[MDEV-20744] SET GLOBAL `replicate_do_db` = DEFAULT causes crash Created: 2019-10-04  Updated: 2024-02-02  Resolved: 2020-10-23

Status: Closed
Project: MariaDB Server
Component/s: Variables
Affects Version/s: 5.5, 10.0, 10.1, 10.4.8, 10.2, 10.3, 10.4
Fix Version/s: 10.1.48, 10.2.35, 10.3.26, 10.4.16, 10.5.7

Type: Bug Priority: Critical
Reporter: Brad Chin (Inactive) Assignee: Alexey Botchkov
Resolution: Fixed Votes: 0
Labels: None
Environment:

CentOS 7


Issue Links:
Relates
relates to MDEV-8329 MariaDB crashes when replicate_wild_i... Closed

 Description   

I started my MariaDB 10.4.8 server as so

/qa/sw/mariadb/10.4/bin/mysqld --basedir=/opt/krobix/qa/bchin_oakey/mysql/goldDB-10-1570164683 --sql-mode= --sync-binlog=0 --slave-net-timeout=3600 --secure-file-priv= --datadir /opt/krobix/qa/bchin_oakey/mysql/goldDB-10-1570164683/data --port=60477 --max_connect_errors=999999 --server-id=60477 --user=mysql --skip-grant-tables --default-storage-engine=innodb --character-set-server=utf8 --socket /opt/krobix/qa/bchin_oakey/mysql/goldDB-10-1570164683/mysql.sock --innodb_lock_wait_timeout=300 --verbose

I connected to the server with the following command:

[root@oak013blue ~]# which mysql
/usr/bin/mysql
[root@oak013blue ~]# mysql --version
mysql Ver 15.1 Distrib 5.5.60-MariaDB, for Linux (x86_64) using readline 5.1
[root@oak013blue ~]# mysql -u root -h 127.0.0.1 -P 60477

Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 10
Server version: 10.4.8-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> SET GLOBAL `replicate_do_db` = DEFAULT;
ERROR 2013 (HY000): Lost connection to MySQL server during query
MariaDB [(none)]> Bye

here is the trace + other info:

Server version: 10.4.8-MariaDB
key_buffer_size=134217728
read_buffer_size=131072
max_used_connections=1
max_threads=153
thread_count=7
It is possible that mysqld could use up to
key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 467735 K bytes of memory
Hope that's ok; if not, decrease some variables in the equation.

Thread pointer: 0x7f0e080009a8
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 = 0x7f0e78095ec0 thread_stack 0x49000
/qa/sw/mariadb/10.4/bin/mysqld(my_print_stacktrace+0x2b)[0x556b03a1609b]
mysys/stacktrace.c:270(my_print_stacktrace)[0x556b034745f7]
sigaction.c:0(__restore_rt)[0x7f0e7bd9d5d0]
:0(__strlen_sse2_pminub)[0x7f0e7b322aa5]
/qa/sw/mariadb/10.4/bin/mysqld(my_strdup+0x1f)[0x556b03a126ff]
mysys/my_malloc.c:242(my_strdup)[0x556b031dda9a]
sql/rpl_filter.cc:288(Rpl_filter::parse_filter_rule(char const*, int (Rpl_filter::)(char const)))[0x556b031de706]
sql/rpl_filter.cc:538(Rpl_filter::set_do_db(char const*))[0x556b03375593]
sql/sys_vars.cc:5008(Sys_var_rpl_filter::set_filter_value(char const*, Master_info*))[0x556b033756b1]
sql/sys_vars.cc:4990(Sys_var_rpl_filter::global_update(THD*, set_var*))[0x556b031e1902]
sql/set_var.cc:209(sys_var::update(THD*, set_var*))[0x556b031e1dc5]
sql/set_var.cc:838(set_var::update(THD*))[0x556b031e2ce9]
sql/sql_list.h:440(base_list_iterator::next_fast())[0x556b0328e1af]
sql/sql_parse.cc:4949(mysql_execute_command(THD*))[0x556b03290b31]
sql/sql_parse.cc:10314(mysql_parse(THD*, char*, unsigned int, Parser_state*, bool, bool))[0x556b03292609]
sql/sql_lex.h:4686(Parser_state::reset(char*, unsigned int))[0x556b03293aff]
sql/sql_parse.cc:1360(do_command(THD*))[0x556b03362ae2]
sql/sql_connect.cc:1412(do_handle_one_connection(CONNECT*))[0x556b03362bc4]
pthread_create.c:0(start_thread)[0x7f0e7bd95dd5]
/lib64/libc.so.6(clone+0x6d)[0x7f0e7b2b202d]

Trying to get some variables.
Some pointers may be invalid and cause the dump to abort.
Query (0x7f0e08012c70): is an invalid pointer
Connection ID (thread ID): 12
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=on,table_elimination=on,extended_keys=on,exists_to_in=on,orderby_uses_equalities=on,condition_pushdown_for_derived=on,split_materialized=on,condition_pushdown_for_subquery=on,rowid_filter=on,condition_pushdown_from_having=on

The manual page at http://dev.mysql.com/doc/mysql/en/crashing.html contains
information that should help you find out what is causing the crash.

We think the query pointer is invalid, but we will try to print it anyway.
Query: SET GLOBAL `replicate_do_db` = DEFAULT

Writing a core file...
Working directory at /opt/krobix/qa/bchin_oakey/mysql/goldDB-10-1570163197/data
Resource Limits:
Limit Soft Limit Hard Limit Units
Max cpu time unlimited unlimited seconds
Max file size unlimited unlimited bytes
Max data size unlimited unlimited bytes
Max stack size 8388608 unlimited bytes
Max core file size unlimited unlimited bytes
Max resident set unlimited unlimited bytes
Max processes 256828 256828 processes
Max open files 4190 4190 files
Max locked memory 65536 65536 bytes
Max address space unlimited unlimited bytes
Max file locks unlimited unlimited locks
Max pending signals 256828 256828 signals
Max msgqueue size 819200 819200 bytes
Max nice priority 0 0
Max realtime priority 0 0
Max realtime timeout unlimited unlimited us
Core pattern: core

And I didn't see a core dump under "data"



 Comments   
Comment by Alice Sherepa [ 2019-10-04 ]

Thank you very much for the report!
I reproduced on MariaDB 5.5-10.4

SET GLOBAL replicate_do_db=DEFAULT;

5.5 d481f69a7de919f9d699

/5.5/sql/sys_vars.h:582: virtual void Sys_var_rpl_filter::global_save_default(THD*, set_var*): Assertion `(0)' failed.
 
#3  <signal handler called>
#4  0x00007f9ca97e8428 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:54
#5  0x00007f9ca97ea02a in __GI_abort () at abort.c:89
#6  0x00007f9ca97e0bd7 in __assert_fail_base (fmt=<optimized out>, assertion=assertion@entry=0xdb7723 "(0)", file=file@entry=0xdb7700 "/5.5/sql/sys_vars.h", line=line@entry=582, function=function@entry=0xdc0640 <Sys_var_rpl_filter::global_save_default(THD*, set_var*)::__PRETTY_FUNCTION__> "virtual void Sys_var_rpl_filter::global_save_default(THD*, set_var*)") at assert.c:92
#7  0x00007f9ca97e0c82 in __GI___assert_fail (assertion=0xdb7723 "(0)", file=0xdb7700 "/5.5/sql/sys_vars.h", line=582, function=0xdc0640 <Sys_var_rpl_filter::global_save_default(THD*, set_var*)::__PRETTY_FUNCTION__> "virtual void Sys_var_rpl_filter::global_save_default(THD*, set_var*)") at assert.c:101
#8  0x0000000000746ba6 in Sys_var_rpl_filter::global_save_default (this=0x1557c40 <Sys_replicate_do_db>, thd=0x7f9ca3f8f060, var=0x7f9c9ad52148) at /5.5/sql/sys_vars.h:582
#9  0x00000000005730c7 in sys_var::set_default (this=0x1557c40 <Sys_replicate_do_db>, thd=0x7f9ca3f8f060, var=0x7f9c9ad52148) at /5.5/sql/set_var.cc:260
#10 0x0000000000573d68 in set_var::update (this=0x7f9c9ad52148, thd=0x7f9ca3f8f060) at /5.5/sql/set_var.cc:667
#11 0x000000000057391a in sql_set_variables (thd=0x7f9ca3f8f060, var_list=0x7f9ca3f93070) at /5.5/sql/set_var.cc:570
#12 0x0000000000612c70 in mysql_execute_command (thd=0x7f9ca3f8f060) at /5.5/sql/sql_parse.cc:3251
#13 0x000000000061a47c in mysql_parse (thd=0x7f9ca3f8f060, rawbuf=0x7f9c9ad52078 "SET GLOBAL replicate_do_db=DEFAULT", length=34, parser_state=0x7f9cab063660) at /5.5/sql/sql_parse.cc:5929
#14 0x000000000060d3c4 in dispatch_command (command=COM_QUERY, thd=0x7f9ca3f8f060, packet=0x7f9ca2dbb061 "SET GLOBAL replicate_do_db=DEFAULT", packet_length=34) at /5.5/sql/sql_parse.cc:1067
#15 0x000000000060c529 in do_command (thd=0x7f9ca3f8f060) at /5.5/sql/sql_parse.cc:793
#16 0x0000000000723fea in do_handle_one_connection (thd_arg=0x7f9ca3f8f060) at /5.5/sql/sql_connect.cc:1268
#17 0x0000000000723d53 in handle_one_connection (arg=0x7f9ca3f8f060) at /5.5/sql/sql_connect.cc:1184
#18 0x0000000000cc6f9f in pfs_spawn_thread (arg=0x7f9ca3fb2a20) at /5.5/storage/perfschema/pfs.cc:1015
#19 0x00007f9caa4136ba in start_thread (arg=0x7f9cab064700) at pthread_create.c:333
#20 0x00007f9ca98ba41d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Comment by Alexey Botchkov [ 2020-10-23 ]

https://github.com/MariaDB/server/commit/94b493571a8ba8f30c97a5c30fc641171ca48e8a

Generated at Thu Feb 08 09:01:50 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.