[ 
https://issues.apache.org/jira/browse/KUDU-573?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Adar Dembo reassigned KUDU-573:
-------------------------------

    Assignee: Adar Dembo

> ASAN: use-after-free on RpcRetrier in MasterReplicationTest
> -----------------------------------------------------------
>
>                 Key: KUDU-573
>                 URL: https://issues.apache.org/jira/browse/KUDU-573
>             Project: Kudu
>          Issue Type: Bug
>          Components: master
>    Affects Versions: M4.5
>            Reporter: Mike Percy
>            Assignee: Adar Dembo
>
> I saw this on a local branch but I don't think I changed the logic. Since we 
> have suspicions about the safety of some usages of the RpcRetrier, I thought 
> I'd file this in case it's a latent race in the committed code.
> {noformat}
> =================================================================
> ==18338==ERROR: AddressSanitizer: heap-use-after-free on address 
> 0x60f00003e5d0 at pc 0x2284dd7 bp 0x7f288d508fd0 sp 0x7f288d508fc8
> READ of size 8 at 0x60f00003e5d0 thread T688 (rpc reactor-214)
> I1211 01:38:33.401448 21548 tablet_bootstrap.cc:452] Will attempt to recover 
> log segment: 
> /tmp/kudutest-1000/master_replication-itest.MasterReplicationTest.TestSysTablesReplication.1418290705580984-18338/minicluster-data/ts-2-root/wals/c14eeba03d934ef8a2e54045eb1b1f29/wal-000000001
>  to: 
> /tmp/kudutest-1000/master_replication-itest.MasterReplicationTest.TestSysTablesReplication.1418290705580984-18338/minicluster-data/ts-2-root/wals/c14eeba03d934ef8a2e54045eb1b1f29.recovery/wal-000000001
> I1211 01:38:33.401643 21548 tablet_bootstrap.cc:462] Moved log directory: 
> /tmp/kudutest-1000/master_replication-itest.MasterReplicationTest.TestSysTablesReplication.1418290705580984-18338/minicluster-data/ts-2-root/wals/c14eeba03d934ef8a2e54045eb1b1f29
>  to recovery directory: 
> /tmp/kudutest-1000/master_replication-itest.MasterReplicationTest.TestSysTablesReplication.1418290705580984-18338/minicluster-data/ts-2-root/wals/c14eeba03d934ef8a2e54045eb1b1f29.recovery
>     #0 0x2284dd6 in kudu::MonoTime::Initialized() const 
> /home/mpercy/src/kudu/src/kudu/util/monotime.cc:175
>     #1 0x207db0e in kudu::rpc::RpcRetrier::DelayedRetryCb(kudu::rpc::Rpc*, 
> kudu::Status const&) /home/mpercy/src/kudu/src/kudu/rpc/rpc.cc:57
>     #2 0x207f6aa in 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>(kudu::Status const&) 
> /usr/include/boost/bind/bind_template.hpp:47
>     #3 0x1256cd6 in boost::function1<void, kudu::Status 
> const&>::operator()(kudu::Status const&) const 
> /usr/include/boost/function/function_template.hpp:766
>     #4 0x2062eb0 in kudu::rpc::DelayedTask::TimerHandler(ev::timer&, int) 
> /home/mpercy/src/kudu/src/kudu/rpc/reactor.cc:468
>     #5 0x20fbe94 in ev_invoke_pending 
> /home/mpercy/src/kudu/thirdparty/libev-4.15/ev.c:2994
>     #6 0x20ff0d4 in ev_run 
> /home/mpercy/src/kudu/thirdparty/libev-4.15/ev.c:3394
>     #7 0x205a974 in kudu::rpc::ReactorThread::RunThread() 
> /home/mpercy/src/kudu/src/kudu/rpc/reactor.cc:294
>     #8 0x207a623 in 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
>     #9 0x1256f17 in boost::function0<void>::operator()() const 
> /usr/include/boost/function/function_template.hpp:766
>     #10 0x22bcb25 in kudu::Thread::SuperviseThread(void*) 
> /home/mpercy/src/kudu/src/kudu/util/thread.cc:436
>     #11 0x7f28fbf97181 in start_thread 
> (/lib/x86_64-linux-gnu/libpthread.so.0+0x8181)
>     #0 0x7f28fac43efc in clone 
> /build/buildd/eglibc-2.19/misc/../sysdeps/unix/sysv/linux/x86_64/clone.S:111
> 0x60f00003e5d0 is located 16 bytes inside of 168-byte region 
> [0x60f00003e5c0,0x60f00003e668)
> freed by thread T688 (rpc reactor-214) here:
>     #0 0xf3052e in operator delete(void*) 
> /home/mpercy/src/kudu/thirdparty/llvm-3.4.2.src/projects/compiler-rt/lib/asan/asan_new_delete.cc:83
>     #1 0x1fb99c4 in 
> kudu::internal::BindState<kudu::internal::RunnableAdapter<void 
> (kudu::master::GetLeaderMasterRpc::*)(kudu::ServerEntryPB const&, 
> kudu::Status const&)>, void (kudu::master::GetLeaderMasterRpc*, 
> kudu::ServerEntryPB const&, kudu::Status const&), void 
> (kudu::master::GetLeaderMasterRpc*, kudu::ServerEntryPB)>::~BindState() 
> /home/mpercy/src/kudu/src/kudu/gutil/bind_internal.h:2493
>     #2 0x1fb9a82 in 
> kudu::internal::BindState<kudu::internal::RunnableAdapter<void 
> (kudu::master::GetLeaderMasterRpc::*)(kudu::ServerEntryPB const&, 
> kudu::Status const&)>, void (kudu::master::GetLeaderMasterRpc*, 
> kudu::ServerEntryPB const&, kudu::Status const&), void 
> (kudu::master::GetLeaderMasterRpc*, kudu::ServerEntryPB)>::~BindState() 
> /home/mpercy/src/kudu/src/kudu/gutil/bind_internal.h:2493
>     #3 0x1fb5ae5 in 
> kudu::master::GetMasterRegistrationRpc::~GetMasterRegistrationRpc() 
> /home/mpercy/src/kudu/src/kudu/master/master_rpc.cc:47
>     #4 0x1fb5a62 in 
> kudu::master::GetMasterRegistrationRpc::~GetMasterRegistrationRpc() 
> /home/mpercy/src/kudu/src/kudu/master/master_rpc.cc:46
>     #5 0x1fb64db in 
> kudu::master::GetMasterRegistrationRpc::SendRpcCb(kudu::Status const&) 
> /home/mpercy/src/kudu/src/kudu/master/master_rpc.cc:83
>     #6 0x1fbc093 in boost::_bi::bind_t<void, boost::_mfi::mf1<void, 
> kudu::master::GetMasterRegistrationRpc, kudu::Status const&>, 
> boost::_bi::list2<boost::_bi::value<kudu::master::GetMasterRegistrationRpc*>, 
> boost::_bi::value<kudu::Status> > >::operator()() 
> /usr/include/boost/bind/bind_template.hpp:20
>     #7 0x1256f17 in boost::function0<void>::operator()() const 
> /usr/include/boost/function/function_template.hpp:766
>     #8 0x2041835 in kudu::rpc::OutboundCall::CallCallback() 
> /home/mpercy/src/kudu/src/kudu/rpc/outbound_call.cc:141
>     #9 0x2041ad4 in 
> kudu::rpc::OutboundCall::SetResponse(gscoped_ptr<kudu::rpc::CallResponse, 
> kudu::DefaultDeleter<kudu::rpc::CallResponse> >) 
> /home/mpercy/src/kudu/src/kudu/rpc/outbound_call.cc:161
>     #10 0x2099e03 in 
> kudu::rpc::Connection::HandleCallResponse(gscoped_ptr<kudu::rpc::InboundTransfer,
>  kudu::DefaultDeleter<kudu::rpc::InboundTransfer> >) 
> /home/mpercy/src/kudu/src/kudu/rpc/connection.cc:459
>     #11 0x2099129 in kudu::rpc::Connection::ReadHandler(ev::io&, int) 
> /home/mpercy/src/kudu/src/kudu/rpc/connection.cc:395
>     #12 0x20fbe94 in ev_invoke_pending 
> /home/mpercy/src/kudu/thirdparty/libev-4.15/ev.c:2994
> previously allocated by thread T728 (heartbeat-21539) here:
>     #0 0xf3022e in operator new(unsigned long) 
> /home/mpercy/src/kudu/thirdparty/llvm-3.4.2.src/projects/compiler-rt/lib/asan/asan_new_delete.cc:52
>     #1 0x1113cda in 
> kudu::tserver::Heartbeater::Thread::FindLeaderMaster(kudu::MonoTime const&, 
> kudu::HostPort*) /home/mpercy/src/kudu/src/kudu/tserver/heartbeater.cc:190
>     #2 0x11144a1 in kudu::tserver::Heartbeater::Thread::ConnectToMaster() 
> /home/mpercy/src/kudu/src/kudu/tserver/heartbeater.cc:204
>     #3 0x11165d1 in kudu::tserver::Heartbeater::Thread::DoHeartbeat() 
> /home/mpercy/src/kudu/src/kudu/tserver/heartbeater.cc:294
>     #4 0x1117802 in kudu::tserver::Heartbeater::Thread::RunThread() 
> /home/mpercy/src/kudu/src/kudu/tserver/heartbeater.cc:363
>     #5 0x111ba83 in boost::_bi::bind_t<void, boost::_mfi::mf0<void, 
> kudu::tserver::Heartbeater::Thread>, 
> boost::_bi::list1<boost::_bi::value<kudu::tserver::Heartbeater::Thread*> > 
> >::operator()() /usr/include/boost/bind/bind_template.hpp:20
>     #6 0x1256f17 in boost::function0<void>::operator()() const 
> /usr/include/boost/function/function_template.hpp:766
>     #7 0x22bcb25 in kudu::Thread::SuperviseThread(void*) 
> /home/mpercy/src/kudu/src/kudu/util/thread.cc:436
>     #8 0x7f28fbf97181 in start_thread 
> (/lib/x86_64-linux-gnu/libpthread.so.0+0x8181)
> Thread T688 (rpc reactor-214) created by T0 here:
>     #0 0xf1ef62 in __interceptor_pthread_create 
> /home/mpercy/src/kudu/thirdparty/llvm-3.4.2.src/projects/compiler-rt/lib/asan/asan_interceptors.cc:185
>     #1 0x22bc137 in 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:366
>     #2 0x2065b52 in 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:123
>     #3 0x205a52c in kudu::rpc::ReactorThread::Init() 
> /home/mpercy/src/kudu/src/kudu/rpc/reactor.cc:81
>     #4 0x20635fa in kudu::rpc::Reactor::Init() 
> /home/mpercy/src/kudu/src/kudu/rpc/reactor.cc:483
>     #5 0x204831b in kudu::rpc::Messenger::Init() 
> /home/mpercy/src/kudu/src/kudu/rpc/messenger.cc:237
>     #6 0x2047e50 in 
> kudu::rpc::MessengerBuilder::Build(kudu::rpc::Messenger**) 
> /home/mpercy/src/kudu/src/kudu/rpc/messenger.cc:83
>     #7 0x2048684 in 
> kudu::rpc::MessengerBuilder::Build(std::tr1::shared_ptr<kudu::rpc::Messenger>*)
>  /home/mpercy/src/kudu/src/kudu/rpc/messenger.cc:90
>     #8 0x1165e83 in kudu::server::ServerBase::Init() 
> /home/mpercy/src/kudu/src/kudu/server/server_base.cc:119
>     #9 0x10ad263 in kudu::tserver::TabletServer::Init() 
> /home/mpercy/src/kudu/src/kudu/tserver/tablet_server.cc:76
>     #10 0x10a9893 in kudu::tserver::MiniTabletServer::Start() 
> /home/mpercy/src/kudu/src/kudu/tserver/mini_tablet_server.cc:56
>     #11 0xf67da3 in kudu::MiniCluster::AddTabletServer() 
> /home/mpercy/src/kudu/src/kudu/integration-tests/mini_cluster.cc:187
>     #12 0xf64b8b in kudu::MiniCluster::Start() 
> /home/mpercy/src/kudu/src/kudu/integration-tests/mini_cluster.cc:78
>     #13 0xf4c6b6 in kudu::master::MasterReplicationTest::RestartCluster() 
> /home/mpercy/src/kudu/src/kudu/integration-tests/master_replication-itest.cc:66
>     #14 0xf467c0 in 
> kudu::master::MasterReplicationTest_TestSysTablesReplication_Test::TestBody() 
> /home/mpercy/src/kudu/src/kudu/integration-tests/master_replication-itest.cc:205
>     #15 0x21ef6f2 in HandleSehExceptionsInMethodIfSupported<testing::Test, 
> void> /home/mpercy/src/kudu/thirdparty/gmock-1.7.0/gtest/src/gtest.cc:2078
>     #16 0x21ef6f2 in void 
> testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, 
> void>(testing::Test*, void (testing::Test::*)(), char const*) 
> /home/mpercy/src/kudu/thirdparty/gmock-1.7.0/gtest/src/gtest.cc:2114
> Thread T728 (heartbeat-21539) created by T0 here:
>     #0 0xf1ef62 in __interceptor_pthread_create 
> /home/mpercy/src/kudu/thirdparty/llvm-3.4.2.src/projects/compiler-rt/lib/asan/asan_interceptors.cc:185
>     #1 0x22bc137 in 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:366
>     #2 0x111a8d2 in kudu::Status kudu::Thread::Create<void 
> (kudu::tserver::Heartbeater::Thread::*)(), 
> kudu::tserver::Heartbeater::Thread*>(std::string const&, std::string const&, 
> void (kudu::tserver::Heartbeater::Thread::* const&)(), 
> kudu::tserver::Heartbeater::Thread* const&, scoped_refptr<kudu::Thread>*) 
> /home/mpercy/src/kudu/src/kudu/util/thread.h:123
>     #3 0x1112c61 in kudu::tserver::Heartbeater::Thread::Start() 
> /home/mpercy/src/kudu/src/kudu/tserver/heartbeater.cc:389
>     #4 0x1112a38 in kudu::tserver::Heartbeater::Start() 
> /home/mpercy/src/kudu/src/kudu/tserver/heartbeater.cc:145
>     #5 0x10adc37 in kudu::tserver::TabletServer::Start() 
> /home/mpercy/src/kudu/src/kudu/tserver/tablet_server.cc:108
>     #6 0x10a98ce in kudu::tserver::MiniTabletServer::Start() 
> /home/mpercy/src/kudu/src/kudu/tserver/mini_tablet_server.cc:57
>     #7 0xf67da3 in kudu::MiniCluster::AddTabletServer() 
> /home/mpercy/src/kudu/src/kudu/integration-tests/mini_cluster.cc:187
>     #8 0xf64b8b in kudu::MiniCluster::Start() 
> /home/mpercy/src/kudu/src/kudu/integration-tests/mini_cluster.cc:78
>     #9 0xf4c6b6 in kudu::master::MasterReplicationTest::RestartCluster() 
> /home/mpercy/src/kudu/src/kudu/integration-tests/master_replication-itest.cc:66
>     #10 0xf467c0 in 
> kudu::master::MasterReplicationTest_TestSysTablesReplication_Test::TestBody() 
> /home/mpercy/src/kudu/src/kudu/integration-tests/master_replication-itest.cc:205
>     #11 0x21ef6f2 in HandleSehExceptionsInMethodIfSupported<testing::Test, 
> void> /home/mpercy/src/kudu/thirdparty/gmock-1.7.0/gtest/src/gtest.cc:2078
>     #12 0x21ef6f2 in void 
> testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, 
> void>(testing::Test*, void (testing::Test::*)(), char const*) 
> /home/mpercy/src/kudu/thirdparty/gmock-1.7.0/gtest/src/gtest.cc:2114
> SUMMARY: AddressSanitizer: heap-use-after-free 
> /home/mpercy/src/kudu/src/kudu/util/monotime.cc:175 
> kudu::MonoTime::Initialized() const
> Shadow bytes around the buggy address:
>   0x0c1e7ffffc60: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
>   0x0c1e7ffffc70: fd fd fd fa fa fa fa fa fa fa fa fa fd fd fd fd
>   0x0c1e7ffffc80: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
>   0x0c1e7ffffc90: fd fa fa fa fa fa fa fa fa fa fd fd fd fd fd fd
>   0x0c1e7ffffca0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fa
> =>0x0c1e7ffffcb0: fa fa fa fa fa fa fa fa fd fd[fd]fd fd fd fd fd
>   0x0c1e7ffffcc0: fd fd fd fd fd fd fd fd fd fd fd fd fd fa fa fa
>   0x0c1e7ffffcd0: fa fa fa fa fa fa fd fd fd fd fd fd fd fd fd fd
>   0x0c1e7ffffce0: fd fd fd fd fd fd fd fd fd fd fd fa fa fa fa fa
>   0x0c1e7ffffcf0: fa fa fa fa fd fd fd fd fd fd fd fd fd fd fd fd
>   0x0c1e7ffffd00: fd fd fd fd fd fd fd fd fd fa fa fa fa fa fa fa
> Shadow byte legend (one shadow byte represents 8 application bytes):
>   Addressable:           00
>   Partially addressable: 01 02 03 04 05 06 07
>   Heap left redzone:     fa
>   Heap right redzone:    fb
>   Freed heap region:     fd
>   Stack left redzone:    f1
>   Stack mid redzone:     f2
>   Stack right redzone:   f3
>   Stack partial redzone: f4
>   Stack after return:    f5
>   Stack use after scope: f8
>   Global redzone:        f9
>   Global init order:     f6
>   Poisoned by user:      f7
>   ASan internal:         fe
> ==18338==ABORTING
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to