Alexey Serbin has uploaded this change for review. (
http://gerrit.cloudera.org:8080/9574
Change subject: KUDU-2295 fix nullptr dereference in Tablet
......................................................................
KUDU-2295 fix nullptr dereference in Tablet
Prior to this patch, in the case of concurrent events of shutting
down a tablet and running a snapshot scan on it, sometimes the code in
Tablet::GetTabletAncientHistoryMark() ended up trying to call
operator->() on invalid scoped_refptr object, which resulted in stack
traces like below:
*** Aborted at 1518480865 (unix time) try "date -d @1518480865" if you are
using GNU date ***
PC: @ 0x7f1e02025790 scoped_refptr<>::operator->()
*** SIGSEGV (@0x160) received by PID 8782 (TID 0x7f1de3c7e700) from PID 352;
stack trace: ***
@ 0x7f1dfdcfc330 (unknown) at ??:0
@ 0x7f1e02025790 scoped_refptr<>::operator->() at ??:0
@ 0x7f1e00ae62e7 kudu::tablet::Tablet::GetTabletAncientHistoryMark() at
??:0
@ 0x7f1e00ae627d kudu::tablet::Tablet::GetHistoryGcOpts() at ??:0
@ 0x7f1e02012c53 kudu::tserver::(anonymous
namespace)::VerifyNotAncientHistory() at ??:0
@ 0x7f1e0201223b
kudu::tserver::TabletServiceImpl::HandleScanAtSnapshot() at ??:0
@ 0x7f1e0200c6dd
kudu::tserver::TabletServiceImpl::HandleNewScanRequest() at ??:0
@ 0x7f1e02009d33 kudu::tserver::TabletServiceImpl::Scan() at ??:0
@ 0x7f1dfc90de4d
kudu::tserver::TabletServerServiceIf::TabletServerServiceIf()::$_5::operator()()
at ??:0
@ 0x7f1dfc90dc92 std::_Function_handler<>::_M_invoke() at ??:0
@ 0x7f1dfba728ab std::function<>::operator()() at ??:0
@ 0x7f1dfba7216d kudu::rpc::GeneratedServiceIf::Handle() at ??:0
@ 0x7f1dfba74526 kudu::rpc::ServicePool::RunThread() at ??:0
@ 0x7f1dfba76ad9 boost::_mfi::mf0<>::operator()() at ??:0
@ 0x7f1dfba76a40 boost::_bi::list1<>::operator()<>() at ??:0
@ 0x7f1dfba769ea boost::_bi::bind_t<>::operator()() at ??:0
@ 0x7f1dfba767cd
boost::detail::function::void_function_obj_invoker0<>::invoke() at ??:0
@ 0x7f1dfba190f8 boost::function0<>::operator()() at ??:0
@ 0x7f1df9d1788d kudu::Thread::SuperviseThread() at ??:0
@ 0x7f1dfdcf4184 start_thread at ??:0
@ 0x7f1df6023ffd clone at ??:0
@ 0x0 (unknown)
Change-Id: Ib4b8cc2a307e5a0bd6019bd155f33c1565fca513
---
M src/kudu/tserver/tablet_service.cc
M src/kudu/tserver/tablet_service.h
2 files changed, 15 insertions(+), 14 deletions(-)
git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/74/9574/1
--
To view, visit http://gerrit.cloudera.org:8080/9574
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings
Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ib4b8cc2a307e5a0bd6019bd155f33c1565fca513
Gerrit-Change-Number: 9574
Gerrit-PatchSet: 1
Gerrit-Owner: Alexey Serbin <[email protected]>