Uploaded image for project: 'MariaDB MaxScale'
  1. MariaDB MaxScale
  2. MXS-5341

User account manager hangs on shutdown

    XMLWordPrintable

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.

      Attachments

        Activity

          People

            markus makela markus makela
            markus makela markus makela
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Git Integration

                Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.