Skip to content

TSAN data race between marker and allocator #57083

@alexmarkov

Description

@alexmarkov

From iso-stress-linux bot:

[/b/s/w/ir/cache/builder/sdk/runtime/tests/concurrency/../../../tests/language/regress/regress34877_test.dart] starting ...
==================
WARNING: ThreadSanitizer: data race (pid=693034)
  Atomic write of size 8 at 0x7f003dc00068 by thread T3:
    #0 unsigned long std::_LIBCPP_ABI_NAMESPACE::__cxx_atomic_fetch_and[abi:v15000]<unsigned long>(std::_LIBCPP_ABI_NAMESPACE::__cxx_atomic_base_impl<unsigned long>*, unsigned long, std::_LIBCPP_ABI_NAMESPACE::memory_order) out/ReleaseTSANX64/../../third_party/libcxx/include/atomic:1052:12 (dart+0x2943b55)
    #1 std::_LIBCPP_ABI_NAMESPACE::__atomic_base<unsigned long, true>::fetch_and[abi:v15000](unsigned long, std::_LIBCPP_ABI_NAMESPACE::memory_order) out/ReleaseTSANX64/../../third_party/libcxx/include/atomic:1699:17 (dart+0x2943b55)
    #2 bool dart::AtomicBitFieldContainer<unsigned long>::TryClearIgnoreRace<dart::BitField<dart::AtomicBitFieldContainer<unsigned long>, bool, 2, 1, false, void>>() out/ReleaseTSANX64/../../runtime/vm/bitfield.h:119:26 (dart+0x294487b)
    #3 dart::UntaggedObject::TryAcquireMarkBitIgnoreRace() out/ReleaseTSANX64/../../runtime/vm/raw_object.h:326:18 (dart+0x2944fe7)
    #4 dart::MarkingVisitorBase<true>::TryAcquireMarkBitIgnoreRace(dart::ObjectPtr) out/ReleaseTSANX64/../../runtime/vm/heap/marker.cc:655:28 (dart+0x2944fe7)
    #5 dart::MarkingVisitorBase<true>::MarkObject(dart::ObjectPtr) out/ReleaseTSANX64/../../runtime/vm/heap/marker.cc:668:11 (dart+0x2944fe7)
    #6 dart::MarkingVisitorBase<true>::VisitPointers(dart::ObjectPtr*, dart::ObjectPtr*) out/ReleaseTSANX64/../../runtime/vm/heap/marker.cc:385:35 (dart+0x2944fe7)
    #7 dart::ObjectPointerVisitor::VisitCompressedPointers(unsigned long, dart::ObjectPtr*, dart::ObjectPtr*) out/ReleaseTSANX64/../../runtime/vm/visitor.h:46:5 (dart+0x2944692)
    #8 dart::MarkingVisitorBase<true>::VisitCards(dart::ArrayPtr) out/ReleaseTSANX64/../../runtime/vm/heap/marker.cc:225:7 (dart+0x2944692)
    #9 dart::MarkingVisitorBase<true>::DrainMarkingStackWithPauseChecks() out/ReleaseTSANX64/../../runtime/vm/heap/marker.cc:168:18 (dart+0x29458ca)
    #10 dart::ConcurrentMarkTask::Run() out/ReleaseTSANX64/../../runtime/vm/heap/marker.cc:1057:17 (dart+0x294523d)
    #11 dart::ThreadPool::WorkerLoop(dart::ThreadPool::Worker*) out/ReleaseTSANX64/../../runtime/vm/thread_pool.cc:203:15 (dart+0x2902d5e)
    #12 dart::ThreadPool::Worker::Main(unsigned long) out/ReleaseTSANX64/../../runtime/vm/thread_pool.cc:363:9 (dart+0x29032ba)
    #13 dart::ThreadStart(void*) out/ReleaseTSANX64/../../runtime/vm/os_thread_linux.cc:97:5 (dart+0x2874186)

  Previous write of size 8 at 0x7f003dc00068 by thread T7 (mutexes: write M0):
    #0 mmap64 ../../../../../../llvm-llvm-project/compiler-rt/lib/tsan/rtl/../../sanitizer_common/sanitizer_common_interceptors.inc:7603:3 (dart+0x23238d2)
    #1 dart::Map(void*, unsigned long, int, int, int, long) out/ReleaseTSANX64/../../runtime/vm/virtual_memory_posix.cc:62:18 (dart+0x2919889)
    #2 dart::GenericMapAligned(void*, int, long, long, long, int) out/ReleaseTSANX64/../../runtime/vm/virtual_memory_posix.cc:96:19 (dart+0x2919889)
    #3 dart::VirtualMemory::AllocateAligned(long, long, bool, bool, char const*) out/ReleaseTSANX64/../../runtime/vm/virtual_memory_posix.cc (dart+0x29197c2)
    #4 dart::Page::Allocate(long, unsigned long) out/ReleaseTSANX64/../../runtime/vm/heap/page.cc:81:14 (dart+0x294881a)
    #5 dart::SemiSpace::TryAllocatePageLocked(bool) out/ReleaseTSANX64/../../runtime/vm/heap/scavenger.cc:756:16 (dart+0x295b0c4)
    #6 dart::Scavenger::TryAllocateNewTLAB(dart::Thread*, long, bool) out/ReleaseTSANX64/../../runtime/vm/heap/scavenger.cc:1825:21 (dart+0x295b0c4)
    #7 dart::Scavenger::TryAllocate(dart::Thread*, long) out/ReleaseTSANX64/../../runtime/vm/heap/scavenger.h:143:5 (dart+0x2933f93)
    #8 dart::Heap::AllocateNew(dart::Thread*, long) out/ReleaseTSANX64/../../runtime/vm/heap/heap.cc:82:27 (dart+0x2933f93)
    #9 dart::Heap::Allocate(dart::Thread*, long, dart::Heap::Space) out/ReleaseTSANX64/../../runtime/vm/heap/heap.h:73:16 (dart+0x277b74b)
    #10 dart::Object::Allocate(long, long, dart::Heap::Space, bool, unsigned long, unsigned long) out/ReleaseTSANX64/../../runtime/vm/object.cc:2873:25 (dart+0x27a4378)
    #11 dart::TypedData::ObjectPtrType dart::Object::AllocateVariant<dart::TypedData>(long, dart::Heap::Space, long) out/ReleaseTSANX64/../../runtime/vm/object.h:774:9 (dart+0x27fcb05)
    #12 dart::TypedData::New(long, long, dart::Heap::Space) out/ReleaseTSANX64/../../runtime/vm/object.cc:26056:14 (dart+0x27fcb05)
    #13 dart::DRT_HelperAllocateTypedData(dart::Isolate*, dart::Thread*, dart::Zone*, dart::NativeArguments) out/ReleaseTSANX64/../../runtime/vm/runtime_entry.cc:509:31 (dart+0x28a13ee)
    #14 dart::DRT_AllocateTypedData(dart::NativeArguments) out/ReleaseTSANX64/../../runtime/vm/runtime_entry.cc:493:1 (dart+0x28a13ee)
    #15 <null> <null> (0x7f00c0b82fda)
    #16 dart::DartEntry::InvokeFunction(dart::Function const&, dart::Array const&) out/ReleaseTSANX64/../../runtime/vm/dart_entry.cc:38:10 (dart+0x26e4121)
    #17 dart::DartLibraryCalls::HandleMessage(long, dart::Instance const&) out/ReleaseTSANX64/../../runtime/vm/dart_entry.cc:718:28 (dart+0x26e4121)
    #18 dart::IsolateMessageHandler::HandleMessage(std::_LIBCPP_ABI_NAMESPACE::unique_ptr<dart::Message, std::_LIBCPP_ABI_NAMESPACE::default_delete<dart::Message>>) out/ReleaseTSANX64/../../runtime/vm/isolate.cc:1456:15 (dart+0x271cc61)
    #19 dart::MessageHandler::HandleMessages(dart::MonitorLocker*, bool, bool) out/ReleaseTSANX64/../../runtime/vm/message_handler.cc:229:16 (dart+0x275e112)
    #20 dart::MessageHandler::TaskCallback() out/ReleaseTSANX64/../../runtime/vm/message_handler.cc:443:18 (dart+0x275e7c1)
    #21 dart::MessageHandlerTask::Run() out/ReleaseTSANX64/../../runtime/vm/message_handler.cc:31:15 (dart+0x275ee93)
    #22 dart::ThreadPool::WorkerLoop(dart::ThreadPool::Worker*) out/ReleaseTSANX64/../../runtime/vm/thread_pool.cc:203:15 (dart+0x2902d5e)
    #23 dart::ThreadPool::Worker::Main(unsigned long) out/ReleaseTSANX64/../../runtime/vm/thread_pool.cc:363:9 (dart+0x29032ba)
    #24 dart::ThreadStart(void*) out/ReleaseTSANX64/../../runtime/vm/os_thread_linux.cc:97:5 (dart+0x2874186)

  Mutex M0 (0x726800000878) created at:
    #0 pthread_mutex_init ../../../../../../llvm-llvm-project/compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp:1345:3 (dart+0x22eb503)
    #1 dart::Mutex::Mutex() out/ReleaseTSANX64/../../runtime/platform/synchronization_posix.cc:31:12 (dart+0x2379b07)
    #2 dart::Heap::Heap(dart::IsolateGroup*, bool, long, long) out/ReleaseTSANX64/../../runtime/vm/heap/heap.cc:50:7 (dart+0x293361f)
    #3 dart::Heap::Init(dart::IsolateGroup*, bool, long, long) out/ReleaseTSANX64/../../runtime/vm/heap/heap.cc:709:34 (dart+0x29376d3)
    #4 dart::IsolateGroup::CreateHeap(bool, bool) out/ReleaseTSANX64/../../runtime/vm/isolate.cc:475:3 (dart+0x271608c)
    #5 Dart_CreateIsolateGroup out/ReleaseTSANX64/../../runtime/vm/dart_api_impl.cc:1340:10 (dart+0x2c8e1b9)
    #6 dart::bin::CreateIsolateGroupAndSetupHelper(bool, char const*, char const*, char const*, Dart_IsolateFlags*, void*, char**, int*) out/ReleaseTSANX64/../../runtime/bin/main_impl.cc:810:15 (dart+0x2376707)
    #7 dart::bin::RunMainIsolate(char const*, char const*, dart::bin::CommandLineOptions*) out/ReleaseTSANX64/../../runtime/bin/main_impl.cc:1025:26 (dart+0x2375fb3)
    #8 dart::bin::main(int, char**) out/ReleaseTSANX64/../../runtime/bin/main_impl.cc:1442:7 (dart+0x23774c3)
    #9 main out/ReleaseTSANX64/../../runtime/bin/main.cc:9:3 (dart+0x2375e74)

  Thread T3 'DartWorker' (tid=693038, running) created by thread T2 at:
    #0 pthread_create ../../../../../../llvm-llvm-project/compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp:1041:3 (dart+0x22e9b11)
    #1 dart::OSThread::TryStart(char const*, void (*)(unsigned long), unsigned long) out/ReleaseTSANX64/../../runtime/vm/os_thread_linux.cc:116:12 (dart+0x2874055)
    #2 dart::OSThread::Start(char const*, void (*)(unsigned long), unsigned long) out/ReleaseTSANX64/../../runtime/vm/os_thread.cc:343:16 (dart+0x2873e6f)
    #3 dart::ThreadPool::Worker::StartThread() out/ReleaseTSANX64/../../runtime/vm/thread_pool.cc:333:3 (dart+0x290256a)
    #4 dart::ThreadPool::RunImpl(std::_LIBCPP_ABI_NAMESPACE::unique_ptr<dart::ThreadPool::Task, std::_LIBCPP_ABI_NAMESPACE::default_delete<dart::ThreadPool::Task>>) out/ReleaseTSANX64/../../runtime/vm/thread_pool.cc:130:17 (dart+0x290256a)
    #5 bool dart::ThreadPool::Run<dart::ConcurrentMarkTask, dart::GCMarker*, dart::IsolateGroup* const&, dart::PageSpace*&, dart::MarkingVisitorBase<true>*&>(dart::GCMarker*&&, dart::IsolateGroup* const&, dart::PageSpace*&, dart::MarkingVisitorBase<true>*&) out/ReleaseTSANX64/../../runtime/vm/thread_pool.h:47:12 (dart+0x293ea84)
    #6 dart::GCMarker::StartConcurrentMark(dart::PageSpace*) out/ReleaseTSANX64/../../runtime/vm/heap/marker.cc:1171:42 (dart+0x293ea84)
    #7 dart::PageSpace::CollectGarbageHelper(dart::Thread*, bool, bool) out/ReleaseTSANX64/../../runtime/vm/heap/pages.cc:1086:14 (dart+0x294e5d5)
    #8 dart::PageSpace::CollectGarbage(dart::Thread*, bool, bool) out/ReleaseTSANX64/../../runtime/vm/heap/pages.cc:1006:3 (dart+0x294e0a9)
    #9 dart::Heap::StartConcurrentMarking(dart::Thread*, dart::GCReason) out/ReleaseTSANX64/../../runtime/vm/heap/heap.cc:648:14 (dart+0x293644a)
    #10 dart::Heap::CheckConcurrentMarking(dart::Thread*, dart::GCReason, long) out/ReleaseTSANX64/../../runtime/vm/heap/heap.cc:619:9 (dart+0x2935357)
    #11 dart::PageSpace::TryAllocateInFreshPage(long, dart::FreeList*, bool, dart::PageSpace::GrowthPolicy, bool) out/ReleaseTSANX64/../../runtime/vm/heap/pages.cc:333:12 (dart+0x294a563)
    #12 dart::PageSpace::TryAllocateInternal(long, dart::FreeList*, bool, dart::PageSpace::GrowthPolicy, bool, bool) out/ReleaseTSANX64/../../runtime/vm/heap/pages.cc:416:16 (dart+0x294ab6c)
    #13 dart::PageSpace::TryAllocate(long, bool, dart::PageSpace::GrowthPolicy) out/ReleaseTSANX64/../../runtime/vm/heap/pages.h:146:12 (dart+0x2934504)
    #14 dart::Heap::AllocateOld(dart::Thread*, long, bool) out/ReleaseTSANX64/../../runtime/vm/heap/heap.cc:121:29 (dart+0x2934504)
    #15 dart::Heap::Allocate(dart::Thread*, long, dart::Heap::Space) out/ReleaseTSANX64/../../runtime/vm/heap/heap.h (dart+0x277b76d)
    #16 dart::Object::Allocate(long, long, dart::Heap::Space, bool, unsigned long, unsigned long) out/ReleaseTSANX64/../../runtime/vm/object.cc:2873:25 (dart+0x27a4378)
    #17 dart::FunctionType::ObjectPtrType dart::Object::Allocate<dart::FunctionType>(dart::Heap::Space) out/ReleaseTSANX64/../../runtime/vm/object.h:745:51 (dart+0x27adf30)
    #18 dart::FunctionType::New(dart::Heap::Space) out/ReleaseTSANX64/../../runtime/vm/object.cc:11905:10 (dart+0x27adf30)
    #19 dart::FunctionType::New(long, dart::Nullability, dart::Heap::Space) out/ReleaseTSANX64/../../runtime/vm/object.cc:11913:31 (dart+0x27adf30)
    #20 dart::kernel::KernelLoader::LoadProcedure(dart::Library const&, dart::Class const&, bool, long) out/ReleaseTSANX64/../../runtime/vm/kernel_loader.cc:1864:59 (dart+0x27565f3)
    #21 dart::kernel::KernelLoader::FinishClassLoading(dart::Class const&, dart::Library const&, dart::Class const&, long, dart::kernel::ClassIndex const&, dart::kernel::ClassHelper*) out/ReleaseTSANX64/../../runtime/vm/kernel_loader.cc:1683:5 (dart+0x2758712)
    #22 dart::kernel::KernelLoader::FinishLoading(dart::Class const&) out/ReleaseTSANX64/../../runtime/vm/kernel_loader.cc:1737:17 (dart+0x2758f01)
    #23 dart::ClassFinalizer::FinalizeClass(dart::Class const&) out/ReleaseTSANX64/../../runtime/vm/class_finalizer.cc:750:7 (dart+0x26c45ee)
    #24 dart::ClassFinalizer::LoadClassMembers(dart::Class const&) out/ReleaseTSANX64/../../runtime/vm/class_finalizer.cc:856:5 (dart+0x26c5f58)
    #25 dart::Class::EnsureIsFinalized(dart::Thread*) const out/ReleaseTSANX64/../../runtime/vm/object.cc:5115:37 (dart+0x27a6e8f)
    #26 dart::kernel::TranslationHelper::LookupMethodByMember(dart::kernel::NameIndex, dart::String const&, bool) out/ReleaseTSANX64/../../runtime/vm/compiler/frontend/kernel_translation_helper.cc:725:32 (dart+0x2bd373e)
    #27 dart::kernel::StreamingFlowGraphBuilder::BuildMethodInvocation(dart::TokenPosition*, bool) out/ReleaseTSANX64/../../runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc:2920:14 (dart+0x2b8e611)
    #28 dart::kernel::StreamingFlowGraphBuilder::BuildExpression(dart::TokenPosition*) out/ReleaseTSANX64/../../runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc (dart+0x2b8635c)
    #29 dart::kernel::StreamingFlowGraphBuilder::BuildExpressionStatement(dart::TokenPosition*) out/ReleaseTSANX64/../../runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc:4544:27 (dart+0x2b88376)
    #30 dart::kernel::StreamingFlowGraphBuilder::BuildStatement(dart::TokenPosition*) out/ReleaseTSANX64/../../runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc:1218:14 (dart+0x2b88376)
    #31 dart::kernel::StreamingFlowGraphBuilder::BuildBlock(dart::TokenPosition*) out/ReleaseTSANX64/../../runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc:4563:23 (dart+0x2b95f49)
    #32 dart::kernel::StreamingFlowGraphBuilder::BuildStatement(dart::TokenPosition*) out/ReleaseTSANX64/../../runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc:1220:14 (dart+0x2b884bd)
    #33 dart::kernel::StreamingFlowGraphBuilder::BuildFunctionBody(dart::Function const&, dart::LocalVariable*, bool) out/ReleaseTSANX64/../../runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc:683:13 (dart+0x2b899a0)
    #34 dart::kernel::StreamingFlowGraphBuilder::BuildGraphOfFunction(bool) out/ReleaseTSANX64/../../runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc:843:7 (dart+0x2b8a61a)
    #35 dart::kernel::StreamingFlowGraphBuilder::BuildGraph() out/ReleaseTSANX64/../../runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc:933:14 (dart+0x2b8aced)
    #36 dart::kernel::FlowGraphBuilder::BuildGraph() out/ReleaseTSANX64/../../runtime/vm/compiler/frontend/kernel_to_il.cc:827:46 (dart+0x2baaae7)
    #37 dart::DartCompilationPipeline::BuildFlowGraph(dart::Zone*, dart::ParsedFunction*, dart::ZoneGrowableArray<dart::ICData const*>*, long, bool) out/ReleaseTSANX64/../../runtime/vm/compiler/jit/compiler.cc:138:30 (dart+0x291b669)
    #38 dart::CompileParsedFunctionHelper::Compile(dart::CompilationPipeline*) out/ReleaseTSANX64/../../runtime/vm/compiler/jit/compiler.cc:547:32 (dart+0x291d273)
    #39 dart::CompileFunctionHelper(dart::CompilationPipeline*, dart::Function const&, bool, long) out/ReleaseTSANX64/../../runtime/vm/compiler/jit/compiler.cc:719:46 (dart+0x291e173)
    #40 dart::Compiler::CompileFunction(dart::Thread*, dart::Function const&) out/ReleaseTSANX64/../../runtime/vm/compiler/jit/compiler.cc:850:10 (dart+0x291db6a)
    #41 dart::Function::EnsureHasCodeNoThrow() const out/ReleaseTSANX64/../../runtime/vm/object.cc:11625:28 (dart+0x27d30cb)
    #42 dart::Function::EnsureHasCode() const out/ReleaseTSANX64/../../runtime/vm/object.cc:11600:47 (dart+0x27d2f72)
    #43 dart::DRT_HelperCompileFunction(dart::Isolate*, dart::Thread*, dart::Zone*, dart::NativeArguments) out/ReleaseTSANX64/../../runtime/vm/compiler/jit/compiler.cc:226:12 (dart+0x291bc0a)
    #44 dart::DRT_CompileFunction(dart::NativeArguments) out/ReleaseTSANX64/../../runtime/vm/compiler/jit/compiler.cc:212:1 (dart+0x291bc0a)
    #45 <null> <null> (0x7f00c0b82fda)
    #46 dart::DartEntry::InvokeFunction(dart::Function const&, dart::Array const&) out/ReleaseTSANX64/../../runtime/vm/dart_entry.cc:38:10 (dart+0x26e1175)
    #47 dart::RunServiceTask::RunMain(dart::Isolate*) out/ReleaseTSANX64/../../runtime/vm/service_isolate.cc:477:12 (dart+0x28dac4b)
    #48 dart::RunServiceTask::Run() out/ReleaseTSANX64/../../runtime/vm/service_isolate.cc:387:20 (dart+0x28da867)
    #49 dart::ThreadPool::WorkerLoop(dart::ThreadPool::Worker*) out/ReleaseTSANX64/../../runtime/vm/thread_pool.cc:203:15 (dart+0x2902d5e)
    #50 dart::ThreadPool::Worker::Main(unsigned long) out/ReleaseTSANX64/../../runtime/vm/thread_pool.cc:363:9 (dart+0x29032ba)
    #51 dart::ThreadStart(void*) out/ReleaseTSANX64/../../runtime/vm/os_thread_linux.cc:97:5 (dart+0x2874186)

  Thread T7 'DartWorker' (tid=693042, running) created by thread T6 at:
    #0 pthread_create ../../../../../../llvm-llvm-project/compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp:1041:3 (dart+0x22e9b11)
    #1 dart::OSThread::TryStart(char const*, void (*)(unsigned long), unsigned long) out/ReleaseTSANX64/../../runtime/vm/os_thread_linux.cc:116:12 (dart+0x2874055)
    #2 dart::OSThread::Start(char const*, void (*)(unsigned long), unsigned long) out/ReleaseTSANX64/../../runtime/vm/os_thread.cc:343:16 (dart+0x2873e6f)
    #3 dart::ThreadPool::Worker::StartThread() out/ReleaseTSANX64/../../runtime/vm/thread_pool.cc:333:3 (dart+0x290256a)
    #4 dart::ThreadPool::RunImpl(std::_LIBCPP_ABI_NAMESPACE::unique_ptr<dart::ThreadPool::Task, std::_LIBCPP_ABI_NAMESPACE::default_delete<dart::ThreadPool::Task>>) out/ReleaseTSANX64/../../runtime/vm/thread_pool.cc:130:17 (dart+0x290256a)
    #5 bool dart::ThreadPool::Run<dart::SpawnIsolateTask, dart::Isolate*&, std::_LIBCPP_ABI_NAMESPACE::unique_ptr<dart::IsolateSpawnState, std::_LIBCPP_ABI_NAMESPACE::default_delete<dart::IsolateSpawnState>>>(dart::Isolate*&, std::_LIBCPP_ABI_NAMESPACE::unique_ptr<dart::IsolateSpawnState, std::_LIBCPP_ABI_NAMESPACE::default_delete<dart::IsolateSpawnState>>&&) out/ReleaseTSANX64/../../runtime/vm/thread_pool.h:47:12 (dart+0x264a7b1)
    #6 dart::DN_HelperIsolate_spawnFunction(dart::Isolate*, dart::Thread*, dart::Zone*, dart::NativeArguments*) out/ReleaseTSANX64/../../runtime/lib/isolate.cc:1124:36 (dart+0x264a7b1)
    #7 dart::BootstrapNatives::DN_Isolate_spawnFunction(dart::Thread*, dart::Zone*, dart::NativeArguments*) out/ReleaseTSANX64/../../runtime/lib/isolate.cc:1074:1 (dart+0x264a7b1)
    #8 dart::NativeEntry::BootstrapNativeCallWrapper(_Dart_NativeArguments*, void (*)(_Dart_NativeArguments*)) out/ReleaseTSANX64/../../runtime/vm/native_entry.cc:143:37 (dart+0x2778784)
    #9 <null> <null> (0x7f00c0b831bb)
    #10 dart::DartEntry::InvokeFunction(dart::Function const&, dart::Array const&) out/ReleaseTSANX64/../../runtime/vm/dart_entry.cc:38:10 (dart+0x26e4121)
    #11 dart::DartLibraryCalls::HandleMessage(long, dart::Instance const&) out/ReleaseTSANX64/../../runtime/vm/dart_entry.cc:718:28 (dart+0x26e4121)
    #12 dart::IsolateMessageHandler::HandleMessage(std::_LIBCPP_ABI_NAMESPACE::unique_ptr<dart::Message, std::_LIBCPP_ABI_NAMESPACE::default_delete<dart::Message>>) out/ReleaseTSANX64/../../runtime/vm/isolate.cc:1456:15 (dart+0x271cc61)
    #13 dart::MessageHandler::HandleMessages(dart::MonitorLocker*, bool, bool) out/ReleaseTSANX64/../../runtime/vm/message_handler.cc:229:16 (dart+0x275e112)
    #14 dart::MessageHandler::TaskCallback() out/ReleaseTSANX64/../../runtime/vm/message_handler.cc:443:18 (dart+0x275e7c1)
    #15 dart::MessageHandlerTask::Run() out/ReleaseTSANX64/../../runtime/vm/message_handler.cc:31:15 (dart+0x275ee93)
    #16 dart::ThreadPool::WorkerLoop(dart::ThreadPool::Worker*) out/ReleaseTSANX64/../../runtime/vm/thread_pool.cc:203:15 (dart+0x2902d5e)
    #17 dart::ThreadPool::Worker::Main(unsigned long) out/ReleaseTSANX64/../../runtime/vm/thread_pool.cc:363:9 (dart+0x29032ba)
    #18 dart::ThreadStart(void*) out/ReleaseTSANX64/../../runtime/vm/os_thread_linux.cc:97:5 (dart+0x2874186)

SUMMARY: ThreadSanitizer: data race out/ReleaseTSANX64/../../third_party/libcxx/include/atomic:1052:12 in unsigned long std::_LIBCPP_ABI_NAMESPACE::__cxx_atomic_fetch_and[abi:v15000]<unsigned long>(std::_LIBCPP_ABI_NAMESPACE::__cxx_atomic_base_impl<unsigned long>*, unsigned long, std::_LIBCPP_ABI_NAMESPACE::memory_order)
==================
=> Running "out/ReleaseTSANX64/dart --disable-dart-dev -Drepeat=4 -Dshard=183 -Dshards=200 runtime/tests/concurrency/generated_stress_test.dart.jit.dill" failed with -6
=> Possible crash 0 (pid: 693034)

/cc @rmacnak-google

Metadata

Metadata

Assignees

No one assigned

    Labels

    area-vmUse area-vm for VM related issues, including code coverage, and the AOT and JIT backends.gardening

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions