Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

data race in PageSpaceController::Enable on stress test bot #48607

Closed
aam opened this issue Mar 18, 2022 · 0 comments
Closed

data race in PageSpaceController::Enable on stress test bot #48607

aam opened this issue Mar 18, 2022 · 0 comments
Labels
area-vm Use area-vm for VM related issues, including code coverage, FFI, and the AOT and JIT backends. vm-gc Related to the VM's garbage collector

Comments

@aam
Copy link
Contributor

aam commented Mar 18, 2022

$ out/ReleaseTSANX64/dart --disable-dart-dev --no-sound-null-safety  runtime/tests/concurrency/generated_stress_test.dart.jit.dill
...
[/p/d/dart-sdk1/sdk/runtime/tests/concurrency/../../../tests/corelib_2/collection_length_test.dart] starting ...
/usr/bin/addr2line: '/memfd:dart-codespace (deleted)': No such file
==908559==WARNING: Can't read from symbolizer at fd 10
/usr/bin/addr2line: '/memfd:dart-codespace (deleted)': No such file
==908559==WARNING: Can't read from symbolizer at fd 10
/usr/bin/addr2line: '/memfd:dart-codespace (deleted)': No such file
==908559==WARNING: Can't read from symbolizer at fd 10
/usr/bin/addr2line: '/memfd:dart-codespace (deleted)': No such file
==908559==WARNING: Can't read from symbolizer at fd 10
==908559==WARNING: Failed to use and restart external symbolizer!
/usr/bin/addr2line: '/memfd:dart-codespace (deleted)': No such file
==================
WARNING: ThreadSanitizer: data race (pid=908559)
  Write of size 1 at 0x7b68000009b8 by thread T18:
    #0 dart::PageSpaceController::Enable() ../../out/ReleaseTSANX64/../../runtime/vm/heap/pages.h:271 (dart+0x254fd24)
    #1 dart::PageSpace::SetGrowthControlState(bool) ../../out/ReleaseTSANX64/../../runtime/vm/heap/pages.h:422 (dart+0x254fd24)
    #2 dart::Heap::SetGrowthControlState(bool) ../../out/ReleaseTSANX64/../../runtime/vm/heap/heap.cc:692 (dart+0x254fd24)
    #3 dart::Heap::DisableGrowthControl() ../../out/ReleaseTSANX64/../../runtime/vm/heap/heap.h:139 (dart+0x2565203)
    #4 ForceGrowthSafepointOperationScope ../../out/ReleaseTSANX64/../../runtime/vm/heap/safepoint.cc:46 (dart+0x2565203)
    #5 dart::IsolateGroup::RunWithStoppedMutatorsCallable(dart::Callable*, dart::Callable*, bool) ../../out/ReleaseTSANX64/../../runtime/vm/isolate.cc:2867 (dart+0x22c2eee)
    #6 void dart::IsolateGroup::RunWithStoppedMutators<dart::CompileParsedFunctionHelper::Compile(dart::CompilationPipeline*)::$_0>(dart::CompileParsedFunctionHelper::Compile(dart::CompilationPipeline*)::$_0, bool) ../../out/ReleaseTSANX64/../../runtime/vm/isolate.h:648 (dart+0x2535311)
    #7 dart::CompileParsedFunctionHelper::Compile(dart::CompilationPipeline*) ../../out/ReleaseTSANX64/../../runtime/vm/compiler/jit/compiler.cc:625 (dart+0x2535311)
    #8 dart::CompileFunctionHelper(dart::CompilationPipeline*, dart::Function const&, bool, long) ../../out/ReleaseTSANX64/../../runtime/vm/compiler/jit/compiler.cc:712 (dart+0x25362b4)
    #9 dart::Compiler::CompileFunction(dart::Thread*, dart::Function const&) ../../out/ReleaseTSANX64/../../runtime/vm/compiler/jit/compiler.cc:842 (dart+0x2535b0e)
    #10 dart::Function::EnsureHasCode() const ../../out/ReleaseTSANX64/../../runtime/vm/object.cc:10026 (dart+0x238164f)
    #11 dart::DRT_HelperCompileFunction(dart::Isolate*, dart::Thread*, dart::Zone*, dart::NativeArguments) ../../out/ReleaseTSANX64/../../runtime/vm/compiler/jit/compiler.cc:223 (dart+0x2533873)
    #12 dart::DRT_CompileFunction(dart::NativeArguments) ../../out/ReleaseTSANX64/../../runtime/vm/compiler/jit/compiler.cc:209 (dart+0x2533873)
    #13 <null> <null> (memfd:dart-codespace (deleted)+0x2649)
    #14 dart::DartEntry::InvokeFunction(dart::Function const&, dart::Array const&, dart::Array const&, unsigned long) ../../out/ReleaseTSANX64/../../runtime/vm/dart_entry.cc:145 (dart+0x2273ce4)
    #15 dart::DartEntry::InvokeFunction(dart::Function const&, dart::Array const&) ../../out/ReleaseTSANX64/../../runtime/vm/dart_entry.cc:37 (dart+0x2277907)
    #16 dart::DartLibraryCalls::HandleMessage(long, dart::Instance const&) ../../out/ReleaseTSANX64/../../runtime/vm/dart_entry.cc:736 (dart+0x2277907)
    #17 dart::IsolateMessageHandler::HandleMessage(std::__2::unique_ptr<dart::Message, std::__2::default_delete<dart::Message> >) ../../out/ReleaseTSANX64/../../runtime/vm/isolate.cc:1410 (dart+0x22bcfd5)
    #18 dart::MessageHandler::HandleMessages(dart::MonitorLocker*, bool, bool) ../../out/ReleaseTSANX64/../../runtime/vm/message_handler.cc:240 (dart+0x2304d1e)
    #19 dart::MessageHandler::TaskCallback() ../../out/ReleaseTSANX64/../../runtime/vm/message_handler.cc:450 (dart+0x23056cf)
    #20 dart::MessageHandlerTask::Run() ../../out/ReleaseTSANX64/../../runtime/vm/message_handler.cc:31 (dart+0x23060f3)
    #21 dart::ThreadPool::WorkerLoop(dart::ThreadPool::Worker*) ../../out/ReleaseTSANX64/../../runtime/vm/thread_pool.cc:174 (dart+0x2516bfa)
    #22 dart::ThreadPool::Worker::Main(unsigned long) ../../out/ReleaseTSANX64/../../runtime/vm/thread_pool.cc:346 (dart+0x25174de)
    #23 dart::ThreadStart(void*) ../../out/ReleaseTSANX64/../../runtime/vm/os_thread_linux.cc:154 (dart+0x2421a5d)

  Previous read of size 1 at 0x7b68000009b8 by thread T20 (mutexes: write M435296034961233280, write M435014559984522576):
    #0 dart::PageSpaceController::is_enabled() ../../out/ReleaseTSANX64/../../runtime/vm/heap/pages.h:273 (dart+0x254c3cc)
    #1 dart::PageSpace::GrowthControlState() ../../out/ReleaseTSANX64/../../runtime/vm/heap/pages.h:428 (dart+0x254c3cc)
    #2 dart::Heap::AllocateOld(long, dart::OldPage::PageType) ../../out/ReleaseTSANX64/../../runtime/vm/heap/heap.cc:97 (dart+0x254c3cc)
    #3 dart::Object::Allocate(long, long, dart::Heap::Space, bool) ??:? (dart+0x234f5d3)
    #4 dart::Object::Allocate(long, long, dart::Heap::Space, bool) ../../out/ReleaseTSANX64/../../runtime/vm/object.cc:2641 (dart+0x234f5d3)
    #5 dart::Array::New(long, long, dart::Heap::Space) ../../out/ReleaseTSANX64/../../runtime/vm/object.cc:24182 (dart+0x2351e7d)
    #6 dart::Array::New(long, dart::Heap::Space) ../../out/ReleaseTSANX64/../../runtime/vm/object.cc:24154 (dart+0x2351e7d)
    #7 dart::Array::Grow(dart::Array const&, long, dart::Heap::Space) ../../out/ReleaseTSANX64/../../runtime/vm/object.cc:24226 (dart+0x2351e7d)
    #8 dart::ICData::Grow(long*) const ../../out/ReleaseTSANX64/../../runtime/vm/object.cc:15940 (dart+0x23a367f)
    #9 dart::ICData::AddCheckInternal(dart::GrowableArray<long> const&, dart::Function const&, long) const ../../out/ReleaseTSANX64/../../runtime/vm/object.cc:15912 (dart+0x23a326d)
    #10 dart::ICData::EnsureHasCheck(dart::GrowableArray<long> const&, dart::Function const&, long) const ../../out/ReleaseTSANX64/../../runtime/vm/object.cc:15866 (dart+0x23a2f7e)
    #11 dart::PatchableCallHandler::UpdateICDataWithTarget(dart::ICData const&, dart::Function const&) ../../out/ReleaseTSANX64/../../runtime/vm/runtime_entry.cc:2173 (dart+0x24bbccc)
    #12 dart::PatchableCallHandler::DoICDataMissJIT(dart::ICData const&, dart::Object const&, dart::Function const&) ??:? (dart+0x24bc06b)
    #13 dart::PatchableCallHandler::HandleMissJIT(dart::Object const&, dart::Code const&, dart::Function const&) ../../out/ReleaseTSANX64/../../runtime/vm/runtime_entry.cc:2379 (dart+0x24bd0f9)
    #14 dart::PatchableCallHandler::ResolveSwitchAndReturn(dart::Object const&) ../../out/ReleaseTSANX64/../../runtime/vm/runtime_entry.cc:2327 (dart+0x24bd0f9)
    #15 dart::InlineCacheMissHandler(dart::Thread*, dart::Zone*, dart::GrowableArray<dart::Instance const*> const&, dart::ICData const&, dart::NativeArguments) ../../out/ReleaseTSANX64/../../runtime/vm/runtime_entry.cc:2409 (dart+0x24bdb11)
    #16 dart::DRT_HelperInlineCacheMissHandlerTwoArgs(dart::Isolate*, dart::Thread*, dart::Zone*, dart::NativeArguments) ../../out/ReleaseTSANX64/../../runtime/vm/runtime_entry.cc:2443 (dart+0x24bdb11)
    #17 dart::DRT_InlineCacheMissHandlerTwoArgs(dart::NativeArguments) ../../out/ReleaseTSANX64/../../runtime/vm/runtime_entry.cc:2435 (dart+0x24bdb11)
    #18 <null> <null> (memfd:dart-codespace (deleted)+0x2649)
    #19 dart::DartEntry::InvokeFunction(dart::Function const&, dart::Array const&, dart::Array const&, unsigned long) ../../out/ReleaseTSANX64/../../runtime/vm/dart_entry.cc:145 (dart+0x2273ce4)
    #20 dart::DartEntry::InvokeFunction(dart::Function const&, dart::Array const&) ../../out/ReleaseTSANX64/../../runtime/vm/dart_entry.cc:37 (dart+0x2277907)
    #21 dart::DartLibraryCalls::HandleMessage(long, dart::Instance const&) ../../out/ReleaseTSANX64/../../runtime/vm/dart_entry.cc:736 (dart+0x2277907)
    #22 dart::IsolateMessageHandler::HandleMessage(std::__2::unique_ptr<dart::Message, std::__2::default_delete<dart::Message> >) ../../out/ReleaseTSANX64/../../runtime/vm/isolate.cc:1410 (dart+0x22bcfd5)
    #23 dart::MessageHandler::HandleMessages(dart::MonitorLocker*, bool, bool) ../../out/ReleaseTSANX64/../../runtime/vm/message_handler.cc:240 (dart+0x2304d1e)
    #24 dart::MessageHandler::TaskCallback() ../../out/ReleaseTSANX64/../../runtime/vm/message_handler.cc:450 (dart+0x23056cf)
    #25 dart::MessageHandlerTask::Run() ../../out/ReleaseTSANX64/../../runtime/vm/message_handler.cc:31 (dart+0x23060f3)
    #26 dart::ThreadPool::WorkerLoop(dart::ThreadPool::Worker*) ../../out/ReleaseTSANX64/../../runtime/vm/thread_pool.cc:174 (dart+0x2516bfa)
    #27 dart::ThreadPool::Worker::Main(unsigned long) ../../out/ReleaseTSANX64/../../runtime/vm/thread_pool.cc:346 (dart+0x25174de)
    #28 dart::ThreadStart(void*) ../../out/ReleaseTSANX64/../../runtime/vm/os_thread_linux.cc:154 (dart+0x2421a5d)

  Location is heap block of size 1400 at 0x7b6800000600 allocated by main thread:
    #0 operator new(unsigned long) ../staging/llvm_build/tools/clang/stage2-bins/runtimes/runtimes-x86_64-unknown-linux-gnu-bins/compiler-rt/lib/tsan/rtl/tsan_new_delete.cpp:64 (dart+0x2012666)
    #1 dart::Heap::Init(dart::IsolateGroup*, bool, long, long) ../../out/ReleaseTSANX64/../../runtime/vm/heap/heap.cc:711 (dart+0x254fe0c)
    #2 dart::IsolateGroup::CreateHeap(bool, bool) ../../out/ReleaseTSANX64/../../runtime/vm/isolate.cc:471 (dart+0x22b73c9)
    #3 Dart_CreateIsolateGroup ../../out/ReleaseTSANX64/../../runtime/vm/dart_api_impl.cc:1392 (dart+0x2ba0317)
    #4 dart::bin::CreateIsolateGroupAndSetupHelper(bool, char const*, char const*, char const*, Dart_IsolateFlags*, void*, char**, int*) ../../out/ReleaseTSANX64/../../runtime/bin/main.cc:813 (dart+0x201dd1c)
    #5 dart::bin::RunMainIsolate(char const*, char const*, dart::bin::CommandLineOptions*) ../../out/ReleaseTSANX64/../../runtime/bin/main.cc:1022 (dart+0x201d4cc)
    #6 dart::bin::main(int, char**) ../../out/ReleaseTSANX64/../../runtime/bin/main.cc:1397 (dart+0x201e98c)
    #7 main ../../out/ReleaseTSANX64/../../runtime/bin/main.cc:1436 (dart+0x201fd9e)

  Mutex M435296034961233280 is already destroyed.

  Mutex M435014559984522576 is already destroyed.

  Thread T18 'DartWorker' (tid=908587, running) created by thread T13 at:
    #0 pthread_create ../staging/llvm_build/tools/clang/stage2-bins/runtimes/runtimes-x86_64-unknown-linux-gnu-bins/compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp:1017 (dart+0x1f8f68d)
    #1 dart::OSThread::Start(char const*, void (*)(unsigned long), unsigned long) ../../out/ReleaseTSANX64/../../runtime/vm/os_thread_linux.cc:173 (dart+0x24218fc)
    #2 dart::ThreadPool::Worker::StartThread() ../../out/ReleaseTSANX64/../../runtime/vm/thread_pool.cc:312 (dart+0x25162c2)
    #3 dart::ThreadPool::RunImpl(std::__2::unique_ptr<dart::ThreadPool::Task, std::__2::default_delete<dart::ThreadPool::Task> >) ../../out/ReleaseTSANX64/../../runtime/vm/thread_pool.cc:110 (dart+0x25162c2)
    #4 bool dart::ThreadPool::Run<dart::SpawnIsolateTask, dart::Isolate*&, std::__2::unique_ptr<dart::IsolateSpawnState, std::__2::default_delete<dart::IsolateSpawnState> > >(dart::Isolate*&, std::__2::unique_ptr<dart::IsolateSpawnState, std::__2::default_delete<dart::IsolateSpawnState> >&&) ../../out/ReleaseTSANX64/../../runtime/vm/thread_pool.h:46 (dart+0x21e568d)
    #5 dart::DN_HelperIsolate_spawnFunction(dart::Isolate*, dart::Thread*, dart::Zone*, dart::NativeArguments*) ../../out/ReleaseTSANX64/../../runtime/lib/isolate.cc:945 (dart+0x21e568d)
    #6 dart::BootstrapNatives::DN_Isolate_spawnFunction(dart::Thread*, dart::Zone*, dart::NativeArguments*) ../../out/ReleaseTSANX64/../../runtime/lib/isolate.cc:891 (dart+0x21e568d)
    #7 dart::NativeEntry::BootstrapNativeCallWrapper(_Dart_NativeArguments*, void (*)(_Dart_NativeArguments*)) ../../out/ReleaseTSANX64/../../runtime/vm/native_entry.cc:140 (dart+0x23277ae)
    #8 <null> <null> (memfd:dart-codespace (deleted)+0x27ba)
    #9 dart::DartEntry::InvokeFunction(dart::Function const&, dart::Array const&, dart::Array const&, unsigned long) ../../out/ReleaseTSANX64/../../runtime/vm/dart_entry.cc:145 (dart+0x2273ce4)
    #10 dart::DartEntry::InvokeFunction(dart::Function const&, dart::Array const&) ../../out/ReleaseTSANX64/../../runtime/vm/dart_entry.cc:37 (dart+0x2277907)
    #11 dart::DartLibraryCalls::HandleMessage(long, dart::Instance const&) ../../out/ReleaseTSANX64/../../runtime/vm/dart_entry.cc:736 (dart+0x2277907)
    #12 dart::IsolateMessageHandler::HandleMessage(std::__2::unique_ptr<dart::Message, std::__2::default_delete<dart::Message> >) ../../out/ReleaseTSANX64/../../runtime/vm/isolate.cc:1410 (dart+0x22bcfd5)
    #13 dart::MessageHandler::HandleMessages(dart::MonitorLocker*, bool, bool) ../../out/ReleaseTSANX64/../../runtime/vm/message_handler.cc:240 (dart+0x2304d1e)
    #14 dart::MessageHandler::TaskCallback() ../../out/ReleaseTSANX64/../../runtime/vm/message_handler.cc:450 (dart+0x23056cf)
    #15 dart::MessageHandlerTask::Run() ../../out/ReleaseTSANX64/../../runtime/vm/message_handler.cc:31 (dart+0x23060f3)
    #16 dart::ThreadPool::WorkerLoop(dart::ThreadPool::Worker*) ../../out/ReleaseTSANX64/../../runtime/vm/thread_pool.cc:174 (dart+0x2516bfa)
    #17 dart::ThreadPool::Worker::Main(unsigned long) ../../out/ReleaseTSANX64/../../runtime/vm/thread_pool.cc:346 (dart+0x25174de)
    #18 dart::ThreadStart(void*) ../../out/ReleaseTSANX64/../../runtime/vm/os_thread_linux.cc:154 (dart+0x2421a5d)

  Thread T20 'DartWorker' (tid=908590, running) created by thread T6 at:
    #0 pthread_create ../staging/llvm_build/tools/clang/stage2-bins/runtimes/runtimes-x86_64-unknown-linux-gnu-bins/compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp:1017 (dart+0x1f8f68d)
    #1 dart::OSThread::Start(char const*, void (*)(unsigned long), unsigned long) ../../out/ReleaseTSANX64/../../runtime/vm/os_thread_linux.cc:173 (dart+0x24218fc)
    #2 dart::ThreadPool::Worker::StartThread() ../../out/ReleaseTSANX64/../../runtime/vm/thread_pool.cc:312 (dart+0x25162c2)
    #3 dart::ThreadPool::RunImpl(std::__2::unique_ptr<dart::ThreadPool::Task, std::__2::default_delete<dart::ThreadPool::Task> >) ../../out/ReleaseTSANX64/../../runtime/vm/thread_pool.cc:110 (dart+0x25162c2)
    #4 bool dart::ThreadPool::Run<dart::SpawnIsolateTask, dart::Isolate*&, std::__2::unique_ptr<dart::IsolateSpawnState, std::__2::default_delete<dart::IsolateSpawnState> > >(dart::Isolate*&, std::__2::unique_ptr<dart::IsolateSpawnState, std::__2::default_delete<dart::IsolateSpawnState> >&&) ../../out/ReleaseTSANX64/../../runtime/vm/thread_pool.h:46 (dart+0x21e568d)
    #5 dart::DN_HelperIsolate_spawnFunction(dart::Isolate*, dart::Thread*, dart::Zone*, dart::NativeArguments*) ../../out/ReleaseTSANX64/../../runtime/lib/isolate.cc:945 (dart+0x21e568d)
    #6 dart::BootstrapNatives::DN_Isolate_spawnFunction(dart::Thread*, dart::Zone*, dart::NativeArguments*) ../../out/ReleaseTSANX64/../../runtime/lib/isolate.cc:891 (dart+0x21e568d)
    #7 dart::NativeEntry::BootstrapNativeCallWrapper(_Dart_NativeArguments*, void (*)(_Dart_NativeArguments*)) ../../out/ReleaseTSANX64/../../runtime/vm/native_entry.cc:140 (dart+0x23277ae)
    #8 <null> <null> (memfd:dart-codespace (deleted)+0x27ba)
    #9 dart::DartEntry::InvokeFunction(dart::Function const&, dart::Array const&, dart::Array const&, unsigned long) ../../out/ReleaseTSANX64/../../runtime/vm/dart_entry.cc:145 (dart+0x2273ce4)
    #10 dart::DartEntry::InvokeFunction(dart::Function const&, dart::Array const&) ../../out/ReleaseTSANX64/../../runtime/vm/dart_entry.cc:37 (dart+0x2277907)
    #11 dart::DartLibraryCalls::HandleMessage(long, dart::Instance const&) ../../out/ReleaseTSANX64/../../runtime/vm/dart_entry.cc:736 (dart+0x2277907)
    #12 dart::IsolateMessageHandler::HandleMessage(std::__2::unique_ptr<dart::Message, std::__2::default_delete<dart::Message> >) ../../out/ReleaseTSANX64/../../runtime/vm/isolate.cc:1410 (dart+0x22bcfd5)
    #13 dart::MessageHandler::HandleMessages(dart::MonitorLocker*, bool, bool) ../../out/ReleaseTSANX64/../../runtime/vm/message_handler.cc:240 (dart+0x2304d1e)
    #14 dart::MessageHandler::TaskCallback() ../../out/ReleaseTSANX64/../../runtime/vm/message_handler.cc:450 (dart+0x23056cf)
    #15 dart::MessageHandlerTask::Run() ../../out/ReleaseTSANX64/../../runtime/vm/message_handler.cc:31 (dart+0x23060f3)
    #16 dart::ThreadPool::WorkerLoop(dart::ThreadPool::Worker*) ../../out/ReleaseTSANX64/../../runtime/vm/thread_pool.cc:174 (dart+0x2516bfa)
    #17 dart::ThreadPool::Worker::Main(unsigned long) ../../out/ReleaseTSANX64/../../runtime/vm/thread_pool.cc:346 (dart+0x25174de)
    #18 dart::ThreadStart(void*) ../../out/ReleaseTSANX64/../../runtime/vm/os_thread_linux.cc:154 (dart+0x2421a5d)

