Details
Description
This can be observed in the following stacktrace that was seen in a maxctrl_basic test run:
Id Target Id Frame
|
* 1 Thread 0x7faa3168b040 (LWP 129656) "maxscale" 0x00007faa27ba16cd in __pthread_timedjoin_ex () from /lib64/libpthread.so.0
|
2 Thread 0x7faa1a8d1700 (LWP 129657) "WD-Notifier" 0x00007faa24b47534 in read () from /lib64/libc.so.6
|
3 Thread 0x7faa17c16700 (LWP 129660) "UserManager" 0x00007faa27ba8dd6 in do_futex_wait.constprop () from /lib64/libpthread.so.0
|
4 Thread 0x7faa173ff700 (LWP 129661) "UserManager" 0x00007faa27ba67da in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
|
|
Thread 4 (Thread 0x7faa173ff700 (LWP 129661)):
|
#0 0x00007faa27ba67da in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
|
#1 0x00007faa2bfcaf2c in __gthread_cond_timedwait (__cond=0x615000010720, __mutex=0x615000010750, __abs_timeout=0x7faa173fde70) at /usr/include/c++/8/x86_64-redhat-linux/bits/gthr-default.h:871
|
#2 0x00007faa2bfd321b in std::condition_variable::__wait_until_impl<std::chrono::duration<long, std::ratio<1l, 1000000000l> > > (this=0x615000010720, __lock=..., __atime=...) at /usr/include/c++/8/condition_variable:178
|
#3 0x00007faa2bfd15bd in std::condition_variable::wait_until<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > (this=0x615000010720, __lock=..., __atime=...) at /usr/include/c++/8/condition_variable:119
|
#4 0x00007faa2bfc9ffe in std::condition_variable::wait_until<std::chrono::_V2::steady_clock, std::chrono::duration<long int, std::ratio<1, 1000000000> >, maxscale::BaseUserManager::updater_thread_function()::<lambda()> >(std::unique_lock<std::mutex> &, const std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1, 1000000000> > > &, maxscale::BaseUserManager::<lambda()>) (this=0x615000010720, __lock=..., __atime=..., __p=...) at /usr/include/c++/8/condition_variable:129
|
#5 0x00007faa2bfc7db3 in maxscale::BaseUserManager::updater_thread_function (this=0x615000010700) at /home/timofey_turenko_mariadb_com/MaxScale/server/core/base_user_manager.cc:200
|
#6 0x00007faa2bfc549b in maxscale::BaseUserManager::<lambda()>::operator()(void) const (__closure=0x60200000b1b8) at /home/timofey_turenko_mariadb_com/MaxScale/server/core/base_user_manager.cc:59
|
#7 0x00007faa2bfca3e7 in std::__invoke_impl<void, maxscale::BaseUserManager::start()::<lambda()> >(std::__invoke_other, maxscale::BaseUserManager::<lambda()> &&) (__f=...) at /usr/include/c++/8/bits/invoke.h:60
|
#8 0x00007faa2bfc9c04 in std::__invoke<maxscale::BaseUserManager::start()::<lambda()> >(maxscale::BaseUserManager::<lambda()> &&) (__fn=...) at /usr/include/c++/8/bits/invoke.h:95
|
#9 0x00007faa2bfcacd3 in std::thread::_Invoker<std::tuple<maxscale::BaseUserManager::start()::<lambda()> > >::_M_invoke<0>(std::_Index_tuple<0>) (this=0x60200000b1b8) at /usr/include/c++/8/thread:244
|
#10 0x00007faa2bfcac1d in std::thread::_Invoker<std::tuple<maxscale::BaseUserManager::start()::<lambda()> > >::operator()(void) (this=0x60200000b1b8) at /usr/include/c++/8/thread:253
|
#11 0x00007faa2bfcabdc in std::thread::_State_impl<std::thread::_Invoker<std::tuple<maxscale::BaseUserManager::start()::<lambda()> > > >::_M_run(void) (this=0x60200000b1b0) at /usr/include/c++/8/thread:196
|
#12 0x00007faa26d91b23 in execute_native_thread_routine () from /lib64/libstdc++.so.6
|
#13 0x00007faa27ba01ca in start_thread () from /lib64/libpthread.so.0
|
#14 0x00007faa24a528d3 in clone () from /lib64/libc.so.6
|
|
Thread 3 (Thread 0x7faa17c16700 (LWP 129660)):
|
#0 0x00007faa27ba8dd6 in do_futex_wait.constprop () from /lib64/libpthread.so.0
|
#1 0x00007faa27ba8ec8 in __new_sem_wait_slow.constprop.0 () from /lib64/libpthread.so.0
|
#2 0x00007faa2bfcbf36 in maxbase::Semaphore::wait (this=0x7faa17c14fa0, signal_approach=maxbase::Semaphore::IGNORE_SIGNALS) at /home/timofey_turenko_mariadb_com/MaxScale/maxutils/maxbase/include/maxbase/semaphore.hh:145
|
#3 0x00007faa2c566856 in maxbase::Semaphore::wait_n (this=0x7faa17c14fa0, n_wait=0, signal_approach=maxbase::Semaphore::IGNORE_SIGNALS) at /home/timofey_turenko_mariadb_com/MaxScale/maxutils/maxbase/include/maxbase/semaphore.hh:177
|
#4 0x00007faa2c79f5da in maxscale::RoutingWorker::execute_concurrently(std::function<void ()> const&) (func=...) at /home/timofey_turenko_mariadb_com/MaxScale/server/core/routingworker.cc:1777
|
#5 0x00007faa2c8ec8d9 in Service::sync_user_account_caches (this=0x61a000007880) at /home/timofey_turenko_mariadb_com/MaxScale/server/core/service.cc:2059
|
#6 0x00007faa2bfc86dd in maxscale::BaseUserManager::updater_thread_function (this=0x615000010200) at /home/timofey_turenko_mariadb_com/MaxScale/server/core/base_user_manager.cc:230
|
#7 0x00007faa2bfc549b in maxscale::BaseUserManager::<lambda()>::operator()(void) const (__closure=0x60200000aff8) at /home/timofey_turenko_mariadb_com/MaxScale/server/core/base_user_manager.cc:59
|
#8 0x00007faa2bfca3e7 in std::__invoke_impl<void, maxscale::BaseUserManager::start()::<lambda()> >(std::__invoke_other, maxscale::BaseUserManager::<lambda()> &&) (__f=...) at /usr/include/c++/8/bits/invoke.h:60
|
#9 0x00007faa2bfc9c04 in std::__invoke<maxscale::BaseUserManager::start()::<lambda()> >(maxscale::BaseUserManager::<lambda()> &&) (__fn=...) at /usr/include/c++/8/bits/invoke.h:95
|
#10 0x00007faa2bfcacd3 in std::thread::_Invoker<std::tuple<maxscale::BaseUserManager::start()::<lambda()> > >::_M_invoke<0>(std::_Index_tuple<0>) (this=0x60200000aff8) at /usr/include/c++/8/thread:244
|
#11 0x00007faa2bfcac1d in std::thread::_Invoker<std::tuple<maxscale::BaseUserManager::start()::<lambda()> > >::operator()(void) (this=0x60200000aff8) at /usr/include/c++/8/thread:253
|
#12 0x00007faa2bfcabdc in std::thread::_State_impl<std::thread::_Invoker<std::tuple<maxscale::BaseUserManager::start()::<lambda()> > > >::_M_run(void) (this=0x60200000aff0) at /usr/include/c++/8/thread:196
|
#13 0x00007faa26d91b23 in execute_native_thread_routine () from /lib64/libstdc++.so.6
|
#14 0x00007faa27ba01ca in start_thread () from /lib64/libpthread.so.0
|
#15 0x00007faa24a528d3 in clone () from /lib64/libc.so.6
|
|
Thread 2 (Thread 0x7faa1a8d1700 (LWP 129657)):
|
#0 0x00007faa24b47534 in read () from /lib64/libc.so.6
|
#1 0x00007faa24aab658 in __GI__IO_file_underflow () from /lib64/libc.so.6
|
#2 0x00007faa24aac995 in _IO_default_xsgetn () from /lib64/libc.so.6
|
#3 0x00007faa24a9f76b in fread () from /lib64/libc.so.6
|
#4 0x00007faa305623af in __interceptor_fread.part.48 () from /lib64/libasan.so.5
|
#5 0x00007faa2cddf42f in (anonymous namespace)::get_command_output_cb (cb=0x41c5f4 <<lambda(char const*)>::_FUN(const char *)>, format=0x7faa2d630360 "gdb --pid=%d -batch -nx -iex 'set auto-load off' -iex 'set print thread-events off' -ex 'info threads' -ex 'thr a a bt'") at /home/timofey_turenko_mariadb_com/MaxScale/maxutils/maxbase/src/stacktrace.cc:120
|
#6 0x00007faa2cde0c53 in maxbase::dump_gdb_stacktrace (handler=0x41c5f4 <<lambda(char const*)>::_FUN(const char *)>) at /home/timofey_turenko_mariadb_com/MaxScale/maxutils/maxbase/src/stacktrace.cc:285
|
#7 0x000000000041e661 in sigfatal_handler (i=6) at /home/timofey_turenko_mariadb_com/MaxScale/server/core/gateway.cc:567
|
#8 <signal handler called>
|
#9 0x00007faa27ba6878 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
|
#10 0x00007faa2ce11454 in maxbase::ConditionVariable::wait_for (this=0x7ffcef5408d8, guard=..., d=...) at /home/timofey_turenko_mariadb_com/MaxScale/maxutils/maxbase/include/maxbase/condition_variable.hh:59
|
#11 0x00007faa2ce10238 in maxbase::WatchdogNotifier::run (this=0x7ffcef5408a0) at /home/timofey_turenko_mariadb_com/MaxScale/maxutils/maxbase/src/watchdognotifier.cc:120
|
#12 0x00007faa2ce13573 in std::__invoke_impl<void, void (maxbase::WatchdogNotifier::*)(), maxbase::WatchdogNotifier*> (__f=@0x603000046430: (void (maxbase::WatchdogNotifier::*)(maxbase::WatchdogNotifier * const)) 0x7faa2ce0fd66 <maxbase::WatchdogNotifier::run()>, __t=@0x603000046428: 0x7ffcef5408a0) at /usr/include/c++/8/bits/invoke.h:73
|
#13 0x00007faa2ce11f67 in std::__invoke<void (maxbase::WatchdogNotifier::*)(), maxbase::WatchdogNotifier*> (__fn=@0x603000046430: (void (maxbase::WatchdogNotifier::*)(maxbase::WatchdogNotifier * const)) 0x7faa2ce0fd66 <maxbase::WatchdogNotifier::run()>) at /usr/include/c++/8/bits/invoke.h:95
|
#14 0x00007faa2ce19fef in std::thread::_Invoker<std::tuple<void (maxbase::WatchdogNotifier::*)(), maxbase::WatchdogNotifier*> >::_M_invoke<0ul, 1ul> (this=0x603000046428) at /usr/include/c++/8/thread:244
|
#15 0x00007faa2ce19e93 in std::thread::_Invoker<std::tuple<void (maxbase::WatchdogNotifier::*)(), maxbase::WatchdogNotifier*> >::operator() (this=0x603000046428) at /usr/include/c++/8/thread:253
|
#16 0x00007faa2ce19e52 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (maxbase::WatchdogNotifier::*)(), maxbase::WatchdogNotifier*> > >::_M_run (this=0x603000046420) at /usr/include/c++/8/thread:196
|
#17 0x00007faa26d91b23 in execute_native_thread_routine () from /lib64/libstdc++.so.6
|
#18 0x00007faa27ba01ca in start_thread () from /lib64/libpthread.so.0
|
#19 0x00007faa24a528d3 in clone () from /lib64/libc.so.6
|
|
Thread 1 (Thread 0x7faa3168b040 (LWP 129656)):
|
#0 0x00007faa27ba16cd in __pthread_timedjoin_ex () from /lib64/libpthread.so.0
|
#1 0x00007faa26d91da7 in std::thread::join() () from /lib64/libstdc++.so.6
|
#2 0x00007faa2bfc5e3d in maxscale::BaseUserManager::stop (this=0x615000010200) at /home/timofey_turenko_mariadb_com/MaxScale/server/core/base_user_manager.cc:70
|
#3 0x00007faa2c8c425b in Service::~Service (this=0x61a000007880, __in_chrg=<optimized out>) at /home/timofey_turenko_mariadb_com/MaxScale/server/core/service.cc:621
|
#4 0x00007faa2c8c4d0e in Service::~Service (this=0x61a000007880, __in_chrg=<optimized out>) at /home/timofey_turenko_mariadb_com/MaxScale/server/core/service.cc:632
|
#5 0x00007faa2c8cbfaf in service_destroy_instances () at /home/timofey_turenko_mariadb_com/MaxScale/server/core/service.cc:940
|
#6 0x000000000042b850 in main (argc=1, argv=0x7ffcef5433e8) at /home/timofey_turenko_mariadb_com/MaxScale/server/core/gateway.cc:2280
|
The shutdown had proceeded to a point where the RoutingWorkers were no longer up but the user account manager thread was still waiting for a response to its messages.