Uploaded image for project: 'Realm Core'
  1. Realm Core
  2. RCORE-1619

TSAN data race in LangBindHelper_HandoverBetweenThreads on stack ArrayInteger::find

    • Type: Icon: Bug Bug
    • Resolution: Duplicate
    • Priority: Icon: Minor - P4 Minor - P4
    • None
    • Affects Version/s: None
    • Component/s: Core
    • None

      Just capturing a stack trace from the CI for later investigation

      ~~~
      [2023/05/12 19:27:07.460] 1: ==================
      [2023/05/12 19:27:07.460] 1: WARNING: ThreadSanitizer: data race (pid=103659)
      [2023/05/12 19:27:07.460] 1: Read of size 8 at 0x7f59695144a0 by thread T76:
      [2023/05/12 19:27:07.460] 1: #0 bool realm::ArrayWithFind::find_sse_intern<realm::Greater, 8ul, decltype(nullptr)>(long long _vector(2)*, long long __vector(2), unsigned long, realm::QueryStateBase_, unsigned long, decltype(nullptr)) const /data/mci/63024f932e70faf62d309316edb21515/realm-core/build/../src/realm/array_with_find.hpp:779 (realm-tests+0x142ec35)
      [2023/05/12 19:27:07.460] 1: #1 bool realm::ArrayWithFind::find_sse<realm::Greater, 8ul, decltype(nullptr)>(long, long long _vector(2), unsigned long, realm::QueryStateBase_, unsigned long, decltype(nullptr)) const /data/mci/63024f932e70faf62d309316edb21515/realm-core/build/../src/realm/array_with_find.hpp:747 (realm-tests+0x142ec35)
      [2023/05/12 19:27:07.461] 1: #2 bool realm::ArrayWithFind::find_optimized<realm::Greater, 8ul, decltype(nullptr)>(long, unsigned long, unsigned long, unsigned long, realm::QueryStateBase*, decltype(nullptr)) const /data/mci/63024f932e70faf62d309316edb21515/realm-core/build/../src/realm/array_with_find.hpp:392 (realm-tests+0x142ec35)
      [2023/05/12 19:27:07.461] 1: #3 bool realm::ArrayWithFind::find<realm::Greater, decltype(nullptr)>(long, unsigned long, unsigned long, unsigned long, realm::QueryStateBase*, decltype(nullptr)) const /data/mci/63024f932e70faf62d309316edb21515/realm-core/build/../src/realm/array_with_find.hpp:721 (realm-tests+0x142d5d8)
      [2023/05/12 19:27:07.461] 1: #4 bool realm::ArrayInteger::find<realm::Greater, decltype(nullptr)>(long, unsigned long, unsigned long, realm::QueryStateBase*, decltype(nullptr)) const /data/mci/63024f932e70faf62d309316edb21515/realm-core/build/../src/realm/array_integer_tpl.hpp:30 (realm-tests+0x151aa66)
      [2023/05/12 19:27:07.461] 1: #5 unsigned long realm::IntegerNodeBase<realm::ArrayInteger>::find_all_local<realm::Greater>(unsigned long, unsigned long) /data/mci/63024f932e70faf62d309316edb21515/realm-core/build/../src/realm/query_engine.hpp:442 (realm-tests+0x151aa66)
      [2023/05/12 19:27:07.461] 1: #6 realm::IntegerNode<realm::ArrayInteger, realm::Greater>::find_all_local(unsigned long, unsigned long) /data/mci/63024f932e70faf62d309316edb21515/realm-core/build/../src/realm/query_engine.hpp:498 (realm-tests+0x151a815)
      [2023/05/12 19:27:07.461] 1: #7 realm::ParentNode::aggregate_local(realm::QueryStateBase_, unsigned long, unsigned long, unsigned long, realm::ArrayPayload_) /data/mci/63024f932e70faf62d309316edb21515/realm-core/build/../src/realm/query_engine.cpp:104 (realm-tests+0x16dce48)
      [2023/05/12 19:27:07.461] 1: #8 realm::Query::aggregate_internal(realm::ParentNode_, realm::QueryStateBase_, unsigned long, unsigned long, realm::ArrayPayload*) const /data/mci/63024f932e70faf62d309316edb21515/realm-core/build/../src/realm/query.cpp:1065 (realm-tests+0x14d82cb)
      [2023/05/12 19:27:07.461] 1: #9 operator() /data/mci/63024f932e70faf62d309316edb21515/realm-core/build/../src/realm/query.cpp:1359 (realm-tests+0x14dcae7)
      [2023/05/12 19:27:07.461] 1: #10 operator() /data/mci/63024f932e70faf62d309316edb21515/realm-core/build/../src/realm/util/function_ref.hpp:106 (realm-tests+0x14dcae7)
      [2023/05/12 19:27:07.461] 1: #11 __invoke /data/mci/63024f932e70faf62d309316edb21515/realm-core/build/../src/realm/util/function_ref.hpp:105 (realm-tests+0x14dcae7)
      [2023/05/12 19:27:07.461] 1: #12 realm::util::FunctionRef<realm::IteratorControl (realm::Cluster const_)>::operator()(realm::Cluster const_) const /data/mci/63024f932e70faf62d309316edb21515/realm-core/build/../src/realm/util/function_ref.hpp:119 (realm-tests+0x15adb84)
      [2023/05/12 19:27:07.461] 1: #13 realm::ClusterNodeInner::traverse(realm::util::FunctionRef<realm::IteratorControl (realm::Cluster const*)>, long) const /data/mci/63024f932e70faf62d309316edb21515/realm-core/build/../src/realm/cluster_tree.cpp:699 (realm-tests+0x15adb84)
      [2023/05/12 19:27:07.461] 1: #14 realm::ClusterTree::traverse(realm::util::FunctionRef<realm::IteratorControl (realm::Cluster const*)>) const /data/mci/63024f932e70faf62d309316edb21515/realm-core/build/../src/realm/cluster_tree.cpp:1067 (realm-tests+0x15af464)
      [2023/05/12 19:27:07.461] 1: #15 realm::Table::traverse_clusters(realm::util::FunctionRef<realm::IteratorControl (realm::Cluster const*)>) const /data/mci/63024f932e70faf62d309316edb21515/realm-core/build/../src/realm/table.hpp:327 (realm-tests+0x14d9c87)
      [2023/05/12 19:27:07.461] 1: #16 realm::Query::do_find_all(realm::TableView&, unsigned long) const /data/mci/63024f932e70faf62d309316edb21515/realm-core/build/../src/realm/query.cpp:1364 (realm-tests+0x14d9c87)
      [2023/05/12 19:27:07.461] 1: #17 realm::TableView::do_sync() /data/mci/63024f932e70faf62d309316edb21515/realm-core/build/../src/realm/table_view.cpp:493 (realm-tests+0x174eae8)
      [2023/05/12 19:27:07.461] 1: #18 realm::TableView::sync_if_needed() const /data/mci/63024f932e70faf62d309316edb21515/realm-core/build/../src/realm/table_view.cpp:365 (realm-tests+0x174e6e1)
      [2023/05/12 19:27:07.461] 1: #19 (anonymous namespace)::handover_querier((anonymous namespace)::HandoverControl<(anonymous namespace)::Work>*, realm::test_util::unit_test::TestContext&, std::shared_ptr<realm::DB>) /data/mci/63024f932e70faf62d309316edb21515/realm-core/build/../test/test_lang_bind_helper.cpp:3841 (realm-tests+0xd0628d)
      [2023/05/12 19:27:07.461] 1: #20 operator() /data/mci/63024f932e70faf62d309316edb21515/realm-core/build/../test/test_lang_bind_helper.cpp:3962 (realm-tests+0xd0628d)
      [2023/05/12 19:27:07.461] 1: #21 void* realm::util::Thread::entry_point<Realm_UnitTest__LangBindHelper_HandoverBetweenThreads::test_run()::$_16>(void*) /data/mci/63024f932e70faf62d309316edb21515/realm-core/build/../src/realm/util/thread.hpp:483 (realm-tests+0xd0628d)
      [2023/05/12 19:27:07.462] 1:
      [2023/05/12 19:27:07.462] 1: Previous write of size 8 at 0x7f59695144a0 by thread T79:
      [2023/05/12 19:27:07.462] 1: [failed to restore the stack]
      [2023/05/12 19:27:07.462] 1:
      [2023/05/12 19:27:07.462] 1: Thread T76 (tid=103876, running) created by thread T15 at:
      [2023/05/12 19:27:07.462] 1: #0 pthread_create /home/nnelson/Documents/llvm-project/llvm/utils/release/final/llvm-project/compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp:966 (realm-tests+0x78994b)
      [2023/05/12 19:27:07.462] 1: #1 realm::util::Thread::start(void* ()(void), void*) /data/mci/63024f932e70faf62d309316edb21515/realm-core/build/../src/realm/util/thread.hpp:472 (realm-tests+0xcb197b)
      [2023/05/12 19:27:07.462] 1: #2 void realm::util::Thread::start<Realm_UnitTest_LangBindHelper_HandoverBetweenThreads::test_run()::$_16>(Realm_UnitTest_LangBindHelper_HandoverBetweenThreads::test_run()::$_16) /data/mci/63024f932e70faf62d309316edb21515/realm-core/build/../src/realm/util/thread.hpp:450 (realm-tests+0xcb197b)
      [2023/05/12 19:27:07.462] 1: #3 Realm_UnitTest__LangBindHelper_HandoverBetweenThreads::test_run() /data/mci/63024f932e70faf62d309316edb21515/realm-core/build/../test/test_lang_bind_helper.cpp:3961 (realm-tests+0xcb197b)
      [2023/05/12 19:27:07.462] 1: #4 realm::test_util::unit_test::RegisterTest<Realm_UnitTest__LangBindHelper_HandoverBetweenThreads>::run_test(realm::test_util::unit_test::TestContext&) /data/mci/63024f932e70faf62d309316edb21515/realm-core/build/../test/util/unit_test.hpp:640 (realm-tests+0xd0de90)
      [2023/05/12 19:27:07.462] 1: #5 realm::test_util::unit_test::TestList::ThreadContextImpl::run(realm::test_util::unit_test::TestList::SharedContextImpl::Entry, realm::util::UniqueLock&) /data/mci/63024f932e70faf62d309316edb21515/realm-core/build/../test/util/unit_test.cpp:728 (realm-tests+0x14487de)
      [2023/05/12 19:27:07.462] 1: #6 realm::test_util::unit_test::TestList::ThreadContextImpl::run() /data/mci/63024f932e70faf62d309316edb21515/realm-core/build/../test/util/unit_test.cpp:682 (realm-tests+0x14481a3)
      [2023/05/12 19:27:07.462] 1: #7 operator() /data/mci/63024f932e70faf62d309316edb21515/realm-core/build/../test/util/unit_test.cpp:641 (realm-tests+0x144d7ba)
      [2023/05/12 19:27:07.462] 1: #8 operator() /data/mci/63024f932e70faf62d309316edb21515/realm-core/build/../test/util/unit_test.cpp:645 (realm-tests+0x144d7ba)
      [2023/05/12 19:27:07.462] 1: #9 void* realm::util::Thread::entry_point<realm::test_util::unit_test::TestList::run(realm::test_util::unit_test::TestList::Config)::$_1>(void*) /data/mci/63024f932e70faf62d309316edb21515/realm-core/build/../src/realm/util/thread.hpp:483 (realm-tests+0x144d7ba)
      [2023/05/12 19:27:07.462] 1:
      [2023/05/12 19:27:07.462] 1: Thread T79 (tid=103877, running) created by thread T15 at:
      [2023/05/12 19:27:07.462] 1: #0 pthread_create /home/nnelson/Documents/llvm-project/llvm/utils/release/final/llvm-project/compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp:966 (realm-tests+0x78994b)
      [2023/05/12 19:27:07.462] 1: #1 realm::util::Thread::start(void* ()(void), void*) /data/mci/63024f932e70faf62d309316edb21515/realm-core/build/../src/realm/util/thread.hpp:472 (realm-tests+0xcb19d5)
      [2023/05/12 19:27:07.462] 1: #2 void realm::util::Thread::start<Realm_UnitTest_LangBindHelper_HandoverBetweenThreads::test_run()::$_17>(Realm_UnitTest_LangBindHelper_HandoverBetweenThreads::test_run()::$_17) /data/mci/63024f932e70faf62d309316edb21515/realm-core/build/../src/realm/util/thread.hpp:450 (realm-tests+0xcb19d5)
      [2023/05/12 19:27:07.462] 1: #3 Realm_UnitTest__LangBindHelper_HandoverBetweenThreads::test_run() /data/mci/63024f932e70faf62d309316edb21515/realm-core/build/../test/test_lang_bind_helper.cpp:3964 (realm-tests+0xcb19d5)
      [2023/05/12 19:27:07.462] 1: #4 realm::test_util::unit_test::RegisterTest<Realm_UnitTest__LangBindHelper_HandoverBetweenThreads>::run_test(realm::test_util::unit_test::TestContext&) /data/mci/63024f932e70faf62d309316edb21515/realm-core/build/../test/util/unit_test.hpp:640 (realm-tests+0xd0de90)
      [2023/05/12 19:27:07.462] 1: #5 realm::test_util::unit_test::TestList::ThreadContextImpl::run(realm::test_util::unit_test::TestList::SharedContextImpl::Entry, realm::util::UniqueLock&) /data/mci/63024f932e70faf62d309316edb21515/realm-core/build/../test/util/unit_test.cpp:728 (realm-tests+0x14487de)
      [2023/05/12 19:27:07.462] 1: #6 realm::test_util::unit_test::TestList::ThreadContextImpl::run() /data/mci/63024f932e70faf62d309316edb21515/realm-core/build/../test/util/unit_test.cpp:682 (realm-tests+0x14481a3)
      [2023/05/12 19:27:07.462] 1: #7 operator() /data/mci/63024f932e70faf62d309316edb21515/realm-core/build/../test/util/unit_test.cpp:641 (realm-tests+0x144d7ba)
      [2023/05/12 19:27:07.463] 1: #8 operator() /data/mci/63024f932e70faf62d309316edb21515/realm-core/build/../test/util/unit_test.cpp:645 (realm-tests+0x144d7ba)
      [2023/05/12 19:27:07.463] 1: #9 void* realm::util::Thread::entry_point<realm::test_util::unit_test::TestList::run(realm::test_util::unit_test::TestList::Config)::$_1>(void*) /data/mci/63024f932e70faf62d309316edb21515/realm-core/build/../src/realm/util/thread.hpp:483 (realm-tests+0x144d7ba)
      [2023/05/12 19:27:07.463] 1:
      [2023/05/12 19:27:07.463] 1: SUMMARY: ThreadSanitizer: data race /data/mci/63024f932e70faf62d309316edb21515/realm-core/build/../src/realm/array_with_find.hpp:779 in bool realm::ArrayWithFind::find_sse_intern<realm::Greater, 8ul, decltype(nullptr)>(long long _vector(2)*, long long __vector(2), unsigned long, realm::QueryStateBase_, unsigned long, decltype(nullptr)) const
      ~~~

            Assignee:
            finn.schiermer-andersen@mongodb.com Finn Andersen (Inactive)
            Reporter:
            finn.schiermer-andersen@mongodb.com Finn Andersen (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: