<testsuites>
  <testsuite name="RaftConsensusElectionITest">
    <testcase name="RunLeaderElection" classname="RaftConsensusElectionITest">
      <error message="WARNING: ThreadSanitizer: data race (pid=20091)  Write of size 8 at 0x7b2c00001558 by main thread:">
<![CDATA[
WARNING: ThreadSanitizer: data race (pid=20091)  Write of size 8 at 0x7b2c00001558 by main thread:
    #0 operator delete(void*) /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/llvm-6.0.0.src/projects/compiler-rt/lib/tsan/rtl/tsan_new_delete.cc:119 (raft_consensus_election-itest+0x4cc9d1)
    #1 std::__1::default_delete<kudu::ThreadPoolToken>::operator()(kudu::ThreadPoolToken*) const /home/jenkins-slave/workspace/kudu-master/0/thirdparty/installed/tsan/include/c++/v1/memory:2285:5 (libkudu_util.so+0x1c42f3)
    #2 std::__1::unique_ptr<kudu::ThreadPoolToken, std::__1::default_delete<kudu::ThreadPoolToken> >::reset(kudu::ThreadPoolToken*) /home/jenkins-slave/workspace/kudu-master/0/thirdparty/installed/tsan/include/c++/v1/memory:2598 (libkudu_util.so+0x1c42f3)
    #3 std::__1::unique_ptr<kudu::ThreadPoolToken, std::__1::default_delete<kudu::ThreadPoolToken> >::~unique_ptr() /home/jenkins-slave/workspace/kudu-master/0/thirdparty/installed/tsan/include/c++/v1/memory:2552 (libkudu_util.so+0x1c42f3)
    #4 kudu::ThreadPool::~ThreadPool() /home/jenkins-slave/workspace/kudu-master/0/src/kudu/util/threadpool.cc:342 (libkudu_util.so+0x1c42f3)
    #5 kudu::DefaultDeleter<kudu::ThreadPool>::operator()(kudu::ThreadPool*) const /home/jenkins-slave/workspace/kudu-master/0/src/kudu/gutil/gscoped_ptr.h:145:5 (libksck.so+0x4e4ae)
    #6 kudu::internal::gscoped_ptr_impl<kudu::ThreadPool, kudu::DefaultDeleter<kudu::ThreadPool> >::~gscoped_ptr_impl() /home/jenkins-slave/workspace/kudu-master/0/src/kudu/gutil/gscoped_ptr.h:228:7 (libksck.so+0x4e479)
    #7 gscoped_ptr<kudu::ThreadPool, kudu::DefaultDeleter<kudu::ThreadPool> >::~gscoped_ptr() /home/jenkins-slave/workspace/kudu-master/0/src/kudu/gutil/gscoped_ptr.h:318:7 (libksck.so+0x48269)
    #8 kudu::DnsResolver::~DnsResolver() /home/jenkins-slave/workspace/kudu-master/0/src/kudu/util/net/dns_resolver.cc:47:1 (libkudu_util.so+0x18a9fa)
    #9 kudu::DefaultDeleter<kudu::DnsResolver>::operator()(kudu::DnsResolver*) const /home/jenkins-slave/workspace/kudu-master/0/src/kudu/gutil/gscoped_ptr.h:145:5 (libkudu_client.so+0xd568e)
    #10 kudu::internal::gscoped_ptr_impl<kudu::DnsResolver, kudu::DefaultDeleter<kudu::DnsResolver> >::reset(kudu::DnsResolver*) /home/jenkins-slave/workspace/kudu-master/0/src/kudu/gutil/gscoped_ptr.h:254:7 (libkudu_client.so+0xd5644)
    #11 gscoped_ptr<kudu::DnsResolver, kudu::DefaultDeleter<kudu::DnsResolver> >::reset(kudu::DnsResolver*) /home/jenkins-slave/workspace/kudu-master/0/src/kudu/gutil/gscoped_ptr.h:375:46 (libkudu_client.so+0xca410)
    #12 kudu::client::KuduClient::Data::~Data() /home/jenkins-slave/workspace/kudu-master/0/src/kudu/client/client-internal.cc:370:17 (libkudu_client.so+0xdaffd)
    #13 kudu::client::KuduClient::~KuduClient() /home/jenkins-slave/workspace/kudu-master/0/src/kudu/client/client.cc:378:3 (libkudu_client.so+0xbff7c)
    #14 std::__1::default_delete<kudu::client::KuduClient>::operator()(kudu::client::KuduClient*) const /home/jenkins-slave/workspace/kudu-master/0/thirdparty/installed/tsan/include/c++/v1/memory:2285:5 (libkudu_client.so+0xd504b)
    #15 std::__1::__shared_ptr_pointer<kudu::client::KuduClient*, std::__1::default_delete<kudu::client::KuduClient>, std::__1::allocator<kudu::client::KuduClient> >::__on_zero_shared() /home/jenkins-slave/workspace/kudu-master/0/thirdparty/installed/tsan/include/c++/v1/memory:3586 (libkudu_client.so+0xd504b)
    #16 std::__1::__shared_count::__release_shared() /home/jenkins-slave/workspace/kudu-master/0/thirdparty/installed/tsan/include/c++/v1/memory:3490:9 (raft_consensus_election-itest+0x4daeae)
    #17 std::__1::__shared_weak_count::__release_shared() /home/jenkins-slave/workspace/kudu-master/0/thirdparty/installed/tsan/include/c++/v1/memory:3532 (raft_consensus_election-itest+0x4daeae)
    #18 std::__1::shared_ptr<kudu::client::KuduClient>::~shared_ptr() /home/jenkins-slave/workspace/kudu-master/0/thirdparty/installed/tsan/include/c++/v1/memory:4468 (raft_consensus_election-itest+0x4daeae)
    #19 kudu::tserver::TabletServerIntegrationTestBase::~TabletServerIntegrationTestBase() /home/jenkins-slave/workspace/kudu-master/0/src/kudu/integration-tests/ts_itest-base.h:46:7 (raft_consensus_election-itest+0x4dad9f)
    #20 kudu::tserver::RaftConsensusITestBase::~RaftConsensusITestBase() /home/jenkins-slave/workspace/kudu-master/0/src/kudu/integration-tests/raft_consensus-itest-base.h:43:7 (raft_consensus_election-itest+0x4da1af)
    #21 kudu::tserver::RaftConsensusElectionITest_RunLeaderElection_Test::~RaftConsensusElectionITest_RunLeaderElection_Test() /home/jenkins-slave/workspace/kudu-master/0/src/kudu/integration-tests/raft_consensus_election-itest.cc:143:1 (raft_consensus_election-itest+0x4da1d9)
    #22 testing::Test::DeleteSelf_() /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/googletest-release-1.8.0/googletest/include/gtest/gtest.h:453:24 (libgmock.so+0x55a07)
    #23 void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/googletest-release-1.8.0/googletest/src/gtest.cc:2402:10 (libgmock.so+0x552ef)
    #24 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/googletest-release-1.8.0/googletest/src/gtest.cc:2438 (libgmock.so+0x552ef)
    #25 testing::TestInfo::Run() /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/googletest-release-1.8.0/googletest/src/gtest.cc:2661:3 (libgmock.so+0x357b8)
    #26 testing::TestCase::Run() /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/googletest-release-1.8.0/googletest/src/gtest.cc:2774:28 (libgmock.so+0x36226)
    #27 testing::internal::UnitTestImpl::RunAllTests() /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/googletest-release-1.8.0/googletest/src/gtest.cc:4649:43 (libgmock.so+0x425fa)
    #28 bool testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/googletest-release-1.8.0/googletest/src/gtest.cc:2402:10 (libgmock.so+0x5625f)
    #29 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/googletest-release-1.8.0/googletest/src/gtest.cc:2438 (libgmock.so+0x5625f)
    #30 testing::UnitTest::Run() /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/googletest-release-1.8.0/googletest/src/gtest.cc:4257:10 (libgmock.so+0x41ee2)
    #31 RUN_ALL_TESTS() /home/jenkins-slave/workspace/kudu-master/0/thirdparty/installed/tsan/include/gtest/gtest.h:2233:46 (libkudu_test_main.so+0x340b)
    #32 main /home/jenkins-slave/workspace/kudu-master/0/src/kudu/util/test_main.cc:106:13 (libkudu_test_main.so+0x2bd6)

  Previous read of size 8 at 0x7b2c00001558 by thread T9:
    #0 scoped_refptr<kudu::Histogram>::operator kudu::Histogram* scoped_refptr<kudu::Histogram>::*() const /home/jenkins-slave/workspace/kudu-master/0/src/kudu/gutil/ref_counted.h:280:38 (libkrpc.so+0xc2e39)
    #1 kudu::ThreadPool::DoSubmit(std::__1::shared_ptr<kudu::Runnable>, kudu::ThreadPoolToken*) /home/jenkins-slave/workspace/kudu-master/0/src/kudu/util/threadpool.cc:551:7 (libkudu_util.so+0x1c3180)
    #2 kudu::ThreadPool::Submit(std::__1::shared_ptr<kudu::Runnable>) /home/jenkins-slave/workspace/kudu-master/0/src/kudu/util/threadpool.cc:458:10 (libkudu_util.so+0x1c4c5f)
    #3 kudu::ThreadPool::SubmitFunc(boost::function<void ()>) /home/jenkins-slave/workspace/kudu-master/0/src/kudu/util/threadpool.cc:454:10 (libkudu_util.so+0x1c4cf1)
    #4 kudu::DnsResolver::ResolveAddresses(kudu::HostPort const&, std::__1::vector<kudu::Sockaddr, std::__1::allocator<kudu::Sockaddr> >*, kudu::Callback<void (kudu::Status const&)> const&) /home/jenkins-slave/workspace/kudu-master/0/src/kudu/util/net/dns_resolver.cc:59:21 (libkudu_util.so+0x18aaab)
    #5 kudu::client::internal::RemoteTabletServer::InitProxy(kudu::client::KuduClient*, kudu::Callback<void (kudu::Status const&)> const&) /home/jenkins-slave/workspace/kudu-master/0/src/kudu/client/meta_cache.cc:144:33 (libkudu_client.so+0xff663)
    #6 kudu::client::internal::MetaCacheServerPicker::PickLeader(kudu::Callback<void (kudu::Status const&, kudu::client::internal::RemoteTabletServer*)> const&, kudu::MonoTime const&) /home/jenkins-slave/workspace/kudu-master/0/src/kudu/client/meta_cache.cc:450:11 (libkudu_client.so+0x10176b)
    #7 kudu::rpc::RetriableRpc<kudu::client::internal::RemoteTabletServer, kudu::tserver::WriteRequestPB, kudu::tserver::WriteResponsePB>::SendRpc() /home/jenkins-slave/workspace/kudu-master/0/src/kudu/rpc/retriable_rpc.h:144:19 (libkudu_client.so+0xb6988)
    #8 kudu::rpc::RpcRetrier::DelayedRetryCb(kudu::rpc::Rpc*, kudu::Status const&) /home/jenkins-slave/workspace/kudu-master/0/src/kudu/rpc/rpc.cc:94:10 (libkrpc.so+0xd5438)
    #9 boost::_mfi::mf2<void, kudu::rpc::RpcRetrier, kudu::rpc::Rpc*, kudu::Status const&>::operator()(kudu::rpc::RpcRetrier*, kudu::rpc::Rpc*, kudu::Status const&) const /home/jenkins-slave/workspace/kudu-master/0/thirdparty/installed/tsan/include/boost/bind/mem_fn_template.hpp:280:29 (libkrpc.so+0xd5e1a)
    #10 void boost::_bi::list3<boost::_bi::value<kudu::rpc::RpcRetrier*>, boost::_bi::value<kudu::rpc::Rpc*>, boost::arg<1> >::operator()<boost::_mfi::mf2<void, kudu::rpc::RpcRetrier, kudu::rpc::Rpc*, kudu::Status const&>, boost::_bi::rrlist1<kudu::Status const&> >(boost::_bi::type<void>, boost::_mfi::mf2<void, kudu::rpc::RpcRetrier, kudu::rpc::Rpc*, kudu::Status const&>&, boost::_bi::rrlist1<kudu::Status const&>&, int) /home/jenkins-slave/workspace/kudu-master/0/thirdparty/installed/tsan/include/boost/bind/bind.hpp:398:9 (libkrpc.so+0xd5d52)
    #11 void boost::_bi::bind_t<void, boost::_mfi::mf2<void, kudu::rpc::RpcRetrier, kudu::rpc::Rpc*, kudu::Status const&>, boost::_bi::list3<boost::_bi::value<kudu::rpc::RpcRetrier*>, boost::_bi::value<kudu::rpc::Rpc*>, boost::arg<1> > >::operator()<kudu::Status const&>(kudu::Status const&) /home/jenkins-slave/workspace/kudu-master/0/thirdparty/installed/tsan/include/boost/bind/bind.hpp:1234:16 (libkrpc.so+0xd5c78)
    #12 boost::detail::function::void_function_obj_invoker1<boost::_bi::bind_t<void, boost::_mfi::mf2<void, kudu::rpc::RpcRetrier, kudu::rpc::Rpc*, kudu::Status const&>, boost::_bi::list3<boost::_bi::value<kudu::rpc::RpcRetrier*>, boost::_bi::value<kudu::rpc::Rpc*>, boost::arg<1> > >, void, kudu::Status const&>::invoke(boost::detail::function::function_buffer&, kudu::Status const&) /home/jenkins-slave/workspace/kudu-master/0/thirdparty/installed/tsan/include/boost/function/function_template.hpp:159:11 (libkrpc.so+0xd5a13)
    #13 boost::function1<void, kudu::Status const&>::operator()(kudu::Status const&) const /home/jenkins-slave/workspace/kudu-master/0/thirdparty/installed/tsan/include/boost/function/function_template.hpp:770:14 (libkrpc.so+0xc4014)
    #14 kudu::rpc::DelayedTask::TimerHandler(ev::timer&, int) /home/jenkins-slave/workspace/kudu-master/0/src/kudu/rpc/reactor.cc:705:5 (libkrpc.so+0xc18a6)
    #15 void ev::base<ev_timer, ev::timer>::method_thunk<kudu::rpc::DelayedTask, &kudu::rpc::DelayedTask::TimerHandler>(ev_loop*, ev_timer*, int) /home/jenkins-slave/workspace/kudu-master/0/thirdparty/installed/tsan/include/ev++.h:479:7 (libkrpc.so+0xc970a)
    #16 ev_invoke_pending /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/libev-4.20/ev.c:3155:11 (libev.so.4+0x9800)
    #17 kudu::rpc::ReactorThread::InvokePendingCb(ev_loop*) /home/jenkins-slave/workspace/kudu-master/0/src/kudu/rpc/reactor.cc:176:3 (libkrpc.so+0xbdaa5)
    #18 ev_run /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/libev-4.20/ev.c:3555:7 (libev.so.4+0xa90d)
    #19 ev::loop_ref::run(int) /home/jenkins-slave/workspace/kudu-master/0/thirdparty/installed/tsan/include/ev++.h:211:7 (libkrpc.so+0xc3708)
    #20 kudu::rpc::ReactorThread::RunThread() /home/jenkins-slave/workspace/kudu-master/0/src/kudu/rpc/reactor.cc:471:9 (libkrpc.so+0xbdbea)
    #21 boost::_mfi::mf0<void, kudu::rpc::ReactorThread>::operator()(kudu::rpc::ReactorThread*) const /home/jenkins-slave/workspace/kudu-master/0/thirdparty/installed/tsan/include/boost/bind/mem_fn_template.hpp:49:29 (libkrpc.so+0xc79a9)
    #22 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) /home/jenkins-slave/workspace/kudu-master/0/thirdparty/installed/tsan/include/boost/bind/bind.hpp:259:9 (libkrpc.so+0xc78fa)
    #23 boost::_bi::bind_t<void, boost::_mfi::mf0<void, kudu::rpc::ReactorThread>, boost::_bi::list1<boost::_bi::value<kudu::rpc::ReactorThread*> > >::operator()() /home/jenkins-slave/workspace/kudu-master/0/thirdparty/installed/tsan/include/boost/bind/bind.hpp:1222:16 (libkrpc.so+0xc7883)
    #24 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&) /home/jenkins-slave/workspace/kudu-master/0/thirdparty/installed/tsan/include/boost/function/function_template.hpp:159:11 (libkrpc.so+0xc7679)
    #25 boost::function0<void>::operator()() const /home/jenkins-slave/workspace/kudu-master/0/thirdparty/installed/tsan/include/boost/function/function_template.hpp:770:14 (libkrpc.so+0xb7781)
    #26 kudu::Thread::SuperviseThread(void*) /home/jenkins-slave/workspace/kudu-master/0/src/kudu/util/thread.cc:603:3 (libkudu_util.so+0x1bcff4)

  As if synchronized via sleep:
    #0 nanosleep /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/llvm-6.0.0.src/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:355 (raft_consensus_election-itest+0x442f6a)
    #1 base::SleepForNanoseconds(long) /home/jenkins-slave/workspace/kudu-master/0/src/kudu/gutil/sysinfo.cc:89:10 (libgutil.so+0x61c92)
    #2 kudu::SleepFor(kudu::MonoDelta const&) /home/jenkins-slave/workspace/kudu-master/0/src/kudu/util/monotime.cc:267:3 (libkudu_util.so+0x1893b6)
    #3 kudu::ClusterVerifier::CheckCluster() /home/jenkins-slave/workspace/kudu-master/0/src/kudu/integration-tests/cluster_verifier.cc:85:5 (libitest_util.so+0x5725d)
    #4 kudu::tserver::TabletServerIntegrationTestBase::AssertAllReplicasAgree(int) /home/jenkins-slave/workspace/kudu-master/0/src/kudu/integration-tests/ts_itest-base.cc:554:3 (libitest_util.so+0x73d9a)
    #5 kudu::tserver::RaftConsensusElectionITest_RunLeaderElection_Test::TestBody() /home/jenkins-slave/workspace/kudu-master/0/src/kudu/integration-tests/raft_consensus_election-itest.cc:182:3 (raft_consensus_election-itest+0x4cffa3)
    #6 void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/googletest-release-1.8.0/googletest/src/gtest.cc:2402:10 (libgmock.so+0x552ef)
    #7 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/googletest-release-1.8.0/googletest/src/gtest.cc:2438 (libgmock.so+0x552ef)
    #8 testing::Test::Run() /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/googletest-release-1.8.0/googletest/src/gtest.cc:2474:5 (libgmock.so+0x344b8)
    #9 testing::TestInfo::Run() /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/googletest-release-1.8.0/googletest/src/gtest.cc:2656:11 (libgmock.so+0x3574c)
    #10 testing::TestCase::Run() /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/googletest-release-1.8.0/googletest/src/gtest.cc:2774:28 (libgmock.so+0x36226)
    #11 testing::internal::UnitTestImpl::RunAllTests() /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/googletest-release-1.8.0/googletest/src/gtest.cc:4649:43 (libgmock.so+0x425fa)
    #12 bool testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/googletest-release-1.8.0/googletest/src/gtest.cc:2402:10 (libgmock.so+0x5625f)
    #13 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/googletest-release-1.8.0/googletest/src/gtest.cc:2438 (libgmock.so+0x5625f)
    #14 testing::UnitTest::Run() /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/googletest-release-1.8.0/googletest/src/gtest.cc:4257:10 (libgmock.so+0x41ee2)
    #15 RUN_ALL_TESTS() /home/jenkins-slave/workspace/kudu-master/0/thirdparty/installed/tsan/include/gtest/gtest.h:2233:46 (libkudu_test_main.so+0x340b)
    #16 main /home/jenkins-slave/workspace/kudu-master/0/src/kudu/util/test_main.cc:106:13 (libkudu_test_main.so+0x2bd6)

  Thread T9 'rpc reactor-205' (tid=20551, running) created by main thread at:
    #0 pthread_create /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/llvm-6.0.0.src/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:992 (raft_consensus_election-itest+0x43ced6)
    #1 kudu::Thread::StartThread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, boost::function<void ()> const&, unsigned long, scoped_refptr<kudu::Thread>*) /home/jenkins-slave/workspace/kudu-master/0/src/kudu/util/thread.cc:556:15 (libkudu_util.so+0x1bca1f)
    #2 kudu::Status kudu::Thread::Create<void (kudu::rpc::ReactorThread::*)(), kudu::rpc::ReactorThread*>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, void (kudu::rpc::ReactorThread::* const&)(), kudu::rpc::ReactorThread* const&, scoped_refptr<kudu::Thread>*) /home/jenkins-slave/workspace/kudu-master/0/src/kudu/util/thread.h:164:12 (libkrpc.so+0xc2dd5)
    #3 kudu::rpc::ReactorThread::Init() /home/jenkins-slave/workspace/kudu-master/0/src/kudu/rpc/reactor.cc:168:10 (libkrpc.so+0xbd80e)
    #4 kudu::rpc::Reactor::Init() /home/jenkins-slave/workspace/kudu-master/0/src/kudu/rpc/reactor.cc:722:18 (libkrpc.so+0xc1cd1)
    #5 kudu::rpc::Messenger::Init() /home/jenkins-slave/workspace/kudu-master/0/src/kudu/rpc/messenger.cc:436:5 (libkrpc.so+0xa8402)
    #6 kudu::rpc::MessengerBuilder::Build(std::__1::shared_ptr<kudu::rpc::Messenger>*) /home/jenkins-slave/workspace/kudu-master/0/src/kudu/rpc/messenger.cc:199:3 (libkrpc.so+0xa7e5d)
    #7 kudu::client::KuduClientBuilder::Build(std::__1::shared_ptr<kudu::client::KuduClient>*) /home/jenkins-slave/workspace/kudu-master/0/src/kudu/client/client.cc:332:3 (libkudu_client.so+0xbf3e1)
    #8 kudu::tserver::TabletServerIntegrationTestBase::CreateClient(std::__1::shared_ptr<kudu::client::KuduClient>*) /home/jenkins-slave/workspace/kudu-master/0/src/kudu/integration-tests/ts_itest-base.cc:520:3 (libitest_util.so+0x73302)
    #9 kudu::tserver::TabletServerIntegrationTestBase::BuildAndStart(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&) /home/jenkins-slave/workspace/kudu-master/0/src/kudu/integration-tests/ts_itest-base.cc:545:3 (libitest_util.so+0x73a1f)
    #10 kudu::tserver::RaftConsensusElectionITest_RunLeaderElection_Test::TestBody() /home/jenkins-slave/workspace/kudu-master/0/src/kudu/integration-tests/raft_consensus_election-itest.cc:147:3 (raft_consensus_election-itest+0x4cfb63)
    #11 void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/googletest-release-1.8.0/googletest/src/gtest.cc:2402:10 (libgmock.so+0x552ef)
    #12 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/googletest-release-1.8.0/googletest/src/gtest.cc:2438 (libgmock.so+0x552ef)
    #13 testing::Test::Run() /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/googletest-release-1.8.0/googletest/src/gtest.cc:2474:5 (libgmock.so+0x344b8)
    #14 testing::TestInfo::Run() /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/googletest-release-1.8.0/googletest/src/gtest.cc:2656:11 (libgmock.so+0x3574c)
    #15 testing::TestCase::Run() /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/googletest-release-1.8.0/googletest/src/gtest.cc:2774:28 (libgmock.so+0x36226)
    #16 testing::internal::UnitTestImpl::RunAllTests() /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/googletest-release-1.8.0/googletest/src/gtest.cc:4649:43 (libgmock.so+0x425fa)
    #17 bool testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/googletest-release-1.8.0/googletest/src/gtest.cc:2402:10 (libgmock.so+0x5625f)
    #18 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/googletest-release-1.8.0/googletest/src/gtest.cc:2438 (libgmock.so+0x5625f)
    #19 testing::UnitTest::Run() /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/googletest-release-1.8.0/googletest/src/gtest.cc:4257:10 (libgmock.so+0x41ee2)
    #20 RUN_ALL_TESTS() /home/jenkins-slave/workspace/kudu-master/0/thirdparty/installed/tsan/include/gtest/gtest.h:2233:46 (libkudu_test_main.so+0x340b)
    #21 main /home/jenkins-slave/workspace/kudu-master/0/src/kudu/util/test_main.cc:106:13 (libkudu_test_main.so+0x2bd6)


WARNING: ThreadSanitizer: data race (pid=20091)  Write of size 8 at 0x7b5000001ba0 by main thread:
    #0 operator delete(void*) /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/llvm-6.0.0.src/projects/compiler-rt/lib/tsan/rtl/tsan_new_delete.cc:119 (raft_consensus_election-itest+0x4cc9d1)
    #1 kudu::DefaultDeleter<kudu::ThreadPool>::operator()(kudu::ThreadPool*) const /home/jenkins-slave/workspace/kudu-master/0/src/kudu/gutil/gscoped_ptr.h:145:5 (libksck.so+0x4e4b6)
    #2 kudu::internal::gscoped_ptr_impl<kudu::ThreadPool, kudu::DefaultDeleter<kudu::ThreadPool> >::~gscoped_ptr_impl() /home/jenkins-slave/workspace/kudu-master/0/src/kudu/gutil/gscoped_ptr.h:228:7 (libksck.so+0x4e479)
    #3 gscoped_ptr<kudu::ThreadPool, kudu::DefaultDeleter<kudu::ThreadPool> >::~gscoped_ptr() /home/jenkins-slave/workspace/kudu-master/0/src/kudu/gutil/gscoped_ptr.h:318:7 (libksck.so+0x48269)
    #4 kudu::DnsResolver::~DnsResolver() /home/jenkins-slave/workspace/kudu-master/0/src/kudu/util/net/dns_resolver.cc:47:1 (libkudu_util.so+0x18a9fa)
    #5 kudu::DefaultDeleter<kudu::DnsResolver>::operator()(kudu::DnsResolver*) const /home/jenkins-slave/workspace/kudu-master/0/src/kudu/gutil/gscoped_ptr.h:145:5 (libkudu_client.so+0xd568e)
    #6 kudu::internal::gscoped_ptr_impl<kudu::DnsResolver, kudu::DefaultDeleter<kudu::DnsResolver> >::reset(kudu::DnsResolver*) /home/jenkins-slave/workspace/kudu-master/0/src/kudu/gutil/gscoped_ptr.h:254:7 (libkudu_client.so+0xd5644)
    #7 gscoped_ptr<kudu::DnsResolver, kudu::DefaultDeleter<kudu::DnsResolver> >::reset(kudu::DnsResolver*) /home/jenkins-slave/workspace/kudu-master/0/src/kudu/gutil/gscoped_ptr.h:375:46 (libkudu_client.so+0xca410)
    #8 kudu::client::KuduClient::Data::~Data() /home/jenkins-slave/workspace/kudu-master/0/src/kudu/client/client-internal.cc:370:17 (libkudu_client.so+0xdaffd)
    #9 kudu::client::KuduClient::~KuduClient() /home/jenkins-slave/workspace/kudu-master/0/src/kudu/client/client.cc:378:3 (libkudu_client.so+0xbff7c)
    #10 std::__1::default_delete<kudu::client::KuduClient>::operator()(kudu::client::KuduClient*) const /home/jenkins-slave/workspace/kudu-master/0/thirdparty/installed/tsan/include/c++/v1/memory:2285:5 (libkudu_client.so+0xd504b)
    #11 std::__1::__shared_ptr_pointer<kudu::client::KuduClient*, std::__1::default_delete<kudu::client::KuduClient>, std::__1::allocator<kudu::client::KuduClient> >::__on_zero_shared() /home/jenkins-slave/workspace/kudu-master/0/thirdparty/installed/tsan/include/c++/v1/memory:3586 (libkudu_client.so+0xd504b)
    #12 std::__1::__shared_count::__release_shared() /home/jenkins-slave/workspace/kudu-master/0/thirdparty/installed/tsan/include/c++/v1/memory:3490:9 (raft_consensus_election-itest+0x4daeae)
    #13 std::__1::__shared_weak_count::__release_shared() /home/jenkins-slave/workspace/kudu-master/0/thirdparty/installed/tsan/include/c++/v1/memory:3532 (raft_consensus_election-itest+0x4daeae)
    #14 std::__1::shared_ptr<kudu::client::KuduClient>::~shared_ptr() /home/jenkins-slave/workspace/kudu-master/0/thirdparty/installed/tsan/include/c++/v1/memory:4468 (raft_consensus_election-itest+0x4daeae)
    #15 kudu::tserver::TabletServerIntegrationTestBase::~TabletServerIntegrationTestBase() /home/jenkins-slave/workspace/kudu-master/0/src/kudu/integration-tests/ts_itest-base.h:46:7 (raft_consensus_election-itest+0x4dad9f)
    #16 kudu::tserver::RaftConsensusITestBase::~RaftConsensusITestBase() /home/jenkins-slave/workspace/kudu-master/0/src/kudu/integration-tests/raft_consensus-itest-base.h:43:7 (raft_consensus_election-itest+0x4da1af)
    #17 kudu::tserver::RaftConsensusElectionITest_RunLeaderElection_Test::~RaftConsensusElectionITest_RunLeaderElection_Test() /home/jenkins-slave/workspace/kudu-master/0/src/kudu/integration-tests/raft_consensus_election-itest.cc:143:1 (raft_consensus_election-itest+0x4da1d9)
    #18 testing::Test::DeleteSelf_() /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/googletest-release-1.8.0/googletest/include/gtest/gtest.h:453:24 (libgmock.so+0x55a07)
    #19 void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/googletest-release-1.8.0/googletest/src/gtest.cc:2402:10 (libgmock.so+0x552ef)
    #20 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/googletest-release-1.8.0/googletest/src/gtest.cc:2438 (libgmock.so+0x552ef)
    #21 testing::TestInfo::Run() /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/googletest-release-1.8.0/googletest/src/gtest.cc:2661:3 (libgmock.so+0x357b8)
    #22 testing::TestCase::Run() /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/googletest-release-1.8.0/googletest/src/gtest.cc:2774:28 (libgmock.so+0x36226)
    #23 testing::internal::UnitTestImpl::RunAllTests() /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/googletest-release-1.8.0/googletest/src/gtest.cc:4649:43 (libgmock.so+0x425fa)
    #24 bool testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/googletest-release-1.8.0/googletest/src/gtest.cc:2402:10 (libgmock.so+0x5625f)
    #25 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/googletest-release-1.8.0/googletest/src/gtest.cc:2438 (libgmock.so+0x5625f)
    #26 testing::UnitTest::Run() /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/googletest-release-1.8.0/googletest/src/gtest.cc:4257:10 (libgmock.so+0x41ee2)
    #27 RUN_ALL_TESTS() /home/jenkins-slave/workspace/kudu-master/0/thirdparty/installed/tsan/include/gtest/gtest.h:2233:46 (libkudu_test_main.so+0x340b)
    #28 main /home/jenkins-slave/workspace/kudu-master/0/src/kudu/util/test_main.cc:106:13 (libkudu_test_main.so+0x2bd6)

  Previous read of size 8 at 0x7b5000001ba0 by thread T9:
    #0 scoped_refptr<kudu::Histogram>::operator kudu::Histogram* scoped_refptr<kudu::Histogram>::*() const /home/jenkins-slave/workspace/kudu-master/0/src/kudu/gutil/ref_counted.h:280:38 (libkrpc.so+0xc2e39)
    #1 kudu::ThreadPool::DoSubmit(std::__1::shared_ptr<kudu::Runnable>, kudu::ThreadPoolToken*) /home/jenkins-slave/workspace/kudu-master/0/src/kudu/util/threadpool.cc:548:7 (libkudu_util.so+0x1c3151)
    #2 kudu::ThreadPool::Submit(std::__1::shared_ptr<kudu::Runnable>) /home/jenkins-slave/workspace/kudu-master/0/src/kudu/util/threadpool.cc:458:10 (libkudu_util.so+0x1c4c5f)
    #3 kudu::ThreadPool::SubmitFunc(boost::function<void ()>) /home/jenkins-slave/workspace/kudu-master/0/src/kudu/util/threadpool.cc:454:10 (libkudu_util.so+0x1c4cf1)
    #4 kudu::DnsResolver::ResolveAddresses(kudu::HostPort const&, std::__1::vector<kudu::Sockaddr, std::__1::allocator<kudu::Sockaddr> >*, kudu::Callback<void (kudu::Status const&)> const&) /home/jenkins-slave/workspace/kudu-master/0/src/kudu/util/net/dns_resolver.cc:59:21 (libkudu_util.so+0x18aaab)
    #5 kudu::client::internal::RemoteTabletServer::InitProxy(kudu::client::KuduClient*, kudu::Callback<void (kudu::Status const&)> const&) /home/jenkins-slave/workspace/kudu-master/0/src/kudu/client/meta_cache.cc:144:33 (libkudu_client.so+0xff663)
    #6 kudu::client::internal::MetaCacheServerPicker::PickLeader(kudu::Callback<void (kudu::Status const&, kudu::client::internal::RemoteTabletServer*)> const&, kudu::MonoTime const&) /home/jenkins-slave/workspace/kudu-master/0/src/kudu/client/meta_cache.cc:450:11 (libkudu_client.so+0x10176b)
    #7 kudu::rpc::RetriableRpc<kudu::client::internal::RemoteTabletServer, kudu::tserver::WriteRequestPB, kudu::tserver::WriteResponsePB>::SendRpc() /home/jenkins-slave/workspace/kudu-master/0/src/kudu/rpc/retriable_rpc.h:144:19 (libkudu_client.so+0xb6988)
    #8 kudu::rpc::RpcRetrier::DelayedRetryCb(kudu::rpc::Rpc*, kudu::Status const&) /home/jenkins-slave/workspace/kudu-master/0/src/kudu/rpc/rpc.cc:94:10 (libkrpc.so+0xd5438)
    #9 boost::_mfi::mf2<void, kudu::rpc::RpcRetrier, kudu::rpc::Rpc*, kudu::Status const&>::operator()(kudu::rpc::RpcRetrier*, kudu::rpc::Rpc*, kudu::Status const&) const /home/jenkins-slave/workspace/kudu-master/0/thirdparty/installed/tsan/include/boost/bind/mem_fn_template.hpp:280:29 (libkrpc.so+0xd5e1a)
    #10 void boost::_bi::list3<boost::_bi::value<kudu::rpc::RpcRetrier*>, boost::_bi::value<kudu::rpc::Rpc*>, boost::arg<1> >::operator()<boost::_mfi::mf2<void, kudu::rpc::RpcRetrier, kudu::rpc::Rpc*, kudu::Status const&>, boost::_bi::rrlist1<kudu::Status const&> >(boost::_bi::type<void>, boost::_mfi::mf2<void, kudu::rpc::RpcRetrier, kudu::rpc::Rpc*, kudu::Status const&>&, boost::_bi::rrlist1<kudu::Status const&>&, int) /home/jenkins-slave/workspace/kudu-master/0/thirdparty/installed/tsan/include/boost/bind/bind.hpp:398:9 (libkrpc.so+0xd5d52)
    #11 void boost::_bi::bind_t<void, boost::_mfi::mf2<void, kudu::rpc::RpcRetrier, kudu::rpc::Rpc*, kudu::Status const&>, boost::_bi::list3<boost::_bi::value<kudu::rpc::RpcRetrier*>, boost::_bi::value<kudu::rpc::Rpc*>, boost::arg<1> > >::operator()<kudu::Status const&>(kudu::Status const&) /home/jenkins-slave/workspace/kudu-master/0/thirdparty/installed/tsan/include/boost/bind/bind.hpp:1234:16 (libkrpc.so+0xd5c78)
    #12 boost::detail::function::void_function_obj_invoker1<boost::_bi::bind_t<void, boost::_mfi::mf2<void, kudu::rpc::RpcRetrier, kudu::rpc::Rpc*, kudu::Status const&>, boost::_bi::list3<boost::_bi::value<kudu::rpc::RpcRetrier*>, boost::_bi::value<kudu::rpc::Rpc*>, boost::arg<1> > >, void, kudu::Status const&>::invoke(boost::detail::function::function_buffer&, kudu::Status const&) /home/jenkins-slave/workspace/kudu-master/0/thirdparty/installed/tsan/include/boost/function/function_template.hpp:159:11 (libkrpc.so+0xd5a13)
    #13 boost::function1<void, kudu::Status const&>::operator()(kudu::Status const&) const /home/jenkins-slave/workspace/kudu-master/0/thirdparty/installed/tsan/include/boost/function/function_template.hpp:770:14 (libkrpc.so+0xc4014)
    #14 kudu::rpc::DelayedTask::TimerHandler(ev::timer&, int) /home/jenkins-slave/workspace/kudu-master/0/src/kudu/rpc/reactor.cc:705:5 (libkrpc.so+0xc18a6)
    #15 void ev::base<ev_timer, ev::timer>::method_thunk<kudu::rpc::DelayedTask, &kudu::rpc::DelayedTask::TimerHandler>(ev_loop*, ev_timer*, int) /home/jenkins-slave/workspace/kudu-master/0/thirdparty/installed/tsan/include/ev++.h:479:7 (libkrpc.so+0xc970a)
    #16 ev_invoke_pending /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/libev-4.20/ev.c:3155:11 (libev.so.4+0x9800)
    #17 kudu::rpc::ReactorThread::InvokePendingCb(ev_loop*) /home/jenkins-slave/workspace/kudu-master/0/src/kudu/rpc/reactor.cc:176:3 (libkrpc.so+0xbdaa5)
    #18 ev_run /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/libev-4.20/ev.c:3555:7 (libev.so.4+0xa90d)
    #19 ev::loop_ref::run(int) /home/jenkins-slave/workspace/kudu-master/0/thirdparty/installed/tsan/include/ev++.h:211:7 (libkrpc.so+0xc3708)
    #20 kudu::rpc::ReactorThread::RunThread() /home/jenkins-slave/workspace/kudu-master/0/src/kudu/rpc/reactor.cc:471:9 (libkrpc.so+0xbdbea)
    #21 boost::_mfi::mf0<void, kudu::rpc::ReactorThread>::operator()(kudu::rpc::ReactorThread*) const /home/jenkins-slave/workspace/kudu-master/0/thirdparty/installed/tsan/include/boost/bind/mem_fn_template.hpp:49:29 (libkrpc.so+0xc79a9)
    #22 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) /home/jenkins-slave/workspace/kudu-master/0/thirdparty/installed/tsan/include/boost/bind/bind.hpp:259:9 (libkrpc.so+0xc78fa)
    #23 boost::_bi::bind_t<void, boost::_mfi::mf0<void, kudu::rpc::ReactorThread>, boost::_bi::list1<boost::_bi::value<kudu::rpc::ReactorThread*> > >::operator()() /home/jenkins-slave/workspace/kudu-master/0/thirdparty/installed/tsan/include/boost/bind/bind.hpp:1222:16 (libkrpc.so+0xc7883)
    #24 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&) /home/jenkins-slave/workspace/kudu-master/0/thirdparty/installed/tsan/include/boost/function/function_template.hpp:159:11 (libkrpc.so+0xc7679)
    #25 boost::function0<void>::operator()() const /home/jenkins-slave/workspace/kudu-master/0/thirdparty/installed/tsan/include/boost/function/function_template.hpp:770:14 (libkrpc.so+0xb7781)
    #26 kudu::Thread::SuperviseThread(void*) /home/jenkins-slave/workspace/kudu-master/0/src/kudu/util/thread.cc:603:3 (libkudu_util.so+0x1bcff4)

  As if synchronized via sleep:
    #0 nanosleep /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/llvm-6.0.0.src/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:355 (raft_consensus_election-itest+0x442f6a)
    #1 base::SleepForNanoseconds(long) /home/jenkins-slave/workspace/kudu-master/0/src/kudu/gutil/sysinfo.cc:89:10 (libgutil.so+0x61c92)
    #2 kudu::SleepFor(kudu::MonoDelta const&) /home/jenkins-slave/workspace/kudu-master/0/src/kudu/util/monotime.cc:267:3 (libkudu_util.so+0x1893b6)
    #3 kudu::ClusterVerifier::CheckCluster() /home/jenkins-slave/workspace/kudu-master/0/src/kudu/integration-tests/cluster_verifier.cc:85:5 (libitest_util.so+0x5725d)
    #4 kudu::tserver::TabletServerIntegrationTestBase::AssertAllReplicasAgree(int) /home/jenkins-slave/workspace/kudu-master/0/src/kudu/integration-tests/ts_itest-base.cc:554:3 (libitest_util.so+0x73d9a)
    #5 kudu::tserver::RaftConsensusElectionITest_RunLeaderElection_Test::TestBody() /home/jenkins-slave/workspace/kudu-master/0/src/kudu/integration-tests/raft_consensus_election-itest.cc:182:3 (raft_consensus_election-itest+0x4cffa3)
    #6 void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/googletest-release-1.8.0/googletest/src/gtest.cc:2402:10 (libgmock.so+0x552ef)
    #7 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/googletest-release-1.8.0/googletest/src/gtest.cc:2438 (libgmock.so+0x552ef)
    #8 testing::Test::Run() /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/googletest-release-1.8.0/googletest/src/gtest.cc:2474:5 (libgmock.so+0x344b8)
    #9 testing::TestInfo::Run() /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/googletest-release-1.8.0/googletest/src/gtest.cc:2656:11 (libgmock.so+0x3574c)
    #10 testing::TestCase::Run() /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/googletest-release-1.8.0/googletest/src/gtest.cc:2774:28 (libgmock.so+0x36226)
    #11 testing::internal::UnitTestImpl::RunAllTests() /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/googletest-release-1.8.0/googletest/src/gtest.cc:4649:43 (libgmock.so+0x425fa)
    #12 bool testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/googletest-release-1.8.0/googletest/src/gtest.cc:2402:10 (libgmock.so+0x5625f)
    #13 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/googletest-release-1.8.0/googletest/src/gtest.cc:2438 (libgmock.so+0x5625f)
    #14 testing::UnitTest::Run() /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/googletest-release-1.8.0/googletest/src/gtest.cc:4257:10 (libgmock.so+0x41ee2)
    #15 RUN_ALL_TESTS() /home/jenkins-slave/workspace/kudu-master/0/thirdparty/installed/tsan/include/gtest/gtest.h:2233:46 (libkudu_test_main.so+0x340b)
    #16 main /home/jenkins-slave/workspace/kudu-master/0/src/kudu/util/test_main.cc:106:13 (libkudu_test_main.so+0x2bd6)

  Thread T9 'rpc reactor-205' (tid=20551, running) created by main thread at:
    #0 pthread_create /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/llvm-6.0.0.src/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:992 (raft_consensus_election-itest+0x43ced6)
    #1 kudu::Thread::StartThread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, boost::function<void ()> const&, unsigned long, scoped_refptr<kudu::Thread>*) /home/jenkins-slave/workspace/kudu-master/0/src/kudu/util/thread.cc:556:15 (libkudu_util.so+0x1bca1f)
    #2 kudu::Status kudu::Thread::Create<void (kudu::rpc::ReactorThread::*)(), kudu::rpc::ReactorThread*>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, void (kudu::rpc::ReactorThread::* const&)(), kudu::rpc::ReactorThread* const&, scoped_refptr<kudu::Thread>*) /home/jenkins-slave/workspace/kudu-master/0/src/kudu/util/thread.h:164:12 (libkrpc.so+0xc2dd5)
    #3 kudu::rpc::ReactorThread::Init() /home/jenkins-slave/workspace/kudu-master/0/src/kudu/rpc/reactor.cc:168:10 (libkrpc.so+0xbd80e)
    #4 kudu::rpc::Reactor::Init() /home/jenkins-slave/workspace/kudu-master/0/src/kudu/rpc/reactor.cc:722:18 (libkrpc.so+0xc1cd1)
    #5 kudu::rpc::Messenger::Init() /home/jenkins-slave/workspace/kudu-master/0/src/kudu/rpc/messenger.cc:436:5 (libkrpc.so+0xa8402)
    #6 kudu::rpc::MessengerBuilder::Build(std::__1::shared_ptr<kudu::rpc::Messenger>*) /home/jenkins-slave/workspace/kudu-master/0/src/kudu/rpc/messenger.cc:199:3 (libkrpc.so+0xa7e5d)
    #7 kudu::client::KuduClientBuilder::Build(std::__1::shared_ptr<kudu::client::KuduClient>*) /home/jenkins-slave/workspace/kudu-master/0/src/kudu/client/client.cc:332:3 (libkudu_client.so+0xbf3e1)
    #8 kudu::tserver::TabletServerIntegrationTestBase::CreateClient(std::__1::shared_ptr<kudu::client::KuduClient>*) /home/jenkins-slave/workspace/kudu-master/0/src/kudu/integration-tests/ts_itest-base.cc:520:3 (libitest_util.so+0x73302)
    #9 kudu::tserver::TabletServerIntegrationTestBase::BuildAndStart(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&) /home/jenkins-slave/workspace/kudu-master/0/src/kudu/integration-tests/ts_itest-base.cc:545:3 (libitest_util.so+0x73a1f)
    #10 kudu::tserver::RaftConsensusElectionITest_RunLeaderElection_Test::TestBody() /home/jenkins-slave/workspace/kudu-master/0/src/kudu/integration-tests/raft_consensus_election-itest.cc:147:3 (raft_consensus_election-itest+0x4cfb63)
    #11 void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/googletest-release-1.8.0/googletest/src/gtest.cc:2402:10 (libgmock.so+0x552ef)
    #12 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/googletest-release-1.8.0/googletest/src/gtest.cc:2438 (libgmock.so+0x552ef)
    #13 testing::Test::Run() /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/googletest-release-1.8.0/googletest/src/gtest.cc:2474:5 (libgmock.so+0x344b8)
    #14 testing::TestInfo::Run() /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/googletest-release-1.8.0/googletest/src/gtest.cc:2656:11 (libgmock.so+0x3574c)
    #15 testing::TestCase::Run() /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/googletest-release-1.8.0/googletest/src/gtest.cc:2774:28 (libgmock.so+0x36226)
    #16 testing::internal::UnitTestImpl::RunAllTests() /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/googletest-release-1.8.0/googletest/src/gtest.cc:4649:43 (libgmock.so+0x425fa)
    #17 bool testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/googletest-release-1.8.0/googletest/src/gtest.cc:2402:10 (libgmock.so+0x5625f)
    #18 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/googletest-release-1.8.0/googletest/src/gtest.cc:2438 (libgmock.so+0x5625f)
    #19 testing::UnitTest::Run() /home/jenkins-slave/workspace/kudu-master/0/thirdparty/src/googletest-release-1.8.0/googletest/src/gtest.cc:4257:10 (libgmock.so+0x41ee2)
    #20 RUN_ALL_TESTS() /home/jenkins-slave/workspace/kudu-master/0/thirdparty/installed/tsan/include/gtest/gtest.h:2233:46 (libkudu_test_main.so+0x340b)
    #21 main /home/jenkins-slave/workspace/kudu-master/0/src/kudu/util/test_main.cc:106:13 (libkudu_test_main.so+0x2bd6)
]]>
      </error>
    </testcase>
  </testsuite>
</testsuites>
