Uploaded image for project: 'Couchbase Server'
  1. Couchbase Server
  2. MB-30367

UBSan: Member call on partially destroyed DcpConnMap

    XMLWordPrintable

Details

    • Bug
    • Resolution: Duplicate
    • Major
    • 6.5.0
    • master
    • couchbase-bucket
    • None
    • Untriaged
    • Unknown

    Description

      Full log at http://cv.jenkins.couchbase.com/job/kv_engine-undefinedsanitizer-master/1136/consoleFull#1795193106531cd01c-6372-43ba-87e9-b642784df0f9 :

      [ RUN      ] PersistentAndEphemeral/StreamTest.BackfillOnly/persistent
      /home/couchbase/jenkins/workspace/kv_engine-undefinedsanitizer-master/kv_engine/engines/ep/tests/module_tests/dcp_test.cc:1297: Failure
      Value of: stream->getNumBackfillItems()
        Actual: 2
      Expected: numItems
      Which is: 3
      /home/couchbase/jenkins/workspace/kv_engine-undefinedsanitizer-master/kv_engine/engines/ep/src/dcp/backfill-manager.cc:138:62: runtime error: member call on address 0x7f14a00d8000 which does not point to an object of type 'DcpConnMap'
      0x7f14a00d8000: note: object is of type 'ConnMap'
       00 00 00 00  b0 d0 a3 01 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00
                    ^~~~~~~~~~~~~~~~~~~~~~~
                    vptr for 'ConnMap'
          #0 0x1159d58 in BackfillManager::~BackfillManager() /home/couchbase/jenkins/workspace/kv_engine-undefinedsanitizer-master/kv_engine/engines/ep/src/dcp/backfill-manager.cc:138
          #1 0x841f40 in MockDcpBackfillManager::~MockDcpBackfillManager() /home/couchbase/jenkins/workspace/kv_engine-undefinedsanitizer-master/kv_engine/engines/ep/tests/mock/mock_dcp_backfill_mgr.h:26
          #2 0x841f40 in MockDcpBackfillManager::~MockDcpBackfillManager() /home/couchbase/jenkins/workspace/kv_engine-undefinedsanitizer-master/kv_engine/engines/ep/tests/mock/mock_dcp_backfill_mgr.h:26
          #3 0x841830 in std::_Sp_counted_ptr<MockDcpBackfillManager*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() /usr/local/include/c++/7.3.0/bits/shared_ptr_base.h:376
          #4 0x75c8cb in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() /usr/local/include/c++/7.3.0/bits/shared_ptr_base.h:154
          #5 0x11c5754 in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count() /usr/local/include/c++/7.3.0/bits/shared_ptr_base.h:684
          #6 0x11c5754 in std::__shared_ptr<BackfillManager, (__gnu_cxx::_Lock_policy)2>::~__shared_ptr() /usr/local/include/c++/7.3.0/bits/shared_ptr_base.h:1123
          #7 0x11c5754 in std::__shared_ptr<BackfillManager, (__gnu_cxx::_Lock_policy)2>::reset() /usr/local/include/c++/7.3.0/bits/shared_ptr_base.h:1235
          #8 0x11c5754 in DcpProducer::~DcpProducer() /home/couchbase/jenkins/workspace/kv_engine-undefinedsanitizer-master/kv_engine/engines/ep/src/dcp/producer.cc:231
          #9 0x841d2e in MockDcpProducer::~MockDcpProducer() /home/couchbase/jenkins/workspace/kv_engine-undefinedsanitizer-master/kv_engine/engines/ep/tests/mock/mock_dcp_producer.h:32
          #10 0x844284 in void __gnu_cxx::new_allocator<MockDcpProducer>::destroy<MockDcpProducer>(MockDcpProducer*) /usr/local/include/c++/7.3.0/ext/new_allocator.h:140
          #11 0x844284 in void std::allocator_traits<std::allocator<MockDcpProducer> >::destroy<MockDcpProducer>(std::allocator<MockDcpProducer>&, MockDcpProducer*) /usr/local/include/c++/7.3.0/bits/alloc_traits.h:487
          #12 0x844284 in std::_Sp_counted_ptr_inplace<MockDcpProducer, std::allocator<MockDcpProducer>, (__gnu_cxx::_Lock_policy)2>::_M_dispose() /usr/local/include/c++/7.3.0/bits/shared_ptr_base.h:535
          #13 0x114edc2 in std::deque<std::shared_ptr<ConnHandler>, std::allocator<std::shared_ptr<ConnHandler> > >::_M_destroy_data_aux(std::_Deque_iterator<std::shared_ptr<ConnHandler>, std::shared_ptr<ConnHandler>&, std::shared_ptr<ConnHandler>*>, std::_Deque_iterator<std::shared_ptr<ConnHandler>, std::shared_ptr<ConnHandler>&, std::shared_ptr<ConnHandler>*>) (/home/couchbase/jenkins/workspace/kv_engine-undefinedsanitizer-master/build/kv_engine/ep-engine_ep_unit_tests+0x114edc2)
          #14 0x114192f in std::deque<std::shared_ptr<ConnHandler>, std::allocator<std::shared_ptr<ConnHandler> > >::_M_destroy_data(std::_Deque_iterator<std::shared_ptr<ConnHandler>, std::shared_ptr<ConnHandler>&, std::shared_ptr<ConnHandler>*>, std::_Deque_iterator<std::shared_ptr<ConnHandler>, std::shared_ptr<ConnHandler>&, std::shared_ptr<ConnHandler>*>, std::allocator<std::shared_ptr<ConnHandler> > const&) /usr/local/include/c++/7.3.0/bits/stl_deque.h:2072
          #15 0x114192f in std::deque<std::shared_ptr<ConnHandler>, std::allocator<std::shared_ptr<ConnHandler> > >::~deque() /usr/local/include/c++/7.3.0/bits/stl_deque.h:1045
          #16 0x114192f in std::queue<std::shared_ptr<ConnHandler>, std::deque<std::shared_ptr<ConnHandler>, std::allocator<std::shared_ptr<ConnHandler> > > >::~queue() /usr/local/include/c++/7.3.0/bits/stl_queue.h:96
          #17 0x114192f in AtomicQueue<std::shared_ptr<ConnHandler> >::~AtomicQueue() /home/couchbase/jenkins/workspace/kv_engine-undefinedsanitizer-master/kv_engine/engines/ep/src/atomicqueue.h:39
          #18 0x114192f in ConnMap::~ConnMap() /home/couchbase/jenkins/workspace/kv_engine-undefinedsanitizer-master/kv_engine/engines/ep/src/connmap.cc:183
          #19 0x11a8671 in DcpConnMap::~DcpConnMap() /home/couchbase/jenkins/workspace/kv_engine-undefinedsanitizer-master/kv_engine/engines/ep/src/dcp/dcpconnmap.cc:60
          #20 0x11a86f0 in DcpConnMap::~DcpConnMap() /home/couchbase/jenkins/workspace/kv_engine-undefinedsanitizer-master/kv_engine/engines/ep/src/dcp/dcpconnmap.cc:62
          #21 0x12910b8 in std::default_delete<DcpConnMap>::operator()(DcpConnMap*) const /usr/local/include/c++/7.3.0/bits/unique_ptr.h:78
          #22 0x12910b8 in std::unique_ptr<DcpConnMap, std::default_delete<DcpConnMap> >::~unique_ptr() /usr/local/include/c++/7.3.0/bits/unique_ptr.h:268
          #23 0x12910b8 in EventuallyPersistentEngine::~EventuallyPersistentEngine() /home/couchbase/jenkins/workspace/kv_engine-undefinedsanitizer-master/kv_engine/engines/ep/src/ep_engine.cc:6027
          #24 0x1291682 in EventuallyPersistentEngine::~EventuallyPersistentEngine() /home/couchbase/jenkins/workspace/kv_engine-undefinedsanitizer-master/kv_engine/engines/ep/src/ep_engine.cc:6035
          #25 0x12572e3 in EventuallyPersistentEngine::destroy(bool) /home/couchbase/jenkins/workspace/kv_engine-undefinedsanitizer-master/kv_engine/engines/ep/src/ep_engine.cc:151
          #26 0xae3be0 in EventuallyPersistentEngineTest::TearDown() /home/couchbase/jenkins/workspace/kv_engine-undefinedsanitizer-master/kv_engine/engines/ep/tests/module_tests/evp_engine_test.cc:78
          #27 0xa15318 in DCPTest::TearDown() /home/couchbase/jenkins/workspace/kv_engine-undefinedsanitizer-master/kv_engine/engines/ep/tests/module_tests/dcp_test.cc:86
          #28 0xa15318 in StreamTest::TearDown() /home/couchbase/jenkins/workspace/kv_engine-undefinedsanitizer-master/kv_engine/engines/ep/tests/module_tests/dcp_test.cc:285
          #29 0x1619489 in void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /home/couchbase/jenkins/workspace/kv_engine-undefinedsanitizer-master/googletest/googletest/src/gtest.cc:2402
          #30 0x162679b in void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /home/couchbase/jenkins/workspace/kv_engine-undefinedsanitizer-master/googletest/googletest/src/gtest.cc:2438
          #31 0x16090c4 in testing::Test::Run() /home/couchbase/jenkins/workspace/kv_engine-undefinedsanitizer-master/googletest/googletest/src/gtest.cc:2482
          #32 0x1609b95 in testing::TestInfo::Run() /home/couchbase/jenkins/workspace/kv_engine-undefinedsanitizer-master/googletest/googletest/src/gtest.cc:2656
          #33 0x160a089 in testing::TestCase::Run() /home/couchbase/jenkins/workspace/kv_engine-undefinedsanitizer-master/googletest/googletest/src/gtest.cc:2774
          #34 0x160d254 in testing::internal::UnitTestImpl::RunAllTests() /home/couchbase/jenkins/workspace/kv_engine-undefinedsanitizer-master/googletest/googletest/src/gtest.cc:4649
          #35 0x1619958 in bool testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /home/couchbase/jenkins/workspace/kv_engine-undefinedsanitizer-master/googletest/googletest/src/gtest.cc:2402
          #36 0x162730c in bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /home/couchbase/jenkins/workspace/kv_engine-undefinedsanitizer-master/googletest/googletest/src/gtest.cc:2438
          #37 0x1609423 in testing::UnitTest::Run() /home/couchbase/jenkins/workspace/kv_engine-undefinedsanitizer-master/googletest/googletest/src/gtest.cc:4257
          #38 0xa5f1fc in RUN_ALL_TESTS() /home/couchbase/jenkins/workspace/kv_engine-undefinedsanitizer-master/googletest/googletest/include/gtest/gtest.h:2237
          #39 0xa5f1fc in main /home/couchbase/jenkins/workspace/kv_engine-undefinedsanitizer-master/kv_engine/engines/ep/tests/module_tests/ep_unit_tests_main.cc:72
          #40 0x7f14a220682f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2082f)
          #41 0x757718 in _start (/home/couchbase/jenkins/workspace/kv_engine-undefinedsanitizer-master/build/kv_engine/ep-engine_ep_unit_tests+0x757718)
      

      Note:

      1. at first look the UB issue seems unrelated from the failure at dcp_test.cc:1297 because the failure is on an EXPECT_EQ, so all the subsequent cleanup happens
      2. from the stack trace, at frame #19 we have done with destroying DcpConnMap and at frame #18 we start destroying ConnMap (which is the base class). But, at frame #0 we fail while doing 'engine.getDcpConnMap().decrNumActiveSnoozingBackfills();', so this seems a pure destruction order issue

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            paolo.cocchi Paolo Cocchi
            paolo.cocchi Paolo Cocchi
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes

                PagerDuty