Bug #86571 RPL FILTERS WARNINGS & ASSERTS (get_state() >= 0), (m_type == PFS_CLASS_RWLOCK)
Submitted: 3 Jun 2017 5:24 Modified: 11 Jul 2017 11:27
Reporter: Narendra Singh Chauhan Email Updates:
Status: Duplicate Impact on me:
None 
Category:MySQL Server: Replication Severity:S3 (Non-critical)
Version:8.0.2 OS:Any
Assigned to: CPU Architecture:Any

[3 Jun 2017 5:24] Narendra Singh Chauhan
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
[11 Jul 2017 11:27] Erlend Dahl
Duplicate of

Bug#86711 OS X: Assertion failed: (table_share->tmp_table != ... adding new SQL statement