Bug #89503 innodb_purge_stop_now=1 causes purge_sys->n_stop == 0 on shutdown
Submitted: 1 Feb 2018 23:46 Modified: 25 Feb 2018 21:20
Reporter: Roel Van de Paar Email Updates:
Status: Verified Impact on me:
None 
Category:MySQL Server: InnoDB storage engine Severity:S6 (Debug Builds)
Version:8.0.4rc, 5.7.21 OS:Any
Assigned to: CPU Architecture:Any

[1 Feb 2018 23:46] Roel Van de Paar
Description:
2018-02-01T22:59:19.291583Z 0 [System] [MY-010931] /sda/MS270118-mysql-8.0.4-rc-linux-x86_64-debug/bin/mysqld: ready for connections. Version: '8.0.4-rc-debug-log'  socket: '/sda/MS270118-mysql-8.0.4-rc-linux-x86_64-debug/socket.sock'  port: 19806  MySQL Community Server (GPL).
2018-02-01T23:00:10.553546Z 0 [ERROR] [MY-000000] InnoDB: Assertion failure: srv0srv.cc:2832:purge_sys->n_stop == 0
InnoDB: thread 140358423934720

#0  0x00007fa7d079a9b1 in __pthread_kill (threadid=<optimized out>, signo=6) at ../nptl/sysdeps/unix/sysv/linux/pthread_kill.c:61
#1  0x00007fa7d468261c in my_write_core (sig=6) at /git/MS-8.0.4rc_dbg/mysys/stacktrace.cc:303
#2  0x00007fa7d380e230 in handle_fatal_signal (sig=6) at /git/MS-8.0.4rc_dbg/sql/signal_handler.cc:241
#3  <signal handler called>
#4  0x00007fa7cf34f1f7 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
#5  0x00007fa7cf3508e8 in __GI_abort () at abort.c:90
#6  0x00007fa7d4a16479 in ut_dbg_assertion_failed (expr=0x7fa7d59e3cbd "purge_sys->n_stop == 0", 
    file=0x7fa7d59e2e20 "/git/MS-8.0.4rc_dbg/storage/innobase/srv/srv0srv.cc", line=2832)
    at /git/MS-8.0.4rc_dbg/storage/innobase/ut/ut0dbg.cc:83
#7  0x00007fa7d49a87e5 in srv_purge_coordinator_suspend (slot=0x7fa7bc493520, rseg_history_len=3)
    at /git/MS-8.0.4rc_dbg/storage/innobase/srv/srv0srv.cc:2832
#8  0x00007fa7d49a8b54 in srv_purge_coordinator_thread () at /git/MS-8.0.4rc_dbg/storage/innobase/srv/srv0srv.cc:2913
#9  0x00007fa7d489a26e in std::__invoke_impl<void, void (*&)()> (__f=@0x7fa7bdffec80: 0x7fa7d49a897b <srv_purge_coordinator_thread()>)
    at /usr/include/c++/7/bits/invoke.h:60
#10 0x00007fa7d4899cc8 in std::__invoke<void (*&)()> (__fn=@0x7fa7bdffec80: 0x7fa7d49a897b <srv_purge_coordinator_thread()>)
    at /usr/include/c++/7/bits/invoke.h:95
#11 0x00007fa7d4899804 in std::_Bind<void (*())()>::__call<void>(std::tuple<>&&, std::_Index_tuple<>) (this=0x7fa7bdffec80, 
    __args=<unknown type in /sda/MS270118-mysql-8.0.4-rc-linux-x86_64-debug/bin/mysqld, CU 0xc13920f, DIE 0xc1c39ae>)
    at /usr/include/c++/7/functional:467
#12 0x00007fa7d4898e27 in std::_Bind<void (*())()>::operator()<, void>() (this=0x7fa7bdffec80) at /usr/include/c++/7/functional:551
#13 0x00007fa7d4898343 in Runnable::operator()<void (*)()>(void (*&&)()) (this=0x7fa7c63fe590, 
    f=<unknown type in /sda/MS270118-mysql-8.0.4-rc-linux-x86_64-debug/bin/mysqld, CU 0xc13920f, DIE 0xc1c703a>)
    at /git/MS-8.0.4rc_dbg/storage/innobase/include/os0thread-create.h:109
