[
https://issues.apache.org/jira/browse/KUDU-511?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16864731#comment-16864731
]
Grant Henke commented on KUDU-511:
----------------------------------
Is this still an issue?
> Apparent TSAN race in rpc::ConnectionId destructor
> --------------------------------------------------
>
> Key: KUDU-511
> URL: https://issues.apache.org/jira/browse/KUDU-511
> Project: Kudu
> Issue Type: Bug
> Components: rpc
> Affects Versions: M4
> Reporter: Mike Percy
> Priority: Major
>
> Seen in a local unit test failure
> {noformat}
> [ RUN ] TestRpc.TestCallToBadServer
> I0916 20:08:22.244844 17247 rpc-test.cc:98] Status: Network error: RPC
> connection to 0.0.0.0:0 failed: connect: Connection refused (error 111)
> I0916 20:08:22.245394 17247 rpc-test.cc:98] Status: Network error: RPC
> connection to 0.0.0.0:0 failed: connect: Connection refused (error 111)
> I0916 20:08:22.245895 17247 rpc-test.cc:98] Status: Network error: RPC
> connection to 0.0.0.0:0 failed: connect: Connection refused (error 111)
> I0916 20:08:22.246326 17247 rpc-test.cc:98] Status: Network error: RPC
> connection to 0.0.0.0:0 failed: connect: Connection refused (error 111)
> I0916 20:08:22.246748 17247 rpc-test.cc:98] Status: Network error: RPC
> connection to 0.0.0.0:0 failed: connect: Connection refused (error 111)
> ==================
> WARNING: ThreadSanitizer: data race (pid=17247)
> Write of size 1 at 0x7d080000e33a by main thread:
> #0 operator delete(void*)
> /home/mpercy/src/kudu/thirdparty/llvm-3.4.2.src/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:592
> (rpc-test+0x00000004b0ab)
> #1 <null> <null>:0 (libstdc++.so.6+0x0000000ba4de)
> #2 kudu::rpc::ConnectionId::~ConnectionId()
> /home/mpercy/src/kudu/src/kudu/rpc/outbound_call.h:85
> (libkrpc.so+0x00000008b9ab)
> #3 kudu::rpc::Proxy::~Proxy()
> /home/mpercy/src/kudu/src/kudu/rpc/proxy.cc:55 (libkrpc.so+0x0000000a9fcb)
> #4 kudu::rpc::TestRpc_TestCallToBadServer_Test::TestBody()
> /home/mpercy/src/kudu/src/kudu/rpc/rpc-test.cc:101 (rpc-test+0x0000000b6073)
> #5 void
> testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test,
> void>(testing::Test*, void (testing::Test::*)(), char const*) <null>:0
> (libgtest.so+0x000000062819)
> #6 __libc_start_main /build/buildd/eglibc-2.19/csu/libc-start.c:287
> (libc.so.6+0x000000021ec4)
> Previous read of size 1 at 0x7d080000e33a by thread T2:
> #0 memcmp
> /home/mpercy/src/kudu/thirdparty/llvm-3.4.2.src/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:634
> (rpc-test+0x00000004bd1e)
> #1 std::char_traits<char>::compare(char const*, char const*, unsigned
> long)
> /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/bits/char_traits.h:255
> (rpc-test+0x0000000c06c9)
> #2
> _ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKSbIS2_St11char_traitsIS2_ESaIS2_EESA_
>
> /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/bits/basic_string.h:2496
> (rpc-test+0x0000000c0681)
> #3 kudu::rpc::UserCredentials::Equals(kudu::rpc::UserCredentials const&)
> const /home/mpercy/src/kudu/src/kudu/rpc/outbound_call.cc:308:11
> (libkrpc.so+0x00000008af58)
> #4 kudu::rpc::ConnectionId::Equals(kudu::rpc::ConnectionId const&) const
> /home/mpercy/src/kudu/src/kudu/rpc/outbound_call.cc:369
> (libkrpc.so+0x00000008b35a)
> #5 kudu::rpc::ConnectionIdEqual::operator()(kudu::rpc::ConnectionId
> const&, kudu::rpc::ConnectionId const&) const
> /home/mpercy/src/kudu/src/kudu/rpc/outbound_call.cc:377
> (libkrpc.so+0x00000008b3d0)
> #6 std::tr1::__detail::_Hash_code_base<kudu::rpc::ConnectionId,
> std::pair<kudu::rpc::ConnectionId const, scoped_refptr<kudu::rpc::Connection>
> >, std::_Select1st<std::pair<kudu::rpc::ConnectionId const,
> scoped_refptr<kudu::rpc::Connection> > >, kudu::rpc::ConnectionIdEqual,
> kudu::rpc::ConnectionIdHash, std::tr1::__detail::_Mod_range_hashing,
> std::tr1::__detail::_Default_ranged_hash,
> false>::_M_compare(kudu::rpc::ConnectionId const&, unsigned long,
> std::tr1::__detail::_Hash_node<std::pair<kudu::rpc::ConnectionId const,
> scoped_refptr<kudu::rpc::Connection> >, false>*) const
> /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/tr1/hashtable_policy.h:687
> (libkrpc.so+0x0000000b6ac9)
> #7 std::tr1::_Hashtable<kudu::rpc::ConnectionId,
> std::pair<kudu::rpc::ConnectionId const, scoped_refptr<kudu::rpc::Connection>
> >, std::allocator<std::pair<kudu::rpc::ConnectionId const,
> scoped_refptr<kudu::rpc::Connection> > >,
> std::_Select1st<std::pair<kudu::rpc::ConnectionId const,
> scoped_refptr<kudu::rpc::Connection> > >, kudu::rpc::ConnectionIdEqual,
> kudu::rpc::ConnectionIdHash, std::tr1::__detail::_Mod_range_hashing,
> std::tr1::__detail::_Default_ranged_hash,
> std::tr1::__detail::_Prime_rehash_policy, false, false,
> true>::_M_find_node(std::tr1::__detail::_Hash_node<std::pair<kudu::rpc::ConnectionId
> const, scoped_refptr<kudu::rpc::Connection> >, false>*,
> kudu::rpc::ConnectionId const&, unsigned long) const
> /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/tr1/hashtable.h:830
> (libkrpc.so+0x0000000b5e80)
> #8 std::tr1::_Hashtable<kudu::rpc::ConnectionId,
> std::pair<kudu::rpc::ConnectionId const, scoped_refptr<kudu::rpc::Connection>
> >, std::allocator<std::pair<kudu::rpc::ConnectionId const,
> scoped_refptr<kudu::rpc::Connection> > >,
> std::_Select1st<std::pair<kudu::rpc::ConnectionId const,
> scoped_refptr<kudu::rpc::Connection> > >, kudu::rpc::ConnectionIdEqual,
> kudu::rpc::ConnectionIdHash, std::tr1::__detail::_Mod_range_hashing,
> std::tr1::__detail::_Default_ranged_hash,
> std::tr1::__detail::_Prime_rehash_policy, false, false,
> true>::find(kudu::rpc::ConnectionId const&)
> /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/tr1/hashtable.h:698
> (libkrpc.so+0x0000000b189d)
> #9 kudu::rpc::ReactorThread::DestroyConnection(kudu::rpc::Connection*,
> kudu::Status const&) /home/mpercy/src/kudu/src/kudu/rpc/reactor.cc:428
> (libkrpc.so+0x0000000ad666)
> #10
> kudu::rpc::ReactorThread::CompleteConnectionNegotiation(scoped_refptr<kudu::rpc::Connection>
> const&, kudu::Status const&)
> /home/mpercy/src/kudu/src/kudu/rpc/reactor.cc:364 (libkrpc.so+0x0000000aef2b)
> #11 kudu::rpc::NegotiationCompletedTask::Run(kudu::rpc::ReactorThread*)
> /home/mpercy/src/kudu/src/kudu/rpc/connection.cc:543
> (libkrpc.so+0x00000009ac75)
> #12 kudu::rpc::ReactorThread::AsyncHandler(ev::async&, int)
> /home/mpercy/src/kudu/src/kudu/rpc/reactor.cc:170 (libkrpc.so+0x0000000acda4)
> #13 void ev::base<ev_async,
> ev::async>::method_thunk<kudu::rpc::ReactorThread,
> &kudu::rpc::ReactorThread::AsyncHandler>(ev_loop*, ev_async*, int)
> /home/mpercy/src/kudu/thirdparty/installed/include/ev++.h:479
> (libkrpc.so+0x0000000b8e43)
> #14 ev_invoke_pending
> /home/mpercy/src/kudu/thirdparty/libev-4.15/ev.c:2994
> (libev.so.4+0x000000004524)
> #15 kudu::rpc::ReactorThread::RunThread()
> /home/mpercy/src/kudu/src/kudu/rpc/reactor.cc:292 (libkrpc.so+0x0000000aba35)
> #16 boost::_mfi::mf0<void,
> kudu::rpc::ReactorThread>::operator()(kudu::rpc::ReactorThread*) const
> /usr/include/boost/bind/mem_fn_template.hpp:49 (libkrpc.so+0x0000000b8c2d)
> #17 void boost::_bi::list1<boost::_bi::value<kudu::rpc::ReactorThread*>
> >::operator()<boost::_mfi::mf0<void, kudu::rpc::ReactorThread>,
> boost::_bi::list0>(boost::_bi::type<void>, boost::_mfi::mf0<void,
> kudu::rpc::ReactorThread>&, boost::_bi::list0&, int)
> /usr/include/boost/bind/bind.hpp:253 (libkrpc.so+0x0000000b8b9a)
> #18 boost::_bi::bind_t<void, boost::_mfi::mf0<void,
> kudu::rpc::ReactorThread>,
> boost::_bi::list1<boost::_bi::value<kudu::rpc::ReactorThread*> >
> >::operator()() /usr/include/boost/bind/bind_template.hpp:20
> (libkrpc.so+0x0000000b8b43)
> #19
> boost::detail::function::void_function_obj_invoker0<boost::_bi::bind_t<void,
> boost::_mfi::mf0<void, kudu::rpc::ReactorThread>,
> boost::_bi::list1<boost::_bi::value<kudu::rpc::ReactorThread*> > >,
> void>::invoke(boost::detail::function::function_buffer&)
> /usr/include/boost/function/function_template.hpp:153
> (libkrpc.so+0x0000000b8949)
> #20 boost::function0<void>::operator()() const
> /usr/include/boost/function/function_template.hpp:766
> (libkrpc.so+0x00000008bcb1)
> #21 kudu::Thread::SuperviseThread(void*)
> /home/mpercy/src/kudu/src/kudu/util/thread.cc:435
> (libkudu_util.so+0x000000131bab)
> Location is heap block of size 31 at 0x7d080000e320 allocated by main
> thread:
> #0 operator new(unsigned long)
> /home/mpercy/src/kudu/thirdparty/llvm-3.4.2.src/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:560
> (rpc-test+0x00000004aa39)
> #1 <null> <null>:0 (libstdc++.so.6+0x0000000ba3b8)
> #2 kudu::rpc::Proxy::Proxy(std::tr1::shared_ptr<kudu::rpc::Messenger>
> const&, kudu::Sockaddr const&, std::string const&)
> /home/mpercy/src/kudu/src/kudu/rpc/proxy.cc:43 (libkrpc.so+0x0000000a9d67)
> #3 kudu::rpc::TestRpc_TestCallToBadServer_Test::TestBody()
> /home/mpercy/src/kudu/src/kudu/rpc/rpc-test.cc:92 (rpc-test+0x0000000b5e84)
> #4 void
> testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test,
> void>(testing::Test*, void (testing::Test::*)(), char const*) <null>:0
> (libgtest.so+0x000000062819)
> #5 __libc_start_main /build/buildd/eglibc-2.19/csu/libc-start.c:287
> (libc.so.6+0x000000021ec4)
> Thread T2 'rpc reactor-172' (tid=17293, running) created by main thread at:
> #0 pthread_create
> /home/mpercy/src/kudu/thirdparty/llvm-3.4.2.src/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:877
> (rpc-test+0x00000004e6eb)
> #1 kudu::Thread::StartThread(std::string const&, std::string const&,
> boost::function<void ()> const&, scoped_refptr<kudu::Thread>*)
> /home/mpercy/src/kudu/src/kudu/util/thread.cc:365
> (libkudu_util.so+0x000000131656)
> #2 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/mpercy/src/kudu/src/kudu/util/thread.h:122 (libkrpc.so+0x0000000b065c)
> #3 kudu::rpc::ReactorThread::Init()
> /home/mpercy/src/kudu/src/kudu/rpc/reactor.cc:79 (libkrpc.so+0x0000000ab8af)
> #4 kudu::rpc::Reactor::Init()
> /home/mpercy/src/kudu/src/kudu/rpc/reactor.cc:492 (libkrpc.so+0x0000000af72e)
> #5 kudu::rpc::Messenger::Init()
> /home/mpercy/src/kudu/src/kudu/rpc/messenger.cc:236
> (libkrpc.so+0x00000009e8c6)
> #6 kudu::rpc::MessengerBuilder::Build(kudu::rpc::Messenger**)
> /home/mpercy/src/kudu/src/kudu/rpc/messenger.cc:82 (libkrpc.so+0x00000009e6ca)
> #7
> kudu::rpc::MessengerBuilder::Build(std::tr1::shared_ptr<kudu::rpc::Messenger>*)
> /home/mpercy/src/kudu/src/kudu/rpc/messenger.cc:89
> (libkrpc.so+0x00000009e9a3)
> #8 kudu::rpc::RpcTestBase::CreateMessenger(std::string const&, int)
> /home/mpercy/src/kudu/src/kudu/rpc/rpc-test-base.h:222
> (rpc-test+0x0000000bb55e)
> #9 kudu::rpc::TestRpc_TestCallToBadServer_Test::TestBody()
> /home/mpercy/src/kudu/src/kudu/rpc/rpc-test.cc:89 (rpc-test+0x0000000b5e40)
> #10 void
> testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test,
> void>(testing::Test*, void (testing::Test::*)(), char const*) <null>:0
> (libgtest.so+0x000000062819)
> #11 __libc_start_main /build/buildd/eglibc-2.19/csu/libc-start.c:287
> (libc.so.6+0x000000021ec4)
> SUMMARY: ThreadSanitizer: data race ??:0 ??
> {noformat}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)