Skip to content

iso-stress-linux tsan data race canonicalizing TypeRef #50065

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

Closed
aam opened this issue Sep 27, 2022 · 2 comments
Closed

iso-stress-linux tsan data race canonicalizing TypeRef #50065

aam opened this issue Sep 27, 2022 · 2 comments
Assignees
Labels
area-vm Use area-vm for VM related issues, including code coverage, and the AOT and JIT backends. gardening

Comments

@aam
Copy link
Contributor

aam commented Sep 27, 2022

from logs

==================
WARNING: ThreadSanitizer: data race (pid=26312)
  Write of size 4 at 0x7f91cc18be90 by thread T10:
    #0 dart::TypeRef::Canonicalize(dart::Thread*, dart::ZoneGrowableHandlePtrArray<dart::AbstractType const>*) const ??:? (dart+0x23e1437)
    #1 dart::TypeArguments::Canonicalize(dart::Thread*, dart::ZoneGrowableHandlePtrArray<dart::AbstractType const>*) const ??:? (dart+0x2370e60)
    #2 dart::Type::Canonicalize(dart::Thread*, dart::ZoneGrowableHandlePtrArray<dart::AbstractType const>*) const ??:? (dart+0x23de1b9)
    #3 dart::Instance::GetType(dart::Heap::Space) const ??:? (dart+0x23b8618)
    #4 dart::BootstrapNatives::DN_Object_runtimeType(dart::Thread*, dart::Zone*, dart::NativeArguments*) ??:? (dart+0x21ee58a)
    #5 dart::NativeEntry::BootstrapNativeCallWrapper(_Dart_NativeArguments*, void (*)(_Dart_NativeArguments*)) ??:? (dart+0x2346a67)
    #6 <null> <null> (memfd:dart-code (deleted)+0x2a1a)
    #7 dart::DartEntry::InvokeFunction(dart::Function const&, dart::Array const&, dart::Array const&, unsigned long) ??:? (dart+0x22932d4)
    #8 dart::DartLibraryCalls::HandleMessage(long, dart::Instance const&) ??:? (dart+0x2296e46)
    #9 dart::IsolateMessageHandler::HandleMessage(std::__2::unique_ptr<dart::Message, std::__2::default_delete<dart::Message> >) ??:? (dart+0x22db084)
    #10 dart::MessageHandler::HandleMessages(dart::MonitorLocker*, bool, bool) ??:? (dart+0x2322125)
    #11 dart::MessageHandler::TaskCallback() ??:? (dart+0x2322bff)
    #12 dart::MessageHandlerTask::Run() message_handler.cc:? (dart+0x2323623)
    #13 dart::ThreadPool::WorkerLoop(dart::ThreadPool::Worker*) ??:? (dart+0x2548f2a)
    #14 dart::ThreadPool::Worker::Main(unsigned long) ??:? (dart+0x254980e)
    #15 dart::ThreadStart(void*) os_thread_linux.cc:? (dart+0x24502ad)

  Previous write of size 4 at 0x7f91cc18be90 by thread T6:
    #0 dart::TypeRef::Canonicalize(dart::Thread*, dart::ZoneGrowableHandlePtrArray<dart::AbstractType const>*) const ??:? (dart+0x23e1437)
    #1 dart::TypeArguments::Canonicalize(dart::Thread*, dart::ZoneGrowableHandlePtrArray<dart::AbstractType const>*) const ??:? (dart+0x2370e60)
    #2 dart::Type::Canonicalize(dart::Thread*, dart::ZoneGrowableHandlePtrArray<dart::AbstractType const>*) const ??:? (dart+0x23de1b9)
    #3 dart::Instance::GetType(dart::Heap::Space) const ??:? (dart+0x23b8618)
    #4 dart::BootstrapNatives::DN_Object_runtimeType(dart::Thread*, dart::Zone*, dart::NativeArguments*) ??:? (dart+0x21ee58a)
    #5 dart::NativeEntry::BootstrapNativeCallWrapper(_Dart_NativeArguments*, void (*)(_Dart_NativeArguments*)) ??:? (dart+0x2346a67)
    #6 <null> <null> (memfd:dart-code (deleted)+0x2a1a)
    #7 dart::DartEntry::InvokeFunction(dart::Function const&, dart::Array const&, dart::Array const&, unsigned long) ??:? (dart+0x22932d4)
    #8 dart::DartLibraryCalls::HandleMessage(long, dart::Instance const&) ??:? (dart+0x2296e46)
    #9 dart::IsolateMessageHandler::HandleMessage(std::__2::unique_ptr<dart::Message, std::__2::default_delete<dart::Message> >) ??:? (dart+0x22db084)
    #10 dart::MessageHandler::HandleMessages(dart::MonitorLocker*, bool, bool) ??:? (dart+0x2322125)
    #11 dart::MessageHandler::TaskCallback() ??:? (dart+0x2322bff)
    #12 dart::MessageHandlerTask::Run() message_handler.cc:? (dart+0x2323623)
    #13 dart::ThreadPool::WorkerLoop(dart::ThreadPool::Worker*) ??:? (dart+0x2548f2a)
    #14 dart::ThreadPool::Worker::Main(unsigned long) ??:? (dart+0x254980e)
    #15 dart::ThreadStart(void*) os_thread_linux.cc:? (dart+0x24502ad)

  Location is global '<null>' at 0x000000000000 (memfd:dart-heap (deleted)+0xbe90)

  Thread T10 'DartWorker' (tid=26323, running) created by thread T9 at:
    #0 pthread_create ??:? (dart+0x1facfcd)
    #1 dart::OSThread::Start(char const*, void (*)(unsigned long), unsigned long) ??:? (dart+0x245014c)
    #2 dart::ThreadPool::RunImpl(std::__2::unique_ptr<dart::ThreadPool::Task, std::__2::default_delete<dart::ThreadPool::Task> >) ??:? (dart+0x25485ed)
    #3 dart::MessageHandler::Run(dart::ThreadPool*, dart::MessageHandler::MessageStatus (*)(unsigned long), void (*)(unsigned long), unsigned long) ??:? (dart+0x2321d0a)
    #4 dart::Isolate::Run() ??:? (dart+0x22df87c)
    #5 Dart_RunLoopAsync ??:? (dart+0x2c23358)
    #6 dart::SpawnIsolateTask::Run(dart::Isolate*) isolate.cc:? (dart+0x21fe6bf)
    #7 dart::SpawnIsolateTask::RunLightweight(char const*) isolate.cc:? (dart+0x21fe1e9)
    #8 dart::SpawnIsolateTask::Run() isolate.cc:? (dart+0x21fdeef)
    #9 dart::ThreadPool::WorkerLoop(dart::ThreadPool::Worker*) ??:? (dart+0x2548f2a)
    #10 dart::ThreadPool::Worker::Main(unsigned long) ??:? (dart+0x254980e)
    #11 dart::ThreadStart(void*) os_thread_linux.cc:? (dart+0x24502ad)

  Thread T6 'DartWorker' (tid=26319, running) created by main thread at:
    #0 pthread_create ??:? (dart+0x1facfcd)
    #1 dart::OSThread::Start(char const*, void (*)(unsigned long), unsigned long) ??:? (dart+0x245014c)
    #2 dart::ThreadPool::RunImpl(std::__2::unique_ptr<dart::ThreadPool::Task, std::__2::default_delete<dart::ThreadPool::Task> >) ??:? (dart+0x25485ed)
    #3 dart::MessageHandler::Run(dart::ThreadPool*, dart::MessageHandler::MessageStatus (*)(unsigned long), void (*)(unsigned long), unsigned long) ??:? (dart+0x2321d0a)
    #4 Dart_RunLoop ??:? (dart+0x2c22a3c)
    #5 dart::bin::RunMainIsolate(char const*, char const*, dart::bin::CommandLineOptions*) ??:? (dart+0x2035ede)
    #6 dart::bin::main(int, char**) ??:? (dart+0x20371f9)
    #7 main ??:? (dart+0x203864e)

SUMMARY: ThreadSanitizer: data race ??:? in dart::TypeRef::Canonicalize(dart::Thread*, dart::ZoneGrowableHandlePtrArray<dart::AbstractType const>*) const
@aam aam added area-vm Use area-vm for VM related issues, including code coverage, and the AOT and JIT backends. gardening labels Sep 27, 2022
@alexmarkov
Copy link
Contributor

Now happens consistently:

WARNING: ThreadSanitizer: data race (pid=9832)
  Write of size 4 at 0x7efc2608d370 by thread T14:
    #0 dart::TypeRef::Canonicalize(dart::Thread*, dart::ZoneGrowableHandlePtrArray<dart::AbstractType const>*) const ??:? (dart+0x23e16b7)
    #1 dart::TypeArguments::Canonicalize(dart::Thread*, dart::ZoneGrowableHandlePtrArray<dart::AbstractType const>*) const ??:? (dart+0x23710e0)
    #2 dart::Type::Canonicalize(dart::Thread*, dart::ZoneGrowableHandlePtrArray<dart::AbstractType const>*) const ??:? (dart+0x23de439)
    #3 dart::Instance::GetType(dart::Heap::Space) const ??:? (dart+0x23b8898)
    #4 dart::BootstrapNatives::DN_Object_runtimeType(dart::Thread*, dart::Zone*, dart::NativeArguments*) ??:? (dart+0x21ee80a)
    #5 dart::NativeEntry::BootstrapNativeCallWrapper(_Dart_NativeArguments*, void (*)(_Dart_NativeArguments*)) ??:? (dart+0x2346ce7)
    #6 <null> <null> (memfd:dart-code (deleted)+0x2a1a)
    #7 dart::DartEntry::InvokeFunction(dart::Function const&, dart::Array const&, dart::Array const&, unsigned long) ??:? (dart+0x2293554)
    #8 dart::DartLibraryCalls::HandleMessage(long, dart::Instance const&) ??:? (dart+0x22970c6)
    #9 dart::IsolateMessageHandler::HandleMessage(std::__2::unique_ptr<dart::Message, std::__2::default_delete<dart::Message> >) ??:? (dart+0x22db304)
    #10 dart::MessageHandler::HandleMessages(dart::MonitorLocker*, bool, bool) ??:? (dart+0x23223a5)
    #11 dart::MessageHandler::TaskCallback() ??:? (dart+0x2322e7f)
    #12 dart::MessageHandlerTask::Run() message_handler.cc:? (dart+0x23238a3)
    #13 dart::ThreadPool::WorkerLoop(dart::ThreadPool::Worker*) ??:? (dart+0x25491aa)
    #14 dart::ThreadPool::Worker::Main(unsigned long) ??:? (dart+0x2549a8e)
    #15 dart::ThreadStart(void*) os_thread_linux.cc:? (dart+0x245052d)

  Previous write of size 4 at 0x7efc2608d370 by thread T13:
    #0 dart::TypeRef::Canonicalize(dart::Thread*, dart::ZoneGrowableHandlePtrArray<dart::AbstractType const>*) const ??:? (dart+0x23e16b7)
    #1 dart::TypeArguments::Canonicalize(dart::Thread*, dart::ZoneGrowableHandlePtrArray<dart::AbstractType const>*) const ??:? (dart+0x23710e0)
    #2 dart::Type::Canonicalize(dart::Thread*, dart::ZoneGrowableHandlePtrArray<dart::AbstractType const>*) const ??:? (dart+0x23de439)
    #3 dart::Instance::GetType(dart::Heap::Space) const ??:? (dart+0x23b8898)
    #4 dart::BootstrapNatives::DN_Object_runtimeType(dart::Thread*, dart::Zone*, dart::NativeArguments*) ??:? (dart+0x21ee80a)
    #5 dart::NativeEntry::BootstrapNativeCallWrapper(_Dart_NativeArguments*, void (*)(_Dart_NativeArguments*)) ??:? (dart+0x2346ce7)
    #6 <null> <null> (memfd:dart-code (deleted)+0x2a1a)
    #7 dart::DartEntry::InvokeFunction(dart::Function const&, dart::Array const&, dart::Array const&, unsigned long) ??:? (dart+0x2293554)
    #8 dart::DartLibraryCalls::HandleMessage(long, dart::Instance const&) ??:? (dart+0x22970c6)
    #9 dart::IsolateMessageHandler::HandleMessage(std::__2::unique_ptr<dart::Message, std::__2::default_delete<dart::Message> >) ??:? (dart+0x22db304)
    #10 dart::MessageHandler::HandleMessages(dart::MonitorLocker*, bool, bool) ??:? (dart+0x23223a5)
    #11 dart::MessageHandler::TaskCallback() ??:? (dart+0x2322e7f)
    #12 dart::MessageHandlerTask::Run() message_handler.cc:? (dart+0x23238a3)
    #13 dart::ThreadPool::WorkerLoop(dart::ThreadPool::Worker*) ??:? (dart+0x25491aa)
    #14 dart::ThreadPool::Worker::Main(unsigned long) ??:? (dart+0x2549a8e)
    #15 dart::ThreadStart(void*) os_thread_linux.cc:? (dart+0x245052d)

