[
https://issues.apache.org/jira/browse/IMPALA-14476?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Riza Suminto resolved IMPALA-14476.
-----------------------------------
Fix Version/s: Impala 5.0.0
Target Version: Impala 5.0.0
Resolution: Fixed
Solved with a workaround.
> Data race in TSAN build in during dataload in be/src/kudu/util/status.cc
> ------------------------------------------------------------------------
>
> Key: IMPALA-14476
> URL: https://issues.apache.org/jira/browse/IMPALA-14476
> Project: IMPALA
> Issue Type: Bug
> Components: Backend
> Affects Versions: Impala 5.0.0
> Reporter: Laszlo Gaal
> Assignee: Riza Suminto
> Priority: Blocker
> Fix For: Impala 5.0.0
>
>
> Since the toolchain was bumped to pick up Kudu's array column feature
> (KUDU-1261), Impala's TSAN builds on the master branch consistently break
> during dataload with a data race detected by TSAN. Impalad.ERROR reports:
> {code}
> WARNING: ThreadSanitizer: data race (pid=59148)
> Read of size 1 at 0x7b1c00426c54 by thread T280:
> #0 kudu::Status::code() const
> /data/jenkins/workspace/impala-cdw-master-staging-core-tsan/repos/Impala/be/src/kudu/util/status.h:483:55
> (impalad+0x27d2eea)
> #1 kudu::Status::CloneAndPrepend(kudu::Slice const&) const
> /data/jenkins/workspace/impala-cdw-master-staging-core-tsan/repos/Impala/be/src/kudu/util/status.cc:159:17
> (impalad+0x27e89a1)
> #2 kudu::rpc::Connection::Shutdown(kudu::Status const&,
> std::unique_ptr<kudu::rpc::ErrorStatusPB,
> std::default_delete<kudu::rpc::ErrorStatusPB> >)
> /mnt/source/kudu/kudu-16689973a/src/kudu/rpc/connection.cc:153:44
> (libkudu_client.so.0+0x20aefd)
> Previous write of size 1 at 0x7b1c00426c54 by thread T255:
> #0 kudu::Status::Status(kudu::Status::Code, kudu::Slice const&,
> kudu::Slice const&, short)
> /data/jenkins/workspace/impala-cdw-master-staging-core-tsan/repos/Impala/be/src/kudu/util/status.cc:34:13
> (impalad+0x27e8584)
> #1 kudu::Status::CloneAndPrepend(kudu::Slice const&) const
> /data/jenkins/workspace/impala-cdw-master-staging-core-tsan/repos/Impala/be/src/kudu/util/status.cc:159:10
> (impalad+0x27e89d2)
> #2
> kudu::rpc::Negotiation::RunNegotiation(scoped_refptr<kudu::rpc::Connection>
> const&, kudu::TriStateFlag, kudu::TriStateFlag, bool, kudu::MonoTime)
> /mnt/source/kudu/kudu-16689973a/src/kudu/rpc/negotiation.cc:325:26
> (libkudu_client.so.0+0x2180e9)
> Location is heap block of size 105 at 0x7b1c00426c50 allocated by thread
> T255:
> #0 operator new[](unsigned long) <null> (impalad+0x229c50a)
> #1 kudu::Status::Status(kudu::Status::Code, kudu::Slice const&,
> kudu::Slice const&, short)
> /data/jenkins/workspace/impala-cdw-master-staging-core-tsan/repos/Impala/be/src/kudu/util/status.cc:32:17
> (impalad+0x27e856a)
> #2 kudu::Status::CloneAndPrepend(kudu::Slice const&) const
> /data/jenkins/workspace/impala-cdw-master-staging-core-tsan/repos/Impala/be/src/kudu/util/status.cc:159:10
> (impalad+0x27e89d2)
> #3
> kudu::rpc::Negotiation::RunNegotiation(scoped_refptr<kudu::rpc::Connection>
> const&, kudu::TriStateFlag, kudu::TriStateFlag, bool, kudu::MonoTime)
> /mnt/source/kudu/kudu-16689973a/src/kudu/rpc/negotiation.cc:325:26
> (libkudu_client.so.0+0x2180e9)
> Thread T280 'rpc reactor-121' (tid=121625, running) created by thread T277
> at:
> #0 pthread_create <null> (impalad+0x223e7d3)
> #1 kudu::Thread::StartThread(std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> >,
> std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>
> >, std::function<void ()>, unsigned long, scoped_refptr<kudu::Thread>*)
> /mnt/source/kudu/kudu-16689973a/src/kudu/util/thread.cc:643:29
> (libkudu_client.so.0+0x3a985f)
> #2
> impala::ExecEnv::GetKuduClient(std::vector<std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> >,
> std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> > > > const&,
> std::tr1::shared_ptr<kudu::client::KuduClient>*)
> /data/jenkins/workspace/impala-cdw-master-staging-core-tsan/repos/Impala/be/src/runtime/exec-env.cc:732:5
> (impalad+0x2965d1e)
> #3 impala::KuduPartitionExpr::Init(impala::RowDescriptor const&, bool,
> impala::FragmentState*)
> /data/jenkins/workspace/impala-cdw-master-staging-core-tsan/repos/Impala/be/src/exprs/kudu-partition-expr.cc:53:3
> (impalad+0x3a54a5f)
> #4 impala::ScalarExpr::Create(impala::TExpr const&, impala::RowDescriptor
> const&, impala::FragmentState*, impala::ObjectPool*, impala::ScalarExpr**)
> /data/jenkins/workspace/impala-cdw-master-staging-core-tsan/repos/Impala/be/src/exprs/scalar-expr.cc:91:25
> (impalad+0x39fbe4a)
> #5 impala::ScalarExpr::Create(std::vector<impala::TExpr,
> std::allocator<impala::TExpr> > const&, impala::RowDescriptor const&,
> impala::FragmentState*, impala::ObjectPool*, std::vector<impala::ScalarExpr*,
> std::allocator<impala::ScalarExpr*> >*)
> /data/jenkins/workspace/impala-cdw-master-staging-core-tsan/repos/Impala/be/src/exprs/scalar-expr.cc:107:5
> (impalad+0x39fc6e3)
> #6 impala::ScalarExpr::Create(std::vector<impala::TExpr,
> std::allocator<impala::TExpr> > const&, impala::RowDescriptor const&,
> impala::FragmentState*, std::vector<impala::ScalarExpr*,
> std::allocator<impala::ScalarExpr*> >*)
> /data/jenkins/workspace/impala-cdw-master-staging-core-tsan/repos/Impala/be/src/exprs/scalar-expr.cc:121:10
> (impalad+0x39fc8b4)
> #7 impala::KrpcDataStreamSenderConfig::Init(impala::TDataSink const&,
> impala::RowDescriptor const*, impala::FragmentState*)
> /data/jenkins/workspace/impala-cdw-master-staging-core-tsan/repos/Impala/be/src/runtime/krpc-data-stream-sender.cc:93:5
> (impalad+0x2ad62b0)
> #8 impala::DataSinkConfig::CreateConfig(impala::TDataSink const&,
> impala::RowDescriptor const*, impala::FragmentState*,
> impala::DataSinkConfig**)
> /data/jenkins/workspace/impala-cdw-master-staging-core-tsan/repos/Impala/be/src/exec/data-sink.cc:148:3
> (impalad+0x324bce4)
> #9 impala::FragmentState::Init()
> /data/jenkins/workspace/impala-cdw-master-staging-core-tsan/repos/Impala/be/src/runtime/fragment-state.cc:87:3
> (impalad+0x2ab9d6e)
> #10
> impala::FragmentState::CreateFragmentStateMap(impala::TExecPlanFragmentInfo
> const&, impala::ExecQueryFInstancesRequestPB const&, impala::QueryState*,
> std::unordered_map<int, impala::FragmentState*, std::hash<int>,
> std::equal_to<int>, std::allocator<std::pair<int const,
> impala::FragmentState*> > >&)
> /data/jenkins/workspace/impala-cdw-master-staging-core-tsan/repos/Impala/be/src/runtime/fragment-state.cc:80:5
> (impalad+0x2ab9aaf)
> #11 impala::QueryState::StartFInstances()
> /data/jenkins/workspace/impala-cdw-master-staging-core-tsan/repos/Impala/be/src/runtime/query-state.cc:884:29
> (impalad+0x29e997c)
> #12 impala::QueryExecMgr::ExecuteQueryHelper(impala::QueryState*)
> /data/jenkins/workspace/impala-cdw-master-staging-core-tsan/repos/Impala/be/src/runtime/query-exec-mgr.cc:170:7
> (impalad+0x29d6de9)
> #13 boost::_mfi::mf1<void, impala::QueryExecMgr,
> impala::QueryState*>::operator()(impala::QueryExecMgr*, impala::QueryState*)
> const
> /data/jenkins/workspace/impala-cdw-master-staging-core-tsan/Impala-Toolchain/toolchain-packages-gcc10.4.0/boost-1.74.0-p1/include/boost/bind/mem_fn_template.hpp:165:29
> (impalad+0x29df75d)
> #14 void boost::_bi::list2<boost::_bi::value<impala::QueryExecMgr*>,
> boost::_bi::value<impala::QueryState*> >::operator()<boost::_mfi::mf1<void,
> impala::QueryExecMgr, impala::QueryState*>,
> boost::_bi::list0>(boost::_bi::type<void>, boost::_mfi::mf1<void,
> impala::QueryExecMgr, impala::QueryState*>&, boost::_bi::list0&, int)
> /data/jenkins/workspace/impala-cdw-master-staging-core-tsan/Impala-Toolchain/toolchain-packages-gcc10.4.0/boost-1.74.0-p1/include/boost/bind/bind.hpp:319:9
> (impalad+0x29df6aa)
> #15 boost::_bi::bind_t<void, boost::_mfi::mf1<void, impala::QueryExecMgr,
> impala::QueryState*>,
> boost::_bi::list2<boost::_bi::value<impala::QueryExecMgr*>,
> boost::_bi::value<impala::QueryState*> > >::operator()()
> /data/jenkins/workspace/impala-cdw-master-staging-core-tsan/Impala-Toolchain/toolchain-packages-gcc10.4.0/boost-1.74.0-p1/include/boost/bind/bind.hpp:1294:16
> (impalad+0x29df613)
> #16
> boost::detail::function::void_function_obj_invoker0<boost::_bi::bind_t<void,
> boost::_mfi::mf1<void, impala::QueryExecMgr, impala::QueryState*>,
> boost::_bi::list2<boost::_bi::value<impala::QueryExecMgr*>,
> boost::_bi::value<impala::QueryState*> > >,
> void>::invoke(boost::detail::function::function_buffer&)
> /data/jenkins/workspace/impala-cdw-master-staging-core-tsan/Impala-Toolchain/toolchain-packages-gcc10.4.0/boost-1.74.0-p1/include/boost/function/function_template.hpp:158:11
> (impalad+0x29df351)
> #17 boost::function0<void>::operator()() const
> /data/jenkins/workspace/impala-cdw-master-staging-core-tsan/Impala-Toolchain/toolchain-packages-gcc10.4.0/boost-1.74.0-p1/include/boost/function/function_template.hpp:763:14
> (impalad+0x296d231)
> #18 impala::Thread::SuperviseThread(std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> > const&,
> std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>
> > const&, boost::function<void ()> const&, impala::ThreadDebugInfo const*,
> impala::Promise<long, (impala::PromiseMode)0>*)
> /data/jenkins/workspace/impala-cdw-master-staging-core-tsan/repos/Impala/be/src/util/thread.cc:361:3
> (impalad+0x3153e65)
> #19 void
> boost::_bi::list5<boost::_bi::value<std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> > >,
> boost::_bi::value<std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> > >, boost::_bi::value<boost::function<void ()> >,
> boost::_bi::value<impala::ThreadDebugInfo*>,
> boost::_bi::value<impala::Promise<long, (impala::PromiseMode)0>*>
> >::operator()<void (*)(std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> > const&,
> std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>
> > const&, boost::function<void ()> const&, impala::ThreadDebugInfo const*,
> impala::Promise<long, (impala::PromiseMode)0>*),
> boost::_bi::list0>(boost::_bi::type<void>, void
> (*&)(std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> > const&, std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> > const&, boost::function<void
> ()> const&, impala::ThreadDebugInfo const*, impala::Promise<long,
> (impala::PromiseMode)0>*), boost::_bi::list0&, int)
> /data/jenkins/workspace/impala-cdw-master-staging-core-tsan/Impala-Toolchain/toolchain-packages-gcc10.4.0/boost-1.74.0-p1/include/boost/bind/bind.hpp:531:9
> (impalad+0x315d097)
> #20 boost::_bi::bind_t<void, void (*)(std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> > const&,
> std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>
> > const&, boost::function<void ()> const&, impala::ThreadDebugInfo const*,
> impala::Promise<long, (impala::PromiseMode)0>*),
> boost::_bi::list5<boost::_bi::value<std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> > >,
> boost::_bi::value<std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> > >, boost::_bi::value<boost::function<void ()> >,
> boost::_bi::value<impala::ThreadDebugInfo*>,
> boost::_bi::value<impala::Promise<long, (impala::PromiseMode)0>*> >
> >::operator()()
> /data/jenkins/workspace/impala-cdw-master-staging-core-tsan/Impala-Toolchain/toolchain-packages-gcc10.4.0/boost-1.74.0-p1/include/boost/bind/bind.hpp:1294:16
> (impalad+0x315cfb3)
> #21 boost::detail::thread_data<boost::_bi::bind_t<void, void
> (*)(std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> > const&, std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> > const&, boost::function<void
> ()> const&, impala::ThreadDebugInfo const*, impala::Promise<long,
> (impala::PromiseMode)0>*),
> boost::_bi::list5<boost::_bi::value<std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> > >,
> boost::_bi::value<std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> > >, boost::_bi::value<boost::function<void ()> >,
> boost::_bi::value<impala::ThreadDebugInfo*>,
> boost::_bi::value<impala::Promise<long, (impala::PromiseMode)0>*> > >
> >::run()
> /data/jenkins/workspace/impala-cdw-master-staging-core-tsan/Impala-Toolchain/toolchain-packages-gcc10.4.0/boost-1.74.0-p1/include/boost/thread/detail/thread.hpp:120:17
> (impalad+0x315c760)
> #22 thread_proxy
> /mnt/source/boost/boost_1_74_0-p1/libs/thread/src/pthread/thread.cpp:179:37
> (impalad+0x3fdc0d6)
> Thread T255 'client-negotiat' (tid=121628, running) created by thread T280
> at:
> #0 pthread_create <null> (impalad+0x223e7d3)
> #1 kudu::Thread::StartThread(std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> >,
> std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>
> >, std::function<void ()>, unsigned long, scoped_refptr<kudu::Thread>*)
> /mnt/source/kudu/kudu-16689973a/src/kudu/util/thread.cc:643:29
> (libkudu_client.so.0+0x3a985f)
> SUMMARY: ThreadSanitizer: data race
> /data/jenkins/workspace/impala-cdw-master-staging-core-tsan/repos/Impala/be/src/kudu/util/status.h:483:55
> in kudu::Status::code() const
> {code}
> This kills Impala, which then aborts the complete dataload process.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)