SUMMARY: ThreadSanitizer: data race ../../out/ReleaseTSANX64/../../runtime/vm/heap/pages.h:271 in dart::PageSpaceController::Enable()
==================

similar failure on a different test:

[/p/d/dart-sdk1/sdk/runtime/tests/concurrency/../../../tests/corelib_2/collection_to_string_test.dart] starting ...
/usr/bin/addr2line: '/memfd:dart-codespace (deleted)': No such file
==885399==WARNING: Can't read from symbolizer at fd 10
/usr/bin/addr2line: '/memfd:dart-codespace (deleted)': No such file
==885399==WARNING: Can't read from symbolizer at fd 10
/usr/bin/addr2line: '/memfd:dart-codespace (deleted)': No such file
==885399==WARNING: Can't read from symbolizer at fd 10
/usr/bin/addr2line: '/memfd:dart-codespace (deleted)': No such file
==885399==WARNING: Can't read from symbolizer at fd 10
==885399==WARNING: Failed to use and restart external symbolizer!
/usr/bin/addr2line: '/memfd:dart-codespace (deleted)': No such file
==================
WARNING: ThreadSanitizer: data race (pid=885399)
  Write of size 1 at 0x7b68000009b8 by thread T28:
    #0 dart::PageSpaceController::Enable() ../../out/ReleaseTSANX64/../../runtime/vm/heap/pages.h:271 (dart+0x254fd24)
    #1 dart::PageSpace::SetGrowthControlState(bool) ../../out/ReleaseTSANX64/../../runtime/vm/heap/pages.h:422 (dart+0x254fd24)
    #2 dart::Heap::SetGrowthControlState(bool) ../../out/ReleaseTSANX64/../../runtime/vm/heap/heap.cc:692 (dart+0x254fd24)
    #3 dart::Heap::DisableGrowthControl() ../../out/ReleaseTSANX64/../../runtime/vm/heap/heap.h:139 (dart+0x2565203)
    #4 ForceGrowthSafepointOperationScope ../../out/ReleaseTSANX64/../../runtime/vm/heap/safepoint.cc:46 (dart+0x2565203)
    #5 dart::IsolateGroup::RunWithStoppedMutatorsCallable(dart::Callable*, dart::Callable*, bool) ../../out/ReleaseTSANX64/../../runtime/vm/isolate.cc:2867 (dart+0x22c2eee)
    #6 void dart::IsolateGroup::RunWithStoppedMutators<dart::CompileParsedFunctionHelper::Compile(dart::CompilationPipeline*)::$_0>(dart::CompileParsedFunctionHelper::Compile(dart::CompilationPipeline*)::$_0, bool) ../../out/ReleaseTSANX64/../../runtime/vm/isolate.h:648 (dart+0x2535311)
    #7 dart::CompileParsedFunctionHelper::Compile(dart::CompilationPipeline*) ../../out/ReleaseTSANX64/../../runtime/vm/compiler/jit/compiler.cc:625 (dart+0x2535311)
    #8 dart::CompileFunctionHelper(dart::CompilationPipeline*, dart::Function const&, bool, long) ../../out/ReleaseTSANX64/../../runtime/vm/compiler/jit/compiler.cc:712 (dart+0x25362b4)
    #9 dart::Compiler::CompileFunction(dart::Thread*, dart::Function const&) ../../out/ReleaseTSANX64/../../runtime/vm/compiler/jit/compiler.cc:842 (dart+0x2535b0e)
    #10 dart::Function::EnsureHasCode() const ../../out/ReleaseTSANX64/../../runtime/vm/object.cc:10026 (dart+0x238164f)
    #11 dart::DRT_HelperCompileFunction(dart::Isolate*, dart::Thread*, dart::Zone*, dart::NativeArguments) ../../out/ReleaseTSANX64/../../runtime/vm/compiler/jit/compiler.cc:223 (dart+0x2533873)
    #12 dart::DRT_CompileFunction(dart::NativeArguments) ../../out/ReleaseTSANX64/../../runtime/vm/compiler/jit/compiler.cc:209 (dart+0x2533873)
    #13 <null> <null> (memfd:dart-codespace (deleted)+0x2649)
    #14 dart::DartEntry::InvokeFunction(dart::Function const&, dart::Array const&, dart::Array const&, unsigned long) ../../out/ReleaseTSANX64/../../runtime/vm/dart_entry.cc:145 (dart+0x2273ce4)
    #15 dart::DartEntry::InvokeFunction(dart::Function const&, dart::Array const&) ../../out/ReleaseTSANX64/../../runtime/vm/dart_entry.cc:37 (dart+0x2277907)
    #16 dart::DartLibraryCalls::HandleMessage(long, dart::Instance const&) ../../out/ReleaseTSANX64/../../runtime/vm/dart_entry.cc:736 (dart+0x2277907)
    #17 dart::IsolateMessageHandler::HandleMessage(std::__2::unique_ptr<dart::Message, std::__2::default_delete<dart::Message> >) ../../out/ReleaseTSANX64/../../runtime/vm/isolate.cc:1410 (dart+0x22bcfd5)
    #18 dart::MessageHandler::HandleMessages(dart::MonitorLocker*, bool, bool) ../../out/ReleaseTSANX64/../../runtime/vm/message_handler.cc:240 (dart+0x2304d1e)
    #19 dart::MessageHandler::TaskCallback() ../../out/ReleaseTSANX64/../../runtime/vm/message_handler.cc:450 (dart+0x23056cf)
    #20 dart::MessageHandlerTask::Run() ../../out/ReleaseTSANX64/../../runtime/vm/message_handler.cc:31 (dart+0x23060f3)
    #21 dart::ThreadPool::WorkerLoop(dart::ThreadPool::Worker*) ../../out/ReleaseTSANX64/../../runtime/vm/thread_pool.cc:174 (dart+0x2516bfa)
    #22 dart::ThreadPool::Worker::Main(unsigned long) ../../out/ReleaseTSANX64/../../runtime/vm/thread_pool.cc:346 (dart+0x25174de)
    #23 dart::ThreadStart(void*) ../../out/ReleaseTSANX64/../../runtime/vm/os_thread_linux.cc:154 (dart+0x2421a5d)

  Previous read of size 1 at 0x7b68000009b8 by thread T27 (mutexes: write M539441776344176000, write M539160301367465296):
    #0 dart::PageSpaceController::is_enabled() ../../out/ReleaseTSANX64/../../runtime/vm/heap/pages.h:273 (dart+0x254c3cc)
    #1 dart::PageSpace::GrowthControlState() ../../out/ReleaseTSANX64/../../runtime/vm/heap/pages.h:428 (dart+0x254c3cc)
    #2 dart::Heap::AllocateOld(long, dart::OldPage::PageType) ../../out/ReleaseTSANX64/../../runtime/vm/heap/heap.cc:97 (dart+0x254c3cc)
    #3 dart::Object::Allocate(long, long, dart::Heap::Space, bool) ??:? (dart+0x234f5d3)
    #4 dart::Object::Allocate(long, long, dart::Heap::Space, bool) ../../out/ReleaseTSANX64/../../runtime/vm/object.cc:2641 (dart+0x234f5d3)
    #5 dart::Array::New(long, long, dart::Heap::Space) ../../out/ReleaseTSANX64/../../runtime/vm/object.cc:24182 (dart+0x2351e7d)
    #6 dart::Array::New(long, dart::Heap::Space) ../../out/ReleaseTSANX64/../../runtime/vm/object.cc:24154 (dart+0x2351e7d)
    #7 dart::Array::Grow(dart::Array const&, long, dart::Heap::Space) ../../out/ReleaseTSANX64/../../runtime/vm/object.cc:24226 (dart+0x2351e7d)
    #8 dart::ICData::Grow(long*) const ../../out/ReleaseTSANX64/../../runtime/vm/object.cc:15940 (dart+0x23a367f)
    #9 dart::ICData::AddCheckInternal(dart::GrowableArray<long> const&, dart::Function const&, long) const ../../out/ReleaseTSANX64/../../runtime/vm/object.cc:15912 (dart+0x23a326d)
    #10 dart::ICData::EnsureHasCheck(dart::GrowableArray<long> const&, dart::Function const&, long) const ../../out/ReleaseTSANX64/../../runtime/vm/object.cc:15866 (dart+0x23a2f7e)
    #11 dart::PatchableCallHandler::UpdateICDataWithTarget(dart::ICData const&, dart::Function const&) ../../out/ReleaseTSANX64/../../runtime/vm/runtime_entry.cc:2173 (dart+0x24bbccc)
    #12 dart::PatchableCallHandler::DoICDataMissJIT(dart::ICData const&, dart::Object const&, dart::Function const&) ??:? (dart+0x24bc06b)
    #13 dart::PatchableCallHandler::HandleMissJIT(dart::Object const&, dart::Code const&, dart::Function const&) ../../out/ReleaseTSANX64/../../runtime/vm/runtime_entry.cc:2379 (dart+0x24bd0f9)
    #14 dart::PatchableCallHandler::ResolveSwitchAndReturn(dart::Object const&) ../../out/ReleaseTSANX64/../../runtime/vm/runtime_entry.cc:2327 (dart+0x24bd0f9)
    #15 dart::InlineCacheMissHandler(dart::Thread*, dart::Zone*, dart::GrowableArray<dart::Instance const*> const&, dart::ICData const&, dart::NativeArguments) ../../out/ReleaseTSANX64/../../runtime/vm/runtime_entry.cc:2409 (dart+0x24bdb11)
    #16 dart::DRT_HelperInlineCacheMissHandlerTwoArgs(dart::Isolate*, dart::Thread*, dart::Zone*, dart::NativeArguments) ../../out/ReleaseTSANX64/../../runtime/vm/runtime_entry.cc:2443 (dart+0x24bdb11)
    #17 dart::DRT_InlineCacheMissHandlerTwoArgs(dart::NativeArguments) ../../out/ReleaseTSANX64/../../runtime/vm/runtime_entry.cc:2435 (dart+0x24bdb11)
    #18 <null> <null> (memfd:dart-codespace (deleted)+0x2649)
    #19 dart::DartEntry::InvokeFunction(dart::Function const&, dart::Array const&, dart::Array const&, unsigned long) ../../out/ReleaseTSANX64/../../runtime/vm/dart_entry.cc:145 (dart+0x2273ce4)
    #20 dart::DartEntry::InvokeFunction(dart::Function const&, dart::Array const&) ../../out/ReleaseTSANX64/../../runtime/vm/dart_entry.cc:37 (dart+0x2277907)
    #21 dart::DartLibraryCalls::HandleMessage(long, dart::Instance const&) ../../out/ReleaseTSANX64/../../runtime/vm/dart_entry.cc:736 (dart+0x2277907)
    #22 dart::IsolateMessageHandler::HandleMessage(std::__2::unique_ptr<dart::Message, std::__2::default_delete<dart::Message> >) ../../out/ReleaseTSANX64/../../runtime/vm/isolate.cc:1410 (dart+0x22bcfd5)
    #23 dart::MessageHandler::HandleMessages(dart::MonitorLocker*, bool, bool) ../../out/ReleaseTSANX64/../../runtime/vm/message_handler.cc:240 (dart+0x2304d1e)
    #24 dart::MessageHandler::TaskCallback() ../../out/ReleaseTSANX64/../../runtime/vm/message_handler.cc:450 (dart+0x23056cf)
    #25 dart::MessageHandlerTask::Run() ../../out/ReleaseTSANX64/../../runtime/vm/message_handler.cc:31 (dart+0x23060f3)
    #26 dart::ThreadPool::WorkerLoop(dart::ThreadPool::Worker*) ../../out/ReleaseTSANX64/../../runtime/vm/thread_pool.cc:174 (dart+0x2516bfa)
    #27 dart::ThreadPool::Worker::Main(unsigned long) ../../out/ReleaseTSANX64/../../runtime/vm/thread_pool.cc:346 (dart+0x25174de)
    #28 dart::ThreadStart(void*) ../../out/ReleaseTSANX64/../../runtime/vm/os_thread_linux.cc:154 (dart+0x2421a5d)

  Location is heap block of size 1400 at 0x7b6800000600 allocated by main thread:
    #0 operator new(unsigned long) ../staging/llvm_build/tools/clang/stage2-bins/runtimes/runtimes-x86_64-unknown-linux-gnu-bins/compiler-rt/lib/tsan/rtl/tsan_new_delete.cpp:64 (dart+0x2012666)
    #1 dart::Heap::Init(dart::IsolateGroup*, bool, long, long) ../../out/ReleaseTSANX64/../../runtime/vm/heap/heap.cc:711 (dart+0x254fe0c)
    #2 dart::IsolateGroup::CreateHeap(bool, bool) ../../out/ReleaseTSANX64/../../runtime/vm/isolate.cc:471 (dart+0x22b73c9)
    #3 Dart_CreateIsolateGroup ../../out/ReleaseTSANX64/../../runtime/vm/dart_api_impl.cc:1392 (dart+0x2ba0317)
    #4 dart::bin::CreateIsolateGroupAndSetupHelper(bool, char const*, char const*, char const*, Dart_IsolateFlags*, void*, char**, int*) ../../out/ReleaseTSANX64/../../runtime/bin/main.cc:813 (dart+0x201dd1c)
    #5 dart::bin::RunMainIsolate(char const*, char const*, dart::bin::CommandLineOptions*) ../../out/ReleaseTSANX64/../../runtime/bin/main.cc:1022 (dart+0x201d4cc)
    #6 dart::bin::main(int, char**) ../../out/ReleaseTSANX64/../../runtime/bin/main.cc:1397 (dart+0x201e98c)
    #7 main ../../out/ReleaseTSANX64/../../runtime/bin/main.cc:1436 (dart+0x201fd9e)

  Mutex M539441776344176000 is already destroyed.

  Mutex M539160301367465296 is already destroyed.

  Thread T28 'DartWorker' (tid=885508, running) created by thread T27 at:
    #0 pthread_create ../staging/llvm_build/tools/clang/stage2-bins/runtimes/runtimes-x86_64-unknown-linux-gnu-bins/compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp:1017 (dart+0x1f8f68d)
    #1 dart::OSThread::Start(char const*, void (*)(unsigned long), unsigned long) ../../out/ReleaseTSANX64/../../runtime/vm/os_thread_linux.cc:173 (dart+0x24218fc)
    #2 dart::ThreadPool::Worker::StartThread() ../../out/ReleaseTSANX64/../../runtime/vm/thread_pool.cc:312 (dart+0x25162c2)
    #3 dart::ThreadPool::RunImpl(std::__2::unique_ptr<dart::ThreadPool::Task, std::__2::default_delete<dart::ThreadPool::Task> >) ../../out/ReleaseTSANX64/../../runtime/vm/thread_pool.cc:110 (dart+0x25162c2)
    #4 bool dart::ThreadPool::Run<dart::MessageHandlerTask, dart::MessageHandler*>(dart::MessageHandler*&&) ../../out/ReleaseTSANX64/../../runtime/vm/thread_pool.h:46 (dart+0x230491a)
    #5 dart::MessageHandler::Run(dart::ThreadPool*, dart::MessageHandler::MessageStatus (*)(unsigned long), void (*)(unsigned long), unsigned long) ../../out/ReleaseTSANX64/../../runtime/vm/message_handler.cc:121 (dart+0x230491a)
    #6 dart::Isolate::Run() ../../out/ReleaseTSANX64/../../runtime/vm/isolate.cc:2356 (dart+0x22c16fc)
    #7 Dart_RunLoopAsync ../../out/ReleaseTSANX64/../../runtime/vm/dart_api_impl.cc:2046 (dart+0x2ba3b9f)
    #8 dart::SpawnIsolateTask::Run(dart::Isolate*) ../../out/ReleaseTSANX64/../../runtime/lib/isolate.cc:724 (dart+0x21e89ec)
    #9 dart::SpawnIsolateTask::RunLightweight(char const*) ../../out/ReleaseTSANX64/../../runtime/lib/isolate.cc:689 (dart+0x21e8519)
    #10 dart::SpawnIsolateTask::Run() ../../out/ReleaseTSANX64/../../runtime/lib/isolate.cc:623 (dart+0x21e821f)
    #11 dart::ThreadPool::WorkerLoop(dart::ThreadPool::Worker*) ../../out/ReleaseTSANX64/../../runtime/vm/thread_pool.cc:174 (dart+0x2516bfa)
    #12 dart::ThreadPool::Worker::Main(unsigned long) ../../out/ReleaseTSANX64/../../runtime/vm/thread_pool.cc:346 (dart+0x25174de)
    #13 dart::ThreadStart(void*) ../../out/ReleaseTSANX64/../../runtime/vm/os_thread_linux.cc:154 (dart+0x2421a5d)

  Thread T27 'DartWorker' (tid=885505, running) created by thread T26 at:
    #0 pthread_create ../staging/llvm_build/tools/clang/stage2-bins/runtimes/runtimes-x86_64-unknown-linux-gnu-bins/compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp:1017 (dart+0x1f8f68d)
    #1 dart::OSThread::Start(char const*, void (*)(unsigned long), unsigned long) ../../out/ReleaseTSANX64/../../runtime/vm/os_thread_linux.cc:173 (dart+0x24218fc)
    #2 dart::ThreadPool::Worker::StartThread() ../../out/ReleaseTSANX64/../../runtime/vm/thread_pool.cc:312 (dart+0x25162c2)
    #3 dart::ThreadPool::RunImpl(std::__2::unique_ptr<dart::ThreadPool::Task, std::__2::default_delete<dart::ThreadPool::Task> >) ../../out/ReleaseTSANX64/../../runtime/vm/thread_pool.cc:110 (dart+0x25162c2)
    #4 bool dart::ThreadPool::Run<dart::MessageHandlerTask, dart::MessageHandler*>(dart::MessageHandler*&&) ../../out/ReleaseTSANX64/../../runtime/vm/thread_pool.h:46 (dart+0x230491a)
    #5 dart::MessageHandler::Run(dart::ThreadPool*, dart::MessageHandler::MessageStatus (*)(unsigned long), void (*)(unsigned long), unsigned long) ../../out/ReleaseTSANX64/../../runtime/vm/message_handler.cc:121 (dart+0x230491a)
    #6 dart::Isolate::Run() ../../out/ReleaseTSANX64/../../runtime/vm/isolate.cc:2356 (dart+0x22c16fc)
    #7 Dart_RunLoopAsync ../../out/ReleaseTSANX64/../../runtime/vm/dart_api_impl.cc:2046 (dart+0x2ba3b9f)
    #8 dart::SpawnIsolateTask::Run(dart::Isolate*) ../../out/ReleaseTSANX64/../../runtime/lib/isolate.cc:724 (dart+0x21e89ec)
    #9 dart::SpawnIsolateTask::RunLightweight(char const*) ../../out/ReleaseTSANX64/../../runtime/lib/isolate.cc:689 (dart+0x21e8519)
    #10 dart::SpawnIsolateTask::Run() ../../out/ReleaseTSANX64/../../runtime/lib/isolate.cc:623 (dart+0x21e821f)
    #11 dart::ThreadPool::WorkerLoop(dart::ThreadPool::Worker*) ../../out/ReleaseTSANX64/../../runtime/vm/thread_pool.cc:174 (dart+0x2516bfa)
    #12 dart::ThreadPool::Worker::Main(unsigned long) ../../out/ReleaseTSANX64/../../runtime/vm/thread_pool.cc:346 (dart+0x25174de)
    #13 dart::ThreadStart(void*) ../../out/ReleaseTSANX64/../../runtime/vm/os_thread_linux.cc:154 (dart+0x2421a5d)

SUMMARY: ThreadSanitizer: data race ../../out/ReleaseTSANX64/../../runtime/vm/heap/pages.h:271 in dart::PageSpaceController::Enable()
==================

cc @rmacnak-google

@aam aam added the area-vm Use area-vm for VM related issues, including code coverage, FFI, and the AOT and JIT backends. label Mar 18, 2022
@rmacnak-google rmacnak-google added the vm-gc Related to the VM's garbage collector label Jun 29, 2022
copybara-service bot pushed a commit that referenced this issue Jun 30, 2022
Don't evaluate concurrent marking on new-space page allocation or external allocation under force-growth scopes.

TEST=ci, tsan
Bug: #49344
Bug: #48377
Bug: #48607
Change-Id: Ieff3880bd29228804419ef292a41ba4d502c2c80
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/250223
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Alexander Aprelev <aam@google.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area-vm Use area-vm for VM related issues, including code coverage, FFI, and the AOT and JIT backends. vm-gc Related to the VM's garbage collector
Projects
None yet
Development

No branches or pull requests

2 participants