[ 
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)

Reply via email to