Sahil Takiar created IMPALA-9315:
------------------------------------
Summary: TSAN data race in kudu::ScopedWatchKernelStack /
KernelStackWatchdog
Key: IMPALA-9315
URL: https://issues.apache.org/jira/browse/IMPALA-9315
Project: IMPALA
Issue Type: Sub-task
Reporter: Sahil Takiar
Several backend tests fail with this data race:
{code}
WARNING: ThreadSanitizer: data race (pid=8072)
Atomic write of size 4 at 0x7b340006f5c4 by main thread:
#0 __tsan_atomic32_store
/mnt/source/llvm/llvm-5.0.1.src-p1/projects/compiler-rt/lib/tsan/rtl/tsan_interface_atomic.cc:562
(llvm-codegen-test+0x18c004e)
#1 base::subtle::Acquire_Store(int volatile*, int)
/home/systest/Impala/be/src/gutil/atomicops-internals-tsan.h:104:3
(llvm-codegen-test+0x19cd822)
#2 kudu::ScopedWatchKernelStack::ScopedWatchKernelStack(char const*, int)
/home/systest/Impala/be/src/kudu/util/kernel_stack_watchdog.h:259:5
(llvm-codegen-test+0x19c9920)
#3 kudu::Thread::StartThread(std::string const&, std::string const&,
boost::function<void ()> const&, unsigned long, scoped_refptr<kudu::Thread>*)
/home/systest/Impala/be/src/kudu/util/thread.cc:555:28
(llvm-codegen-test+0x19c7129)
#4 kudu::Status kudu::Thread::Create<void (kudu::rpc::ReactorThread::*)(),
kudu::rpc::ReactorThread*>(std::string const&, std::string const&, void
(kudu::rpc::ReactorThread::* const&)(), kudu::rpc::ReactorThread* const&,
scoped_refptr<kudu::Thread>*) /home/systest/I
mpala/be/src/kudu/util/thread.h:164:12 (llvm-codegen-test+0x26e1875)
#5 kudu::rpc::ReactorThread::Init()
/home/systest/Impala/be/src/kudu/rpc/reactor.cc:185:10
(llvm-codegen-test+0x26dc126)
#6 kudu::rpc::Reactor::Init()
/home/systest/Impala/be/src/kudu/rpc/reactor.cc:759:18
(llvm-codegen-test+0x26e06d1)
#7 kudu::rpc::Messenger::Init()
/home/systest/Impala/be/src/kudu/rpc/messenger.cc:446:41
(llvm-codegen-test+0x26c9a8d)
#8
kudu::rpc::MessengerBuilder::Build(std::shared_ptr<kudu::rpc::Messenger>*)
/home/systest/Impala/be/src/kudu/rpc/messenger.cc:205:46
(llvm-codegen-test+0x26c95fe)
#9 impala::RpcMgr::Init(impala::TNetworkAddress const&)
/home/systest/Impala/be/src/rpc/rpc-mgr.cc:151:38 (llvm-codegen-test+0x2722a62)
#10 impala::TestEnv::Init()
/home/systest/Impala/be/src/runtime/test-env.cc:82:64
(llvm-codegen-test+0x1b3df91)
#11 impala::LlvmCodeGenTest::SetUp()
/home/systest/Impala/be/src/codegen/llvm-codegen-test.cc:49:46
(llvm-codegen-test+0x1913e02)
#12 void
testing::internal::HandleExceptionsInMethodIfSupported<testing::Test,
void>(testing::Test*, void (testing::Test::*)(), char const*) <null>
(llvm-codegen-test+0x412afd2)
#13 __libc_start_main
/build/glibc-LK5gWL/glibc-2.23/csu/../csu/libc-start.c:291 (libc.so.6+0x2082f)
Previous read of size 8 at 0x7b340006f5c0 by thread T188 (mutexes: write
M3832):
#0 memcpy
/mnt/source/llvm/llvm-5.0.1.src-p1/projects/compiler-rt/lib/tsan/../sanitizer_common/sanitizer_common_interceptors.inc:738
(llvm-codegen-test+0x18a3ad7)
#1
kudu::KernelStackWatchdog::TLS::Data::SnapshotCopy(kudu::KernelStackWatchdog::TLS::Data*)
const /home/systest/Impala/be/src/kudu/util/kernel_stack_watchdog.cc:246:5
(llvm-codegen-test+0x19ed2f3)
#2 kudu::KernelStackWatchdog::RunThread()
/home/systest/Impala/be/src/kudu/util/kernel_stack_watchdog.cc:172:12
(llvm-codegen-test+0x19ec7c3)
#3 boost::_mfi::mf0<void,
kudu::KernelStackWatchdog>::operator()(kudu::KernelStackWatchdog*) const
/home/systest/Impala/toolchain/boost-1.57.0-p3/include/boost/bind/mem_fn_template.hpp:49:16
(llvm-codegen-test+0x19f0676)
#4 void boost::_bi::list1<boost::_bi::value<kudu::KernelStackWatchdog*>
>::operator()<boost::_mfi::mf0<void, kudu::KernelStackWatchdog>,
boost::_bi::list0>(boost::_bi::type<void>, boost::_mfi::mf0<void,
kudu::KernelStackWatchdog>&, boost::_bi::list0&, int) /home/sys
test/Impala/toolchain/boost-1.57.0-p3/include/boost/bind/bind.hpp:253:9
(llvm-codegen-test+0x19f05ca)
#5 boost::_bi::bind_t<void, boost::_mfi::mf0<void,
kudu::KernelStackWatchdog>,
boost::_bi::list1<boost::_bi::value<kudu::KernelStackWatchdog*> >
>::operator()()
/home/systest/Impala/toolchain/boost-1.57.0-p3/include/boost/bind/bind_template.hpp:20:16
(llvm-codegen-t
est+0x19f0533)
#6
boost::detail::function::void_function_obj_invoker0<boost::_bi::bind_t<void,
boost::_mfi::mf0<void, kudu::KernelStackWatchdog>,
boost::_bi::list1<boost::_bi::value<kudu::KernelStackWatchdog*> > >,
void>::invoke(boost::detail::function::function_buffer&) /home/sys
test/Impala/toolchain/boost-1.57.0-p3/include/boost/function/function_template.hpp:153:11
(llvm-codegen-test+0x19f0329)
#7 boost::function0<void>::operator()() const
/home/systest/Impala/toolchain/boost-1.57.0-p3/include/boost/function/function_template.hpp:766:14
(llvm-codegen-test+0x19c9e41)
#8 kudu::Thread::SuperviseThread(void*)
/home/systest/Impala/be/src/kudu/util/thread.cc:603:3
(llvm-codegen-test+0x19c76e9)
Location is heap block of size 200 at 0x7b340006f500 allocated by main thread:
#0 operator new(unsigned long)
/mnt/source/llvm/llvm-5.0.1.src-p1/projects/compiler-rt/lib/tsan/rtl/tsan_new_delete.cc:44
(llvm-codegen-test+0x1907103)
#1 kudu::KernelStackWatchdog::CreateAndRegisterTLS()
/home/systest/Impala/be/src/kudu/util/kernel_stack_watchdog.cc:218:15
(llvm-codegen-test+0x19ed3a7)
#2 kudu::KernelStackWatchdog::GetTLS()
/home/systest/Impala/be/src/kudu/util/kernel_stack_watchdog.h:170:7
(llvm-codegen-test+0x19cd7e1)
#3 kudu::ScopedWatchKernelStack::ScopedWatchKernelStack(char const*, int)
/home/systest/Impala/be/src/kudu/util/kernel_stack_watchdog.h:248:13
(llvm-codegen-test+0x19c99f8)
#4 kudu::Thread::StartThread(std::string const&, std::string const&,
boost::function<void ()> const&, unsigned long, scoped_refptr<kudu::Thread>*)
/home/systest/Impala/be/src/kudu/util/thread.cc:555:28
(llvm-codegen-test+0x19c7129)
#5 kudu::Status kudu::Thread::Create<void (kudu::rpc::ReactorThread::*)(),
kudu::rpc::ReactorThread*>(std::string const&, std::string const&, void
(kudu::rpc::ReactorThread::* const&)(), kudu::rpc::ReactorThread* const&,
scoped_refptr<kudu::Thread>*) /home/systest/I
mpala/be/src/kudu/util/thread.h:164:12 (llvm-codegen-test+0x26e1875)
#6 kudu::rpc::ReactorThread::Init()
/home/systest/Impala/be/src/kudu/rpc/reactor.cc:185:10
(llvm-codegen-test+0x26dc126)
#7 kudu::rpc::Reactor::Init()
/home/systest/Impala/be/src/kudu/rpc/reactor.cc:759:18
(llvm-codegen-test+0x26e06d1)
#8 kudu::rpc::Messenger::Init()
/home/systest/Impala/be/src/kudu/rpc/messenger.cc:446:41
(llvm-codegen-test+0x26c9a8d)
#9
kudu::rpc::MessengerBuilder::Build(std::shared_ptr<kudu::rpc::Messenger>*)
/home/systest/Impala/be/src/kudu/rpc/messenger.cc:205:46
(llvm-codegen-test+0x26c95fe)
#10 impala::RpcMgr::Init(impala::TNetworkAddress const&)
/home/systest/Impala/be/src/rpc/rpc-mgr.cc:151:38 (llvm-codegen-test+0x2722a62)
#11 impala::TestEnv::Init()
/home/systest/Impala/be/src/runtime/test-env.cc:82:64
(llvm-codegen-test+0x1b3df91)
#12 impala::LlvmCodeGenTest::SetUp()
/home/systest/Impala/be/src/codegen/llvm-codegen-test.cc:49:46
(llvm-codegen-test+0x1913e02)
#13 void
testing::internal::HandleExceptionsInMethodIfSupported<testing::Test,
void>(testing::Test*, void (testing::Test::*)(), char const*) <null>
(llvm-codegen-test+0x412afd2)
#14 __libc_start_main
/build/glibc-LK5gWL/glibc-2.23/csu/../csu/libc-start.c:291 (libc.so.6+0x2082f)
Mutex M3832 (0x7b4400100460) created at:
#0 pthread_mutex_init
/mnt/source/llvm/llvm-5.0.1.src-p1/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:1105
(llvm-codegen-test+0x189e564)
#1 kudu::Mutex::Mutex() /home/systest/Impala/be/src/kudu/util/mutex.cc:65:8
(llvm-codegen-test+0x1a15e1f)
#2 kudu::KernelStackWatchdog::KernelStackWatchdog()
/home/systest/Impala/be/src/kudu/util/kernel_stack_watchdog.cc:64:22
(llvm-codegen-test+0x19ec3c9)
#3 Singleton<kudu::KernelStackWatchdog>::CreateInstance()
/home/systest/Impala/be/src/kudu/gutil/singleton.h:124:18
(llvm-codegen-test+0x19ef744)
#4 Singleton<kudu::KernelStackWatchdog>::Init()
/home/systest/Impala/be/src/kudu/gutil/singleton.h:117:17
(llvm-codegen-test+0x19ef6e4)
#5 GoogleOnceInternalInit(int*, void (*)(), void (*)(void*), void*)
/home/systest/Impala/be/src/gutil/once.cc:38:7 (llvm-codegen-test+0x4005393)
#6 GoogleOnceInit(GoogleOnceType*, void (*)())
/home/systest/Impala/be/src/kudu/gutil/once.h:55:5 (llvm-codegen-test+0x19c8ecd)
#7 Singleton<kudu::KernelStackWatchdog>::get()
/home/systest/Impala/be/src/kudu/gutil/singleton.h:79:5
(llvm-codegen-test+0x19ef691)
#8 kudu::KernelStackWatchdog::GetInstance()
/home/systest/Impala/be/src/kudu/util/kernel_stack_watchdog.h:87:12
(llvm-codegen-test+0x19ee073)
#9 kudu::KernelStackWatchdog::CreateAndRegisterTLS()
/home/systest/Impala/be/src/kudu/util/kernel_stack_watchdog.cc:219:3
(llvm-codegen-test+0x19ed3b7)
#10 kudu::KernelStackWatchdog::GetTLS()
/home/systest/Impala/be/src/kudu/util/kernel_stack_watchdog.h:170:7
(llvm-codegen-test+0x19cd7e1)
#11 kudu::ScopedWatchKernelStack::ScopedWatchKernelStack(char const*, int)
/home/systest/Impala/be/src/kudu/util/kernel_stack_watchdog.h:248:13
(llvm-codegen-test+0x19c99f8)
#12 kudu::Thread::StartThread(std::string const&, std::string const&,
boost::function<void ()> const&, unsigned long, scoped_refptr<kudu::Thread>*)
/home/systest/Impala/be/src/kudu/util/thread.cc:555:28
(llvm-codegen-test+0x19c7129)
#13 kudu::Status kudu::Thread::Create<void (kudu::rpc::ReactorThread::*)(),
kudu::rpc::ReactorThread*>(std::string const&, std::string const&, void
(kudu::rpc::ReactorThread::* const&)(), kudu::rpc::ReactorThread* const&,
scoped_refptr<kudu::Thread>*) /home/systest/
Impala/be/src/kudu/util/thread.h:164:12 (llvm-codegen-test+0x26e1875)
#14 kudu::rpc::ReactorThread::Init()
/home/systest/Impala/be/src/kudu/rpc/reactor.cc:185:10
(llvm-codegen-test+0x26dc126)
#15 kudu::rpc::Reactor::Init()
/home/systest/Impala/be/src/kudu/rpc/reactor.cc:759:18
(llvm-codegen-test+0x26e06d1)
#16 kudu::rpc::Messenger::Init()
/home/systest/Impala/be/src/kudu/rpc/messenger.cc:446:41
(llvm-codegen-test+0x26c9a8d)
#17
kudu::rpc::MessengerBuilder::Build(std::shared_ptr<kudu::rpc::Messenger>*)
/home/systest/Impala/be/src/kudu/rpc/messenger.cc:205:46
(llvm-codegen-test+0x26c95fe)
#18 impala::RpcMgr::Init(impala::TNetworkAddress const&)
/home/systest/Impala/be/src/rpc/rpc-mgr.cc:151:38 (llvm-codegen-test+0x2722a62)
#19 impala::TestEnv::Init()
/home/systest/Impala/be/src/runtime/test-env.cc:82:64
(llvm-codegen-test+0x1b3df91)
#20 impala::LlvmCodeGenTest::SetUp()
/home/systest/Impala/be/src/codegen/llvm-codegen-test.cc:49:46
(llvm-codegen-test+0x1913e02)
#21 void
testing::internal::HandleExceptionsInMethodIfSupported<testing::Test,
void>(testing::Test*, void (testing::Test::*)(), char const*) <null>
(llvm-codegen-test+0x412afd2)
#22 __libc_start_main
/build/glibc-LK5gWL/glibc-2.23/csu/../csu/libc-start.c:291 (libc.so.6+0x2082f)
Thread T188 'kernel-watcher-' (tid=8413, running) created by main thread at:
#0 pthread_create
/mnt/source/llvm/llvm-5.0.1.src-p1/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:889
(llvm-codegen-test+0x189ea9b)
#1 kudu::Thread::StartThread(std::string const&, std::string const&,
boost::function<void ()> const&, unsigned long, scoped_refptr<kudu::Thread>*)
/home/systest/Impala/be/src/kudu/util/thread.cc:556:15
(llvm-codegen-test+0x19c7155)
#2 kudu::Status kudu::Thread::CreateWithFlags<boost::_bi::bind_t<void,
boost::_mfi::mf0<void, kudu::KernelStackWatchdog>,
boost::_bi::list1<boost::_bi::value<kudu::KernelStackWatchdog*> > >
>(std::string const&, std::string const&, boost::_bi::bind_t<void, boost::_m
fi::mf0<void, kudu::KernelStackWatchdog>,
boost::_bi::list1<boost::_bi::value<kudu::KernelStackWatchdog*> > > const&,
unsigned long, scoped_refptr<kudu::Thread>*)
/home/systest/Impala/be/src/kudu/util/thread.h:152:12
(llvm-codegen-test+0x19ed771)
#3 kudu::KernelStackWatchdog::KernelStackWatchdog()
/home/systest/Impala/be/src/kudu/util/kernel_stack_watchdog.cc:71:36
(llvm-codegen-test+0x19ec45d)
#4 Singleton<kudu::KernelStackWatchdog>::CreateInstance()
/home/systest/Impala/be/src/kudu/gutil/singleton.h:124:18
(llvm-codegen-test+0x19ef744)
#5 Singleton<kudu::KernelStackWatchdog>::Init()
/home/systest/Impala/be/src/kudu/gutil/singleton.h:117:17
(llvm-codegen-test+0x19ef6e4)
#6 GoogleOnceInternalInit(int*, void (*)(), void (*)(void*), void*)
/home/systest/Impala/be/src/gutil/once.cc:38:7 (llvm-codegen-test+0x4005393)
#7 GoogleOnceInit(GoogleOnceType*, void (*)())
/home/systest/Impala/be/src/kudu/gutil/once.h:55:5 (llvm-codegen-test+0x19c8ecd)
#8 Singleton<kudu::KernelStackWatchdog>::get()
/home/systest/Impala/be/src/kudu/gutil/singleton.h:79:5
(llvm-codegen-test+0x19ef691)
#9 kudu::KernelStackWatchdog::GetInstance()
/home/systest/Impala/be/src/kudu/util/kernel_stack_watchdog.h:87:12
(llvm-codegen-test+0x19ee073)
#10 kudu::KernelStackWatchdog::CreateAndRegisterTLS()
/home/systest/Impala/be/src/kudu/util/kernel_stack_watchdog.cc:219:3
(llvm-codegen-test+0x19ed3b7)
#11 kudu::KernelStackWatchdog::GetTLS()
/home/systest/Impala/be/src/kudu/util/kernel_stack_watchdog.h:170:7
(llvm-codegen-test+0x19cd7e1)
#12 kudu::ScopedWatchKernelStack::ScopedWatchKernelStack(char const*, int)
/home/systest/Impala/be/src/kudu/util/kernel_stack_watchdog.h:248:13
(llvm-codegen-test+0x19c99f8)
#13 kudu::Thread::StartThread(std::string const&, std::string const&,
boost::function<void ()> const&, unsigned long, scoped_refptr<kudu::Thread>*)
/home/systest/Impala/be/src/kudu/util/thread.cc:555:28
(llvm-codegen-test+0x19c7129)
#14 kudu::Status kudu::Thread::Create<void (kudu::rpc::ReactorThread::*)(),
kudu::rpc::ReactorThread*>(std::string const&, std::string const&, void
(kudu::rpc::ReactorThread::* const&)(), kudu::rpc::ReactorThread* const&,
scoped_refptr<kudu::Thread>*) /home/systest/
Impala/be/src/kudu/util/thread.h:164:12 (llvm-codegen-test+0x26e1875)
#15 kudu::rpc::ReactorThread::Init()
/home/systest/Impala/be/src/kudu/rpc/reactor.cc:185:10
(llvm-codegen-test+0x26dc126)
#16 kudu::rpc::Reactor::Init()
/home/systest/Impala/be/src/kudu/rpc/reactor.cc:759:18
(llvm-codegen-test+0x26e06d1)
#17 kudu::rpc::Messenger::Init()
/home/systest/Impala/be/src/kudu/rpc/messenger.cc:446:41
(llvm-codegen-test+0x26c9a8d)
#18
kudu::rpc::MessengerBuilder::Build(std::shared_ptr<kudu::rpc::Messenger>*)
/home/systest/Impala/be/src/kudu/rpc/messenger.cc:205:46
(llvm-codegen-test+0x26c95fe)
#19 impala::RpcMgr::Init(impala::TNetworkAddress const&)
/home/systest/Impala/be/src/rpc/rpc-mgr.cc:151:38 (llvm-codegen-test+0x2722a62)
#20 impala::TestEnv::Init()
/home/systest/Impala/be/src/runtime/test-env.cc:82:64
(llvm-codegen-test+0x1b3df91)
#21 impala::LlvmCodeGenTest::SetUp()
/home/systest/Impala/be/src/codegen/llvm-codegen-test.cc:49:46
(llvm-codegen-test+0x1913e02)
#22 void
testing::internal::HandleExceptionsInMethodIfSupported<testing::Test,
void>(testing::Test*, void (testing::Test::*)(), char const*) <null>
(llvm-codegen-test+0x412afd2)
#23 __libc_start_main
/build/glibc-LK5gWL/glibc-2.23/csu/../csu/libc-start.c:291 (libc.so.6+0x2082f)
SUMMARY: ThreadSanitizer: data race
/home/systest/Impala/be/src/gutil/atomicops-internals-tsan.h:104:3 in
base::subtle::Acquire_Store(int volatile*, int)
{code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]