Uploaded image for project: 'Kudu'
  1. Kudu
  2. KUDU-544

Mutex is unlocked by wrong thread in log gc maintenance op

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • M4.5
    • None
    • tserver
    • None

    Description

      Seems like the new Log GC op is releasing the mutex in the wrong thread. Todd suggests usign a semaphore might fix.

      ThreadSanitizer WARNING: mutex 0x7d280000d3a0 is unlocked by wrong thread
      #0 base::SpinLock::Unlock() /data1/jenkins-workspace/kudu-gerrit/BUILD_TYPE/TSAN/label/kudu-gerrit-slaves/src/kudu/gutil/spinlock.h:98 (libtserver.so+0x0000000d653a)
      #1 base::SpinLock::Unlock() /data1/jenkins-workspace/kudu-gerrit/BUILD_TYPE/TSAN/label/kudu-gerrit-slaves/src/kudu/gutil/spinlock.h:98 (libtserver.so+0x0000000d653a)
      #2 kudu::simple_spinlock::unlock() /data1/jenkins-workspace/kudu-gerrit/BUILD_TYPE/TSAN/label/kudu-gerrit-slaves/src/kudu/util/locks.h:34 (libtserver.so+0x0000000d64f9)
      #3 kudu::tserver::LogGCOp::Perform() /data1/jenkins-workspace/kudu-gerrit/BUILD_TYPE/TSAN/label/kudu-gerrit-slaves/src/kudu/tserver/ts_tablet_manager.cc:647 (libtserver.so+0x000000111c9d)
      #4 kudu::MaintenanceManager::LaunchOp(kudu::MaintenanceOp*) /data1/jenkins-workspace/kudu-gerrit/BUILD_TYPE/TSAN/label/kudu-gerrit-slaves/src/kudu/tablet/maintenance_manager.cc:317 (libtablet.so+0x0000002586a4)
      #5 boost::_mfi::mf1<void, kudu::MaintenanceManager, kudu::MaintenanceOp*>::operator()(kudu::MaintenanceManager*, kudu::MaintenanceOp*) const /usr/include/boost/bind/mem_fn_template.hpp:162 (libtablet.so+0x00000025b6c4)
      #6 void boost::_bi::list2<boost::_bi::value<kudu::MaintenanceManager*>, boost::_bi::value<kudu::MaintenanceOp*> >::operator()<boost::_mfi::mf1<void, kudu::MaintenanceManager, kudu::MaintenanceOp*>, boost::_bi::list0>(boost::_bi::type<void>, boost::_mfi::mf1<void, kudu::MaintenanceManager, kudu::MaintenanceOp*>&, boost::_bi::list0&, int) /usr/include/boost/bind/bind.hpp:306 (libtablet.so+0x00000025b62b)
      #7 boost::_bi::bind_t<void, boost::_mfi::mf1<void, kudu::MaintenanceManager, kudu::MaintenanceOp*>, boost::_bi::list2<boost::_bi::value<kudu::MaintenanceManager*>, boost::_bi::value<kudu::MaintenanceOp*> > >::operator()() /usr/include/boost/bind/bind_template.hpp:20 (libtablet.so+0x00000025b5b3)
      #8 boost::detail::function::void_function_obj_invoker0<boost::_bi::bind_t<void, boost::_mfi::mf1<void, kudu::MaintenanceManager, kudu::MaintenanceOp*>, boost::_bi::list2<boost::_bi::value<kudu::MaintenanceManager*>, boost::_bi::value<kudu::MaintenanceOp*> > >, void>::invoke(boost::detail::function::function_buffer&) /usr/include/boost/function/function_template.hpp:153 (libtablet.so+0x00000025b3b1)
      #9 boost::function0<void>::operator()() const /usr/include/boost/function/function_template.hpp:1012 (libtablet.so+0x000000211831)
      #10 kudu::FunctionRunnable::Run() /data1/jenkins-workspace/kudu-gerrit/BUILD_TYPE/TSAN/label/kudu-gerrit-slaves/src/kudu/util/threadpool.cc:33 (libkudu_util.so+0x00000016287d)
      #11 kudu::ThreadPool::DispatchThread(bool) /data1/jenkins-workspace/kudu-gerrit/BUILD_TYPE/TSAN/label/kudu-gerrit-slaves/src/kudu/util/threadpool.cc:271 (libkudu_util.so+0x00000015f290)
      #12 boost::_mfi::mf1<void, kudu::ThreadPool, bool>::operator()(kudu::ThreadPool*, bool) const /usr/include/boost/bind/mem_fn_template.hpp:162 (libkudu_util.so+0x000000160c95)
      #13 void boost::_bi::list2<boost::_bi::value<kudu::ThreadPool*>, boost::_bi::value<bool> >::operator()<boost::_mfi::mf1<void, kudu::ThreadPool, bool>, boost::_bi::list0>(boost::_bi::type<void>, boost::_mfi::mf1<void, kudu::ThreadPool, bool>&, boost::_bi::list0&, int) /usr/include/boost/bind/bind.hpp:306 (libkudu_util.so+0x000000160bfb)
      #14 boost::_bi::bind_t<void, boost::_mfi::mf1<void, kudu::ThreadPool, bool>, boost::_bi::list2<boost::_bi::value<kudu::ThreadPool*>, boost::_bi::value<bool> > >::operator()() /usr/include/boost/bind/bind_template.hpp:20 (libkudu_util.so+0x000000160b83)
      #15 boost::detail::function::void_function_obj_invoker0<boost::_bi::bind_t<void, boost::_mfi::mf1<void, kudu::ThreadPool, bool>, boost::_bi::list2<boost::_bi::value<kudu::ThreadPool*>, boost::_bi::value<bool> > >, void>::invoke(boost::detail::function::function_buffer&) /usr/include/boost/function/function_template.hpp:153 (libkudu_util.so+0x000000160981)
      #16 boost::function0<void>::operator()() const /usr/include/boost/function/function_template.hpp:1012 (libtablet.so+0x000000211831)
      #17 kudu::Thread::SuperviseThread(void*) /data1/jenkins-workspace/kudu-gerrit/BUILD_TYPE/TSAN/label/kudu-gerrit-slaves/src/kudu/util/thread.cc:435 (libkudu_util.so+0x00000015553b)

      Attachments

        Activity

          People

            dralves David Alves
            dralves David Alves
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: