Description:
Lots of testcases are failing due to rpl filter related warning "[Warning] There are per-channel replication filter(s) configured for channel '' which does not exist. The filter(s) have been discarded." on macOS platform when compiled with -DWITH_INNODB_MEMCACHED=1 and having --debug-server.
Links:-
http://pb2.no.oracle.com/html/logviewer.html?f=23412146.log&b=11216716
http://pb2.no.oracle.com/html/logviewer.html?f=23501256.log&b=11251502
http://pb2.no.oracle.com/html/logviewer.html?f=23609398.log&b=11293463
Testcase "binlog_start_slave_try.test" results into ASSERT/CRASH failures post warning.
1. mysqld.1.err:-
=================
2017-06-02T15:39:16.579448Z 0 [ERROR] Failed to start slave threads for channel ''
2017-06-02T15:39:16.580806Z 0 [Warning] There are per-channel replication filter(s) configured for channel '' which does not exist. The filter(s) have been discarded.
.....
Assertion failed: (m_type == PFS_CLASS_RWLOCK), function is_shared_exclusive, file /home/nnarendr/repo_for_manual_testing/mysql-trunk/storage/perfschema/pfs_instr_class.h, line 186.
15:39:16 UTC - mysqld got signal 6 ;
.....
.....
Thread pointer: 0x7fc460040000
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 = 700010a9fde8 thread_stack 0x46000
0 mysqld 0x0000000109f503b8 my_print_stacktrace + 88
1 mysqld 0x00000001096f6a91 handle_fatal_signal + 913
2 libsystem_platform.dylib 0x00007fff8c230bba _sigtramp + 26
3 ??? 0x00007fc45b8965a0 0x0 + 140481326048672
4 libsystem_c.dylib 0x00007fff8c0b8440 abort + 129
5 libsystem_c.dylib 0x00007fff8c07f8b3 basename_r + 0
6 mysqld 0x000000010a560948 PFS_instr_class::is_shared_exclusive() const + 72
7 mysqld 0x000000010a553f18 pfs_start_rwlock_wait_v1(PSI_rwlock_locker_state_v1*, PSI_rwlock*, PSI_rwlock_operation, char const*, unsigned int) + 376
8 mysqld 0x000000010a553d90 pfs_start_rwlock_rdwait_v1 + 160
9 mysqld 0x0000000108ef1093 inline_mysql_rwlock_rdlock(st_mysql_rwlock*, char const*, unsigned int) + 67
10 mysqld 0x0000000108ef0f1f Checkable_rwlock::rdlock() + 47
11 mysqld 0x0000000109ec792c Rpl_filter::rdlock() + 28
12 mysqld 0x0000000109eb4898 show_slave_status_send_data(THD*, Master_info*, char*, char*) + 1544
13 mysqld 0x0000000109eb0fb5 show_slave_status(THD*) + 2053
14 mysqld 0x0000000109eb5f88 show_slave_status_cmd(THD*) + 104
15 mysqld 0x00000001091381fa mysql_execute_command(THD*, bool) + 6922
16 mysqld 0x0000000109134aca mysql_parse(THD*, Parser_state*) + 1418
17 mysqld 0x000000010913172e dispatch_command(THD*, COM_DATA const*, enum_server_command) + 5998
18 mysqld 0x0000000109133914 do_command(THD*) + 1012
19 mysqld 0x00000001096ce428 handle_connection(void*) + 488
20 mysqld 0x000000010a5520c5 pfs_spawn_thread(void*) + 405
21 libsystem_pthread.dylib 0x00007fff8c23aabb _pthread_body + 180
22 libsystem_pthread.dylib 0x00007fff8c23aa07 _pthread_body + 0
23 libsystem_pthread.dylib 0x00007fff8c23a231 thread_start + 13
Trying to get some variables.
Some pointers may be invalid and cause the dump to abort.
Query (7fc45d00de30): SHOW SLAVE STATUS
Connection ID (thread ID): 6
Status: NOT_KILLED
2. Another instance of assert:-
================================
2017-06-02T16:28:51.339417Z 0 [ERROR] Failed to start slave threads for channel ''
2017-06-02T16:28:51.340839Z 0 [Warning] There are per-channel replication filter(s) configured for channel '' which does not exist. The filter(s) have been discarded.
2017-06-02T16:28:51.358262Z 0 [Note] /home/nnarendr/repo_for_manual_testing/mysql-trunk/sql/mysqld: ready for connections. Version: '8.0.2-dmr-debug-log' socket: '/home/nnarendr/repo_for_manual_testing/mysql-trunk/mysql-test/var/tmp/mysqld.1.sock' port: 13040 Source distribution
Assertion failed: (get_state() >= 0), function assert_no_wrlock, file /home/nnarendr/repo_for_manual_testing/mysql-trunk/sql/rpl_gtid.h, line 541.
16:28:51 UTC - mysqld got signal 6 ;
.....
.....
Thread pointer: 0x7f89a489ca00
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 = 700001d96de8 thread_stack 0x46000
0 mysqld 0x00000001068b93b8 my_print_stacktrace + 88
1 mysqld 0x000000010605fa91 handle_fatal_signal + 913
2 libsystem_platform.dylib 0x00007fff8c230bba _sigtramp + 26
3 mysqld 0x00000001080f7720 THR_LOCK_init_settings + 0
4 libsystem_c.dylib 0x00007fff8c0b8440 abort + 129
5 libsystem_c.dylib 0x00007fff8c07f8b3 basename_r + 0
6 mysqld 0x000000010585a12b Checkable_rwlock::assert_no_wrlock() const + 75
7 mysqld 0x0000000105859f2b Checkable_rwlock::rdlock() + 59
8 mysqld 0x000000010683092c Rpl_filter::rdlock() + 28
9 mysqld 0x000000010681d898 show_slave_status_send_data(THD*, Master_info*, char*, char*) + 1544
10 mysqld 0x0000000106819fb5 show_slave_status(THD*) + 2053
11 mysqld 0x000000010681ef88 show_slave_status_cmd(THD*) + 104
12 mysqld 0x0000000105aa11fa mysql_execute_command(THD*, bool) + 6922
13 mysqld 0x0000000105a9daca mysql_parse(THD*, Parser_state*) + 1418
14 mysqld 0x0000000105a9a72e dispatch_command(THD*, COM_DATA const*, enum_server_command) + 5998
15 mysqld 0x0000000105a9c914 do_command(THD*) + 1012
16 mysqld 0x0000000106037428 handle_connection(void*) + 488
17 mysqld 0x0000000106ebb0c5 pfs_spawn_thread(void*) + 405
18 libsystem_pthread.dylib 0x00007fff8c23aabb _pthread_body + 180
19 libsystem_pthread.dylib 0x00007fff8c23aa07 _pthread_body + 0
20 libsystem_pthread.dylib 0x00007fff8c23a231 thread_start + 13
Trying to get some variables.
Some pointers may be invalid and cause the dump to abort.
Query (7f89a489a830): SHOW SLAVE STATUS
Connection ID (thread ID): 6
Status: NOT_KILLED
How to repeat:
Steps to repro(macOS):-
========================
1. Cmake:
$ rm CMakeCache.txt cmake_install.cmake Makefile; rm -rf CMakeFiles;
$ cmake -DWITH_DEBUG=1 -DENABLE_DOWNLOADS=1 -DWITH_EMBEDDED_SERVER=0 -DCMAKE_INSTALL_PREFIX=$PWD/install -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/global/share/ -DWITH_INNODB_MEMCACHED=1;
$ make -j8 install;
2.Run MTR commands:-
$ ./mtr --suite=funcs_2 --debug-server. (This one may or may not fail always.)
$ perl mysql-test-run.pl --force --timer --debug-server --parallel=auto --experimental=collections/default.experimental --comment=normal-debug --report-features --skip-test-list=collections/disabled-daily.list --mysqld=--innodb_autoextend_increment=64 --unit-tests-report --parallel=4
$ (Quick test) perl mysql-test-run.pl --force --timer binlog_start_slave_try.test --debug-server