#14 0x00007fa7d48973e0 in std::__invoke_impl<void, Runnable, void (*)()>(std::__invoke_other, Runnable&&, void (*&&)()) (
    __f=<unknown type in /sda/MS270118-mysql-8.0.4-rc-linux-x86_64-debug/bin/mysqld, CU 0xc13920f, DIE 0xc1c9394>, 
    __args#0=<unknown type in /sda/MS270118-mysql-8.0.4-rc-linux-x86_64-debug/bin/mysqld, CU 0xc13920f, DIE 0xc1c93b0>)
    at /usr/include/c++/7/bits/invoke.h:60
#15 0x00007fa7d489656f in std::__invoke<Runnable, void (*)()>(Runnable&&, void (*&&)()) (
    __fn=<unknown type in /sda/MS270118-mysql-8.0.4-rc-linux-x86_64-debug/bin/mysqld, CU 0xc13920f, DIE 0xc1cc5f1>, 
    __args#0=<unknown type in /sda/MS270118-mysql-8.0.4-rc-linux-x86_64-debug/bin/mysqld, CU 0xc13920f, DIE 0xc1cc60d>)
    at /usr/include/c++/7/bits/invoke.h:95
#16 0x00007fa7d489a371 in std::thread::_Invoker<std::tuple<Runnable, void (*)()> >::_M_invoke<0ul, 1ul> (this=0x7fa7c63fe588)
    at /usr/include/c++/7/thread:234
#17 0x00007fa7d489a312 in std::thread::_Invoker<std::tuple<Runnable, void (*)()> >::operator() (this=0x7fa7c63fe588)
    at /usr/include/c++/7/thread:243
#18 0x00007fa7d489a2e2 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<Runnable, void (*)()> > >::_M_run (
    this=0x7fa7c63fe580) at /usr/include/c++/7/thread:186
#19 0x00007fa7cfcaea6f in std::execute_native_thread_routine (__p=0x7fa7c63fe580)
    at ../../../../../gcc-7.2.0/libstdc++-v3/src/c++11/thread.cc:83
#20 0x00007fa7d0795e25 in start_thread (arg=0x7fa7bdfff700) at pthread_create.c:308
#21 0x00007fa7cf41234d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:113

How to repeat:
SET GLOBAL innodb_purge_stop_now=1;
Then shutdown the server using mysqladmin shutdown (will hang)
Wait a few minutes, CTRL+C, check error log
[2 Feb 2018 6:50] MySQL Verification Team
Hello Roel,

Thank you for the report and feedback.
Observed that debug build is affected.

Thanks,
Umesh
[2 Feb 2018 6:56] MySQL Verification Team
-- This is even observed with 5.7.21 debug build

(gdb) bt
#0  0x00007f658d515771 in pthread_kill () from /lib64/libpthread.so.0
#1  0x000000000185f6ad in my_write_core (sig=6) at /export/home/pb2/build/sb_0-25673884-1510161542.84/mysqlcom-pro-5.7.21/mysys/stacktrace.c:249
#2  0x0000000000ea9966 in handle_fatal_signal (sig=6) at /export/home/pb2/build/sb_0-25673884-1510161542.84/mysqlcom-pro-5.7.21/sql/signal_handler.cc:220
#3  <signal handler called>
#4  0x00007f658bf0f5d7 in raise () from /lib64/libc.so.6
#5  0x00007f658bf10cc8 in abort () from /lib64/libc.so.6
#6  0x0000000001addd64 in ut_dbg_assertion_failed (expr=0x2313b7b "purge_sys->n_stop == 0",
    file=0x2312ef0 "/export/home/pb2/build/sb_0-25673884-1510161542.84/mysqlcom-pro-5.7.21/storage/innobase/srv/srv0srv.cc", line=2709)
    at /export/home/pb2/build/sb_0-25673884-1510161542.84/mysqlcom-pro-5.7.21/storage/innobase/ut/ut0dbg.cc:67
#7  0x0000000001a74ce0 in srv_purge_coordinator_suspend (slot=0x4a03290, rseg_history_len=0)
    at /export/home/pb2/build/sb_0-25673884-1510161542.84/mysqlcom-pro-5.7.21/storage/innobase/srv/srv0srv.cc:2709
#8  0x0000000001a75047 in srv_purge_coordinator_thread (arg=0x0) at /export/home/pb2/build/sb_0-25673884-1510161542.84/mysqlcom-pro-5.7.21/storage/innobase/srv/srv0srv.cc:2792
#9  0x00007f658d510df5 in start_thread () from /lib64/libpthread.so.0
#10 0x00007f658bfd060d in clone () from /lib64/libc.so.6
(gdb)
[25 Feb 2018 21:20] Roel Van de Paar
Any updates?