@alexmarkov alexmarkov self-assigned this Sep 28, 2022
@alexmarkov
Copy link
Contributor

Still failing on iso-stress bot:

WARNING: ThreadSanitizer: data race (pid=31993)
  Read of size 4 at 0x7f76c6cb4cb0 by thread T6:
    #0 dart::ClassFinalizer::FinalizeType(dart::AbstractType const&, dart::ClassFinalizer::FinalizationKind, dart::ZoneGrowableHandlePtrArray<dart::AbstractType const>*) ??:? (dart+0x2274234)
    #1 dart::FunctionType::TypeParameterAt(long, dart::Nullability) const ??:? (dart+0x239a412)
    #2 dart::Function::TypeParameterAt(long, dart::Nullability) const ??:? (dart+0x239b3dd)
    #3 dart::kernel::ActiveTypeParametersScope::ActiveTypeParametersScope(dart::kernel::ActiveClass*, dart::Function const&, dart::FunctionType const*, dart::Zone*) ??:? (dart+0x2bcc65b)
    #4 dart::kernel::ScopeBuilder::BuildScopes() ??:? (dart+0x2bd3d5b)
    #5 dart::ParsedFunction::EnsureKernelScopes() ??:? (dart+0x24538b0)
    #6 dart::kernel::StreamingFlowGraphBuilder::ParseKernelASTFunction() ??:? (dart+0x2b744f5)
    #7 dart::kernel::StreamingFlowGraphBuilder::BuildGraph() ??:? (dart+0x2b74229)
    #8 dart::kernel::FlowGraphBuilder::BuildGraph() ??:? (dart+0x2b96e23)
    #9 dart::DartCompilationPipeline::BuildFlowGraph(dart::Zone*, dart::ParsedFunction*, dart::ZoneGrowableArray<dart::ICData const*>*, long, bool) ??:? (dart+0x256750b)
    #10 dart::CompileParsedFunctionHelper::Compile(dart::CompilationPipeline*) ??:? (dart+0x256903f)
    #11 dart::CompileFunctionHelper(dart::CompilationPipeline*, dart::Function const&, bool, long) compiler.cc:? (dart+0x2569ff1)
    #12 dart::Compiler::CompileFunction(dart::Thread*, dart::Function const&) ??:? (dart+0x2569a51)
    #13 dart::Function::EnsureHasCode() const ??:? (dart+0x23a66bf)
    #14 dart::DRT_CompileFunction(dart::NativeArguments) ??:? (dart+0x2567b83)
    #15 <null> <null> (memfd:dart-code (deleted)+0x28a9)
    #16 dart::DartEntry::InvokeFunction(dart::Function const&, dart::Array const&, dart::Array const&, unsigned long) ??:? (dart+0x2295214)
    #17 dart::DartLibraryCalls::HandleMessage(long, dart::Instance const&) ??:? (dart+0x2298d86)
    #18 dart::IsolateMessageHandler::HandleMessage(std::__2::unique_ptr<dart::Message, std::__2::default_delete<dart::Message> >) ??:? (dart+0x22dcfc4)
    #19 dart::MessageHandler::HandleMessages(dart::MonitorLocker*, bool, bool) ??:? (dart+0x2324065)
    #20 dart::MessageHandler::TaskCallback() ??:? (dart+0x2324b3f)
    #21 dart::MessageHandlerTask::Run() message_handler.cc:? (dart+0x2325563)
    #22 dart::ThreadPool::WorkerLoop(dart::ThreadPool::Worker*) ??:? (dart+0x254aeba)
    #23 dart::ThreadPool::Worker::Main(unsigned long) ??:? (dart+0x254b79e)
    #24 dart::ThreadStart(void*) os_thread_linux.cc:? (dart+0x245223d)

  Previous write of size 4 at 0x7f76c6cb4cb0 by thread T10 (mutexes: write M0):
    #0 dart::TypeRef::Canonicalize(dart::Thread*, dart::ZoneGrowableHandlePtrArray<dart::AbstractType const>*) const ??:? (dart+0x23e33ad)
    #1 dart::TypeParameter::Canonicalize(dart::Thread*, dart::ZoneGrowableHandlePtrArray<dart::AbstractType const>*) const ??:? (dart+0x23e4930)
    #2 dart::TypeParameter::ToNullability(dart::Nullability, dart::Heap::Space) const ??:? (dart+0x23dae1b)
    #3 dart::kernel::TypeTranslator::BuildTypeParameterType() ??:? (dart+0x2bcf058)
    #4 dart::kernel::TypeTranslator::BuildTypeInternal() ??:? (dart+0x2bcd06d)
    #5 dart::kernel::TypeTranslator::BuildType() ??:? (dart+0x2bc518a)
    #6 dart::kernel::StreamingFlowGraphBuilder::BuildTypeLiteral(dart::TokenPosition*) ??:? (dart+0x2b7b9f9)
    #7 dart::kernel::StreamingFlowGraphBuilder::BuildExpression(dart::TokenPosition*, bool) ??:? (dart+0x2b6f3c1)
    #8 dart::kernel::StreamingFlowGraphBuilder::BuildArgumentsFromActualArguments(dart::Array*) ??:? (dart+0x2b85ddb)
    #9 dart::kernel::StreamingFlowGraphBuilder::BuildStaticInvocation(dart::TokenPosition*) ??:? (dart+0x2b79f9b)
    #10 dart::kernel::StreamingFlowGraphBuilder::BuildExpression(dart::TokenPosition*, bool) ??:? (dart+0x2b6f27f)
    #11 dart::kernel::StreamingFlowGraphBuilder::BuildReturnStatement(dart::TokenPosition*) ??:? (dart+0x2b808d0)
    #12 dart::kernel::StreamingFlowGraphBuilder::BuildStatement(dart::TokenPosition*) ??:? (dart+0x2b71b81)
    #13 dart::kernel::StreamingFlowGraphBuilder::BuildFunctionBody(dart::Function const&, dart::LocalVariable*, bool) ??:? (dart+0x2b731a5)
    #14 dart::kernel::StreamingFlowGraphBuilder::BuildGraphOfFunction(bool) ??:? (dart+0x2b73d58)
    #15 dart::kernel::StreamingFlowGraphBuilder::BuildGraph() ??:? (dart+0x2b742ed)
    #16 dart::kernel::FlowGraphBuilder::BuildGraph() ??:? (dart+0x2b96e23)
    #17 dart::DartCompilationPipeline::BuildFlowGraph(dart::Zone*, dart::ParsedFunction*, dart::ZoneGrowableArray<dart::ICData const*>*, long, bool) ??:? (dart+0x256750b)
    #18 dart::CompileParsedFunctionHelper::Compile(dart::CompilationPipeline*) ??:? (dart+0x256903f)
    #19 dart::CompileFunctionHelper(dart::CompilationPipeline*, dart::Function const&, bool, long) compiler.cc:? (dart+0x2569ff1)
    #20 dart::Compiler::CompileFunction(dart::Thread*, dart::Function const&) ??:? (dart+0x2569a51)
    #21 dart::Function::EnsureHasCode() const ??:? (dart+0x23a66bf)
    #22 dart::DRT_CompileFunction(dart::NativeArguments) ??:? (dart+0x2567b83)
    #23 <null> <null> (memfd:dart-code (deleted)+0x28a9)
    #24 dart::DartEntry::InvokeFunction(dart::Function const&, dart::Array const&, dart::Array const&, unsigned long) ??:? (dart+0x2295214)
    #25 dart::DartLibraryCalls::HandleMessage(long, dart::Instance const&) ??:? (dart+0x2298d86)
    #26 dart::IsolateMessageHandler::HandleMessage(std::__2::unique_ptr<dart::Message, std::__2::default_delete<dart::Message> >) ??:? (dart+0x22dcfc4)
    #27 dart::MessageHandler::HandleMessages(dart::MonitorLocker*, bool, bool) ??:? (dart+0x2324065)
    #28 dart::MessageHandler::TaskCallback() ??:? (dart+0x2324b3f)
    #29 dart::MessageHandlerTask::Run() message_handler.cc:? (dart+0x2325563)
    #30 dart::ThreadPool::WorkerLoop(dart::ThreadPool::Worker*) ??:? (dart+0x254aeba)
    #31 dart::ThreadPool::Worker::Main(unsigned long) ??:? (dart+0x254b79e)
    #32 dart::ThreadStart(void*) os_thread_linux.cc:? (dart+0x245223d)

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, and the AOT and JIT backends. gardening
Projects
None yet
Development

No branches or pull requests

2 participants