Dinesh Bhat created KUDU-1674:
---------------------------------
Summary: SEGV in SubProcess::Call if it tries to capture stderr
alone
Key: KUDU-1674
URL: https://issues.apache.org/jira/browse/KUDU-1674
Project: Kudu
Issue Type: Bug
Components: util
Affects Versions: 1.0.0
Reporter: Dinesh Bhat
Assignee: Dinesh Bhat
Fix For: 1.0.1
One of the jenkins run captured this when we called
SubProcess::Call(argv[0], nullptr, &stderr);
{noformat}
WARNING: ThreadSanitizer: heap-use-after-free (pid=28482)
Read of size 8 at 0x7d0800005e38 by main thread:
#0 memcpy
/home/jenkins-slave/workspace/kudu-2/thirdparty/src/llvm-3.9.0.src/projects/compiler-rt/lib/tsan/../sanitizer_common/sanitizer_common_interceptors.inc:598
(kudu-admin-test+0x00000046850b)
#1 std::__1::basic_string<char, std::__1::char_traits<char>,
std::__1::allocator<char> >::__move_assign(std::__1::basic_string<char,
std::__1::char_traits<char>, std::__1::allocator<char> >&,
std::__1::integral_constant<bool, true>)
/home/jenkins-slave/workspace/kudu-2/thirdparty/installed/tsan/include/c++/v1/string:2525:18
(libkudu_util.so+0x00000016ca51)
#2 std::__1::basic_string<char, std::__1::char_traits<char>,
std::__1::allocator<char> >::operator=(std::__1::basic_string<char,
std::__1::char_traits<char>, std::__1::allocator<char> >&&)
/home/jenkins-slave/workspace/kudu-2/thirdparty/installed/tsan/include/c++/v1/string:2536
(libkudu_util.so+0x00000016ca51)
#3 kudu::Subprocess::Call(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::basic_string<char,
std::__1::char_traits<char>, std::__1::allocator<char> >*,
std::__1::basic_string<char, std::__1::char_traits<char>,
std::__1::allocator<char> >*)
/home/jenkins-slave/workspace/kudu-2/src/kudu/util/subprocess.cc:503
(libkudu_util.so+0x00000016ca51)
#4 kudu::tools::AdminCliTest_TestLeaderStepDown_Test::TestBody()
/home/jenkins-slave/workspace/kudu-2/src/kudu/tools/kudu-admin-test.cc:199:14
(kudu-admin-test+0x0000004cc43b)
#5 void
testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test,
void>(testing::Test*, void (testing::Test::*)(), char const*)
/home/jenkins-slave/workspace/kudu-2/thirdparty/src/gmock-1.7.0/gtest/src/gtest.cc:2078:10
(libgmock.so+0x000000048243)
#6 void
testing::internal::HandleExceptionsInMethodIfSupported<testing::Test,
void>(testing::Test*, void (testing::Test::*)(), char const*)
/home/jenkins-slave/workspace/kudu-2/thirdparty/src/gmock-1.7.0/gtest/src/gtest.cc:2114
(libgmock.so+0x000000048243)
#7 testing::Test::Run()
/home/jenkins-slave/workspace/kudu-2/thirdparty/src/gmock-1.7.0/gtest/src/gtest.cc:2150:5
(libgmock.so+0x00000002ce6f)
#8 testing::TestInfo::Run()
/home/jenkins-slave/workspace/kudu-2/thirdparty/src/gmock-1.7.0/gtest/src/gtest.cc:2326:11
(libgmock.so+0x00000002dea7)
#9 testing::TestCase::Run()
/home/jenkins-slave/workspace/kudu-2/thirdparty/src/gmock-1.7.0/gtest/src/gtest.cc:2444:28
(libgmock.so+0x00000002eaf8)
#10 testing::internal::UnitTestImpl::RunAllTests()
/home/jenkins-slave/workspace/kudu-2/thirdparty/src/gmock-1.7.0/gtest/src/gtest.cc:4315:43
(libgmock.so+0x000000038f51)
#11 bool
testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl,
bool>(testing::internal::UnitTestImpl*, bool
(testing::internal::UnitTestImpl::*)(), char const*)
/home/jenkins-slave/workspace/kudu-2/thirdparty/src/gmock-1.7.0/gtest/src/gtest.cc:2078:10
(libgmock.so+0x000000048df3)
#12 bool
testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl,
bool>(testing::internal::UnitTestImpl*, bool
(testing::internal::UnitTestImpl::*)(), char const*)
/home/jenkins-slave/workspace/kudu-2/thirdparty/src/gmock-1.7.0/gtest/src/gtest.cc:2114
(libgmock.so+0x000000048df3)
#13 testing::UnitTest::Run()
/home/jenkins-slave/workspace/kudu-2/thirdparty/src/gmock-1.7.0/gtest/src/gtest.cc:3926:10
(libgmock.so+0x000000038988)
#14 RUN_ALL_TESTS()
/home/jenkins-slave/workspace/kudu-2/thirdparty/installed/tsan/include/gtest/gtest.h:2288:46
(libkudu_test_main.so+0x000000002acb)
#15 main
/home/jenkins-slave/workspace/kudu-2/src/kudu/util/test_main.cc:75:13
(libkudu_test_main.so+0x00000000255a)
Previous write of size 8 at 0x7d0800005e38 by main thread:
#0 operator delete[](void*)
/home/jenkins-slave/workspace/kudu-2/thirdparty/src/llvm-3.9.0.src/projects/compiler-rt/lib/tsan/rtl/tsan_new_delete.cc:79
(kudu-admin-test+0x0000004c7a41)
#1 void
google::protobuf::internal::RepeatedPtrFieldBase::Destroy<google::protobuf::RepeatedPtrField<kudu::ColumnSchemaPB>::TypeHandler>()
/home/jenkins-slave/workspace/kudu-2/thirdparty/installed/tsan/include/google/protobuf/repeated_field.h:871:3
(libksck.so+0x00000003fa53)
#2
google::protobuf::RepeatedPtrField<kudu::ColumnSchemaPB>::~RepeatedPtrField()
/home/jenkins-slave/workspace/kudu-2/thirdparty/installed/tsan/include/google/protobuf/repeated_field.h:1090:3
(libksck.so+0x00000003f979)
#3 kudu::SchemaPB::~SchemaPB()
/home/jenkins-slave/workspace/kudu-2/build/tsan/src/kudu/common/common.pb.cc:1277:1
(libkudu_common_proto.so+0x00000001fea4)
#4 kudu::SchemaPB::~SchemaPB()
/home/jenkins-slave/workspace/kudu-2/build/tsan/src/kudu/common/common.pb.cc:1274:23
(libkudu_common_proto.so+0x00000001fef9)
#5 kudu::tserver::ListTabletsResponsePB_StatusAndSchemaPB::SharedDtor()
/home/jenkins-slave/workspace/kudu-2/build/tsan/src/kudu/tserver/tserver.pb.cc:2543:5
(libtserver_proto.so+0x00000002e99c)
#6
kudu::tserver::ListTabletsResponsePB_StatusAndSchemaPB::~ListTabletsResponsePB_StatusAndSchemaPB()
/home/jenkins-slave/workspace/kudu-2/build/tsan/src/kudu/tserver/tserver.pb.cc:2537:3
(libtserver_proto.so+0x00000002e913)
#7
kudu::tserver::ListTabletsResponsePB_StatusAndSchemaPB::~ListTabletsResponsePB_StatusAndSchemaPB()
/home/jenkins-slave/workspace/kudu-2/build/tsan/src/kudu/tserver/tserver.pb.cc:2535:85
(libtserver_proto.so+0x00000002e9e9)
#8
google::protobuf::internal::GenericTypeHandler<kudu::tserver::ListTabletsResponsePB_StatusAndSchemaPB>::Delete(kudu::tserver::ListTabletsResponsePB_StatusAndSchemaPB*)
/home/jenkins-slave/workspace/kudu-2/thirdparty/installed/tsan/include/google/protobuf/repeated_field.h:363:44
(libtserver_proto.so+0x000000041cc7)
#9 void
google::protobuf::internal::RepeatedPtrFieldBase::Destroy<google::protobuf::RepeatedPtrField<kudu::tserver::ListTabletsResponsePB_StatusAndSchemaPB>::TypeHandler>()
/home/jenkins-slave/workspace/kudu-2/thirdparty/installed/tsan/include/google/protobuf/repeated_field.h:869:5
(libtserver_proto.so+0x000000041c56)
#10
google::protobuf::RepeatedPtrField<kudu::tserver::ListTabletsResponsePB_StatusAndSchemaPB>::~RepeatedPtrField()
/home/jenkins-slave/workspace/kudu-2/thirdparty/installed/tsan/include/google/protobuf/repeated_field.h:1090:3
(libtserver_proto.so+0x00000003ba39)
#11 kudu::tserver::ListTabletsResponsePB::~ListTabletsResponsePB()
/home/jenkins-slave/workspace/kudu-2/build/tsan/src/kudu/tserver/tserver.pb.cc:2860:1
(libtserver_proto.so+0x00000002f8cc)
#12 kudu::itest::ListTablets(kudu::itest::TServerDetails const*,
kudu::MonoDelta const&,
std::__1::vector<kudu::tserver::ListTabletsResponsePB_StatusAndSchemaPB,
std::__1::allocator<kudu::tserver::ListTabletsResponsePB_StatusAndSchemaPB> >*)
/home/jenkins-slave/workspace/kudu-2/src/kudu/integration-tests/cluster_itest_util.cc:586:1
(libintegration-tests.so+0x000000045dd1)
#13 kudu::itest::WaitUntilTabletInState(kudu::itest::TServerDetails*,
std::__1::basic_string<char, std::__1::char_traits<char>,
std::__1::allocator<char> > const&, kudu::tablet::TabletStatePB,
kudu::MonoDelta const&)
/home/jenkins-slave/workspace/kudu-2/src/kudu/integration-tests/cluster_itest_util.cc:701:9
(libintegration-tests.so+0x000000046c14)
#14 kudu::itest::WaitUntilTabletRunning(kudu::itest::TServerDetails*,
std::__1::basic_string<char, std::__1::char_traits<char>,
std::__1::allocator<char> > const&, kudu::MonoDelta const&)
/home/jenkins-slave/workspace/kudu-2/src/kudu/integration-tests/cluster_itest_util.cc:734:10
(libintegration-tests.so+0x000000047175)
#15 kudu::tools::AdminCliTest_TestLeaderStepDown_Test::TestBody()
/home/jenkins-slave/workspace/kudu-2/src/kudu/tools/kudu-admin-test.cc:184:5
(kudu-admin-test+0x0000004cc1f3)
#16 void
testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test,
void>(testing::Test*, void (testing::Test::*)(), char const*)
/home/jenkins-slave/workspace/kudu-2/thirdparty/src/gmock-1.7.0/gtest/src/gtest.cc:2078:10
(libgmock.so+0x000000048243)
#17 void
testing::internal::HandleExceptionsInMethodIfSupported<testing::Test,
void>(testing::Test*, void (testing::Test::*)(), char const*)
/home/jenkins-slave/workspace/kudu-2/thirdparty/src/gmock-1.7.0/gtest/src/gtest.cc:2114
(libgmock.so+0x000000048243)
#18 testing::Test::Run()
/home/jenkins-slave/workspace/kudu-2/thirdparty/src/gmock-1.7.0/gtest/src/gtest.cc:2150:5
(libgmock.so+0x00000002ce6f)
#19 testing::TestInfo::Run()
/home/jenkins-slave/workspace/kudu-2/thirdparty/src/gmock-1.7.0/gtest/src/gtest.cc:2326:11
(libgmock.so+0x00000002dea7)
#20 testing::TestCase::Run()
/home/jenkins-slave/workspace/kudu-2/thirdparty/src/gmock-1.7.0/gtest/src/gtest.cc:2444:28
(libgmock.so+0x00000002eaf8)
#21 testing::internal::UnitTestImpl::RunAllTests()
/home/jenkins-slave/workspace/kudu-2/thirdparty/src/gmock-1.7.0/gtest/src/gtest.cc:4315:43
(libgmock.so+0x000000038f51)
#22 bool
testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl,
bool>(testing::internal::UnitTestImpl*, bool
(testing::internal::UnitTestImpl::*)(), char const*)
/home/jenkins-slave/workspace/kudu-2/thirdparty/src/gmock-1.7.0/gtest/src/gtest.cc:2078:10
(libgmock.so+0x000000048df3)
#23 bool
testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl,
bool>(testing::internal::UnitTestImpl*, bool
(testing::internal::UnitTestImpl::*)(), char const*)
/home/jenkins-slave/workspace/kudu-2/thirdparty/src/gmock-1.7.0/gtest/src/gtest.cc:2114
(libgmock.so+0x000000048df3)
#24 testing::UnitTest::Run()
/home/jenkins-slave/workspace/kudu-2/thirdparty/src/gmock-1.7.0/gtest/src/gtest.cc:3926:10
(libgmock.so+0x000000038988)
#25 RUN_ALL_TESTS()
/home/jenkins-slave/workspace/kudu-2/thirdparty/installed/tsan/include/gtest/gtest.h:2288:46
(libkudu_test_main.so+0x000000002acb)
#26 main
/home/jenkins-slave/workspace/kudu-2/src/kudu/util/test_main.cc:75:13
(libkudu_test_main.so+0x00000000255a)
Location is heap block of size 24 at 0x7d0800005e20 allocated by main thread:
#0 operator new(unsigned long)
/home/jenkins-slave/workspace/kudu-2/thirdparty/src/llvm-3.9.0.src/projects/compiler-rt/lib/tsan/rtl/tsan_new_delete.cc:41
(kudu-admin-test+0x0000004c7713)
#1 std::__1::__allocate(unsigned long)
/home/jenkins-slave/workspace/kudu-2/thirdparty/installed/tsan/include/c++/v1/new:168:10
(kudu-admin-test+0x0000004d942e)
#2 std::__1::allocator<std::__1::basic_string<char,
std::__1::char_traits<char>, std::__1::allocator<char> > >::allocate(unsigned
long, void const*)
/home/jenkins-slave/workspace/kudu-2/thirdparty/installed/tsan/include/c++/v1/memory:1735
(kudu-admin-test+0x0000004d942e)
#3
std::__1::allocator_traits<std::__1::allocator<std::__1::basic_string<char,
std::__1::char_traits<char>, std::__1::allocator<char> > >
>::allocate(std::__1::allocator<std::__1::basic_string<char,
std::__1::char_traits<char>, std::__1::allocator<char> > >&, unsigned long)
/home/jenkins-slave/workspace/kudu-2/thirdparty/installed/tsan/include/c++/v1/memory:1490
(kudu-admin-test+0x0000004d942e)
#4 std::__1::__split_buffer<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> > >&>::__split_buffer(unsigned long, unsigned long,
std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>,
std::__1::allocator<char> > >&)
/home/jenkins-slave/workspace/kudu-2/thirdparty/installed/tsan/include/c++/v1/__split_buffer:311
(kudu-admin-test+0x0000004d942e)
#5 void 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> > >
>::__push_back_slow_path<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&)
/home/jenkins-slave/workspace/kudu-2/thirdparty/installed/tsan/include/c++/v1/vector:1573:49
(kudu-admin-test+0x0000004d991d)
#6 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> > > >::push_back(std::__1::basic_string<char,
std::__1::char_traits<char>, std::__1::allocator<char> > const&)
/home/jenkins-slave/workspace/kudu-2/thirdparty/installed/tsan/include/c++/v1/vector:1594:9
(libkudu_util.so+0x00000016cffb)
#7 kudu::(anonymous namespace)::ReadFdsFully(std::__1::basic_string<char,
std::__1::char_traits<char>, std::__1::allocator<char> > const&,
std::__1::vector<int, std::__1::allocator<int> > 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> > > >*)
/home/jenkins-slave/workspace/kudu-2/src/kudu/util/subprocess.cc:237
(libkudu_util.so+0x00000016cffb)
#8 kudu::Subprocess::Call(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::basic_string<char,
std::__1::char_traits<char>, std::__1::allocator<char> >*,
std::__1::basic_string<char, std::__1::char_traits<char>,
std::__1::allocator<char> >*)
/home/jenkins-slave/workspace/kudu-2/src/kudu/util/subprocess.cc:497:3
(libkudu_util.so+0x00000016c8c1)
#9 kudu::tools::AdminCliTest_TestLeaderStepDown_Test::TestBody()
/home/jenkins-slave/workspace/kudu-2/src/kudu/tools/kudu-admin-test.cc:199:14
(kudu-admin-test+0x0000004cc43b)
#10 void
testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test,
void>(testing::Test*, void (testing::Test::*)(), char const*)
/home/jenkins-slave/workspace/kudu-2/thirdparty/src/gmock-1.7.0/gtest/src/gtest.cc:2078:10
(libgmock.so+0x000000048243)
#11 void
testing::internal::HandleExceptionsInMethodIfSupported<testing::Test,
void>(testing::Test*, void (testing::Test::*)(), char const*)
/home/jenkins-slave/workspace/kudu-2/thirdparty/src/gmock-1.7.0/gtest/src/gtest.cc:2114
(libgmock.so+0x000000048243)
#12 testing::Test::Run()
/home/jenkins-slave/workspace/kudu-2/thirdparty/src/gmock-1.7.0/gtest/src/gtest.cc:2150:5
(libgmock.so+0x00000002ce6f)
#13 testing::TestInfo::Run()
/home/jenkins-slave/workspace/kudu-2/thirdparty/src/gmock-1.7.0/gtest/src/gtest.cc:2326:11
(libgmock.so+0x00000002dea7)
#14 testing::TestCase::Run()
/home/jenkins-slave/workspace/kudu-2/thirdparty/src/gmock-1.7.0/gtest/src/gtest.cc:2444:28
(libgmock.so+0x00000002eaf8)
#15 testing::internal::UnitTestImpl::RunAllTests()
/home/jenkins-slave/workspace/kudu-2/thirdparty/src/gmock-1.7.0/gtest/src/gtest.cc:4315:43
(libgmock.so+0x000000038f51)
#16 bool
testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl,
bool>(testing::internal::UnitTestImpl*, bool
(testing::internal::UnitTestImpl::*)(), char const*)
/home/jenkins-slave/workspace/kudu-2/thirdparty/src/gmock-1.7.0/gtest/src/gtest.cc:2078:10
(libgmock.so+0x000000048df3)
#17 bool
testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl,
bool>(testing::internal::UnitTestImpl*, bool
(testing::internal::UnitTestImpl::*)(), char const*)
/home/jenkins-slave/workspace/kudu-2/thirdparty/src/gmock-1.7.0/gtest/src/gtest.cc:2114
(libgmock.so+0x000000048df3)
#18 testing::UnitTest::Run()
/home/jenkins-slave/workspace/kudu-2/thirdparty/src/gmock-1.7.0/gtest/src/gtest.cc:3926:10
(libgmock.so+0x000000038988)
#19 RUN_ALL_TESTS()
/home/jenkins-slave/workspace/kudu-2/thirdparty/installed/tsan/include/gtest/gtest.h:2288:46
(libkudu_test_main.so+0x000000002acb)
#20 main
/home/jenkins-slave/workspace/kudu-2/src/kudu/util/test_main.cc:75:13
(libkudu_test_main.so+0x00000000255a)
SUMMARY: ThreadSanitizer: heap-use-after-free
/home/jenkins-slave/workspace/kudu-2/thirdparty/installed/tsan/include/c++/v1/string:2525:18
in std::__1::basic_string<char, std::__1::char_traits<char>,
std::__1::allocator<char> >::__move_assign(std::__1::basic_string<char,
std::__1::char_traits<char>, std::__1::allocator<char> >&,
std::__1::integral_constant<bool, true>)
{noformat}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)