Skip to content

Data race in Mac file watcher #61474

@rmacnak-google

Description

@rmacnak-google
--- Command "vm" (took 02.000948s):
DART_CONFIGURATION=ReleaseTSANARM64 xcodebuild/ReleaseTSANARM64/dart -Dtest_runner.configuration=vm-tsan-mac-release-arm64 --ignore-unrecognized-flags --packages=/Volumes/Work/s/w/ir/.dart_tool/package_config.json /Volumes/Work/s/w/ir/tests/standalone/io/file_system_watcher_test.dart

exit code:
-6

stdout:
unittest-suite-wait-for-done

stderr:
==================
WARNING: ThreadSanitizer: data race (pid=52788)
  Write of size 8 at 0x00010c40ae48 by thread T10:
    #0 dart::bin::FSEventsWatcher::Run(unsigned long) <null> (dartvm:arm64+0x100014954)
    #1 dart::bin::ThreadStart(void*) <null> (dartvm:arm64+0x10086ddcc)

  Previous read of size 8 at 0x00010c40ae48 by thread T9 (mutexes: write M0):
    #0 dart::bin::FSEventsWatcher::FSEventsWatcher() <null> (dartvm:arm64+0x1000148f0)
    #1 dart::bin::FileSystemWatcher::Init() <null> (dartvm:arm64+0x10001436c)
    #2 dart::bin::Builtin_FileSystemWatcher_InitWatcher(_Dart_NativeArguments*) <null> (dartvm:arm64+0x100014034)
    #3 dart::NativeEntry::AutoScopeNativeCallWrapper(_Dart_NativeArguments*, void (*)(_Dart_NativeArguments*)) <null> (dartvm:arm64+0x1003f31ac)
    #4 DRT_AutoScopeNativeCall <null> (dartvm:arm64+0x1003f30a4)
    #5 <null> <null> (0x00010e003a90)
    #6 dart::DartLibraryCalls::HandleMessage(long long, dart::Instance const&) <null> (dartvm:arm64+0x1003631ec)
    #7 dart::IsolateMessageHandler::HandleMessage(std::_d::unique_ptr<dart::Message, std::_d::default_delete<dart::Message>>) <null> (dartvm:arm64+0x10039ab60)
    #8 dart::MessageHandler::HandleMessages(dart::MonitorLocker*, bool, bool) <null> (dartvm:arm64+0x1003d82f4)
    #9 dart::MessageHandler::TaskCallback() <null> (dartvm:arm64+0x1003d8928)
    #10 dart::MessageHandlerTask::Run() <null> (dartvm:arm64+0x1003d8eec)
    #11 dart::ThreadPool::WorkerLoop(dart::ThreadPool::Worker*) <null> (dartvm:arm64+0x10055b8d0)
    #12 dart::ThreadPool::Worker::Main(unsigned long) <null> (dartvm:arm64+0x10055bcf4)
    #13 dart::ThreadStart(void*) <null> (dartvm:arm64+0x1004d4994)

  Location is heap block of size 136 at 0x00010c40add0 allocated by thread T9:
    #0 operator new(unsigned long) <null> (libclang_rt.tsan_osx_dynamic.dylib:arm64+0x8d4fc)
    #1 dart::bin::FileSystemWatcher::Init() <null> (dartvm:arm64+0x100014364)
    #2 dart::bin::Builtin_FileSystemWatcher_InitWatcher(_Dart_NativeArguments*) <null> (dartvm:arm64+0x100014034)
    #3 dart::NativeEntry::AutoScopeNativeCallWrapper(_Dart_NativeArguments*, void (*)(_Dart_NativeArguments*)) <null> (dartvm:arm64+0x1003f31ac)
    #4 DRT_AutoScopeNativeCall <null> (dartvm:arm64+0x1003f30a4)
    #5 <null> <null> (0x00010e003a90)
    #6 dart::DartLibraryCalls::HandleMessage(long long, dart::Instance const&) <null> (dartvm:arm64+0x1003631ec)
    #7 dart::IsolateMessageHandler::HandleMessage(std::_d::unique_ptr<dart::Message, std::_d::default_delete<dart::Message>>) <null> (dartvm:arm64+0x10039ab60)
    #8 dart::MessageHandler::HandleMessages(dart::MonitorLocker*, bool, bool) <null> (dartvm:arm64+0x1003d82f4)
    #9 dart::MessageHandler::TaskCallback() <null> (dartvm:arm64+0x1003d8928)
    #10 dart::MessageHandlerTask::Run() <null> (dartvm:arm64+0x1003d8eec)
    #11 dart::ThreadPool::WorkerLoop(dart::ThreadPool::Worker*) <null> (dartvm:arm64+0x10055b8d0)
    #12 dart::ThreadPool::Worker::Main(unsigned long) <null> (dartvm:arm64+0x10055bcf4)
    #13 dart::ThreadStart(void*) <null> (dartvm:arm64+0x1004d4994)

  Mutex M0 (0x00010c40add0) created at:
    #0 pthread_mutex_init <null> (libclang_rt.tsan_osx_dynamic.dylib:arm64+0x324e0)
    #1 dart::Mutex::Mutex() <null> (dartvm:arm64+0x10000c054)
    #2 dart::Mutex::Mutex() <null> (dartvm:arm64+0x10000c1e4)
    #3 dart::bin::FSEventsWatcher::FSEventsWatcher() <null> (dartvm:arm64+0x1000148b4)
    #4 dart::bin::FileSystemWatcher::Init() <null> (dartvm:arm64+0x10001436c)
    #5 dart::bin::Builtin_FileSystemWatcher_InitWatcher(_Dart_NativeArguments*) <null> (dartvm:arm64+0x100014034)
    #6 dart::NativeEntry::AutoScopeNativeCallWrapper(_Dart_NativeArguments*, void (*)(_Dart_NativeArguments*)) <null> (dartvm:arm64+0x1003f31ac)
    #7 DRT_AutoScopeNativeCall <null> (dartvm:arm64+0x1003f30a4)
    #8 <null> <null> (0x00010e003a90)
    #9 dart::DartLibraryCalls::HandleMessage(long long, dart::Instance const&) <null> (dartvm:arm64+0x1003631ec)
    #10 dart::IsolateMessageHandler::HandleMessage(std::_d::unique_ptr<dart::Message, std::_d::default_delete<dart::Message>>) <null> (dartvm:arm64+0x10039ab60)
    #11 dart::MessageHandler::HandleMessages(dart::MonitorLocker*, bool, bool) <null> (dartvm:arm64+0x1003d82f4)
    #12 dart::MessageHandler::TaskCallback() <null> (dartvm:arm64+0x1003d8928)
    #13 dart::MessageHandlerTask::Run() <null> (dartvm:arm64+0x1003d8eec)
    #14 dart::ThreadPool::WorkerLoop(dart::ThreadPool::Worker*) <null> (dartvm:arm64+0x10055b8d0)
    #15 dart::ThreadPool::Worker::Main(unsigned long) <null> (dartvm:arm64+0x10055bcf4)
    #16 dart::ThreadStart(void*) <null> (dartvm:arm64+0x1004d4994)

  Thread T10 (tid=590529, running) created by thread T9 at:
    #0 pthread_create <null> (libclang_rt.tsan_osx_dynamic.dylib:arm64+0x30b68)
    #1 dart::bin::Thread::TryStart(char const*, void (*)(unsigned long), unsigned long) <null> (dartvm:arm64+0x10086dd28)
    #2 dart::bin::Thread::Start(char const*, void (*)(unsigned long), unsigned long) <null> (dartvm:arm64+0x10086db68)
    #3 dart::bin::FSEventsWatcher::FSEventsWatcher() <null> (dartvm:arm64+0x1000148e0)
    #4 dart::bin::FileSystemWatcher::Init() <null> (dartvm:arm64+0x10001436c)
    #5 dart::bin::Builtin_FileSystemWatcher_InitWatcher(_Dart_NativeArguments*) <null> (dartvm:arm64+0x100014034)
    #6 dart::NativeEntry::AutoScopeNativeCallWrapper(_Dart_NativeArguments*, void (*)(_Dart_NativeArguments*)) <null> (dartvm:arm64+0x1003f31ac)
    #7 DRT_AutoScopeNativeCall <null> (dartvm:arm64+0x1003f30a4)
    #8 <null> <null> (0x00010e003a90)
    #9 dart::DartLibraryCalls::HandleMessage(long long, dart::Instance const&) <null> (dartvm:arm64+0x1003631ec)
    #10 dart::IsolateMessageHandler::HandleMessage(std::_d::unique_ptr<dart::Message, std::_d::default_delete<dart::Message>>) <null> (dartvm:arm64+0x10039ab60)
    #11 dart::MessageHandler::HandleMessages(dart::MonitorLocker*, bool, bool) <null> (dartvm:arm64+0x1003d82f4)
    #12 dart::MessageHandler::TaskCallback() <null> (dartvm:arm64+0x1003d8928)
    #13 dart::MessageHandlerTask::Run() <null> (dartvm:arm64+0x1003d8eec)
    #14 dart::ThreadPool::WorkerLoop(dart::ThreadPool::Worker*) <null> (dartvm:arm64+0x10055b8d0)
    #15 dart::ThreadPool::Worker::Main(unsigned long) <null> (dartvm:arm64+0x10055bcf4)
    #16 dart::ThreadStart(void*) <null> (dartvm:arm64+0x1004d4994)

  Thread T9 (tid=590520, running) created by main thread at:
    #0 pthread_create <null> (libclang_rt.tsan_osx_dynamic.dylib:arm64+0x30b68)
    #1 dart::OSThread::TryStart(char const*, void (*)(unsigned long), unsigned long) <null> (dartvm:arm64+0x1004d4854)
    #2 dart::OSThread::Start(char const*, void (*)(unsigned long), unsigned long) <null> (dartvm:arm64+0x1004d4690)
    #3 dart::ThreadPool::RunImpl(std::_d::unique_ptr<dart::ThreadPool::Task, std::_d::default_delete<dart::ThreadPool::Task>>) <null> (dartvm:arm64+0x10055b184)
    #4 dart::MessageHandler::Run(dart::ThreadPool*, dart::MessageHandler::MessageStatus (*)(unsigned long), void (*)(unsigned long), unsigned long) <null> (dartvm:arm64+0x1003d7db4)
    #5 Dart_RunLoop <null> (dartvm:arm64+0x1008ac678)
    #6 dart::bin::RunMainIsolate(char const*, char const*, char const*, dart::bin::CommandLineOptions*) <null> (dartvm:arm64+0x10000439c)
    #7 dart::bin::main(int, char**) <null> (dartvm:arm64+0x100005558)
    #8 main <null> (dartvm:arm64+0x100004084)

Metadata

Metadata

Assignees

No one assigned

    Labels

    area-vmUse area-vm for VM related issues, including code coverage, and the AOT and JIT backends.library-iosanitizerFound with sanitizer testing (ASAN, LSAN, MSAN, TSAN, UBSAN)

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions