Uploaded image for project: 'Kudu'
  1. Kudu
  2. KUDU-1674

SEGV in SubProcess::Call if it tries to capture stderr alone

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 1.0.0
    • Fix Version/s: 1.1.0
    • Component/s: util
    • Labels:
      None

      Description

      One of the jenkins run captured this when we called
      SubProcess::Call(argv[0], nullptr, &stderr);

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

        Attachments

          Activity

            People

            • Assignee:
              dineshabbi Dinesh Bhat
              Reporter:
              dineshabbi Dinesh Bhat
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: