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

Flaky TSAN race reported for vm/dart/gc/splay_ephemeron_test/17 #54766

Closed
mkustermann opened this issue Jan 30, 2024 · 1 comment
Closed

Flaky TSAN race reported for vm/dart/gc/splay_ephemeron_test/17 #54766

mkustermann opened this issue Jan 30, 2024 · 1 comment
Labels
area-vm Use area-vm for VM related issues, including code coverage, FFI, and the AOT and JIT backends. P3 A lower priority bug or feature request triaged Issue has been triaged by sub team

Comments

@mkustermann
Copy link
Member

From this log:

/=========================================================================\
| vm/dart/gc/splay_ephemeron_test/17 broke (Pass -> Crash, expected Pass) |
\=========================================================================/

--- Command "vm" (took 30.000070s):
DART_CONFIGURATION=ReleaseTSANX64 out/ReleaseTSANX64/dart --verify_after_marking --sound-null-safety -Dtest_runner.configuration=vm-tsan-linux-release-x64 --ignore-unrecognized-flags --packages=/b/s/w/ir/.dart_tool/package_config.json /b/s/w/ir/runtime/tests/vm/dart/gc/splay_ephemeron_test.dart

exit code:
-6

stderr:
==================
WARNING: ThreadSanitizer: data race (pid=63434)
  Atomic read of size 8 at 0x7f5688180038 by thread T9:
    #0 unsigned long std::_LIBCPP_ABI_NAMESPACE::__cxx_atomic_load[abi:v15000]<unsigned long>(std::_LIBCPP_ABI_NAMESPACE::__cxx_atomic_base_impl<unsigned long> const*, std::_LIBCPP_ABI_NAMESPACE::memory_order) out/ReleaseTSANX64/../../third_party/libcxx/include/atomic:958:12 (dart+0x278af47)
    #1 std::_LIBCPP_ABI_NAMESPACE::__atomic_base<unsigned long, false>::load[abi:v15000](std::_LIBCPP_ABI_NAMESPACE::memory_order) const out/ReleaseTSANX64/../../third_party/libcxx/include/atomic:1588:17 (dart+0x278af47)
    #2 unsigned long dart::LoadAcquire<unsigned long>(unsigned long const*) out/ReleaseTSANX64/../../runtime/platform/atomic.h:159:56 (dart+0x278af47)
    #3 dart::Page::original_top() const out/ReleaseTSANX64/../../runtime/vm/heap/page.h:133:39 (dart+0x278af47)
    #4 dart::MarkingVisitorBase<true>::DrainMarkingStackWithPauseChecks() out/ReleaseTSANX64/../../runtime/vm/heap/marker.cc:94:29 (dart+0x278af47)
    #5 dart::ConcurrentMarkTask::Run() out/ReleaseTSANX64/../../runtime/vm/heap/marker.cc:905:17 (dart+0x278abd6)
    #6 dart::ThreadPool::WorkerLoop(dart::ThreadPool::Worker*) out/ReleaseTSANX64/../../runtime/vm/thread_pool.cc:158:15 (dart+0x274cc0e)
    #7 dart::ThreadPool::Worker::Main(unsigned long) out/ReleaseTSANX64/../../runtime/vm/thread_pool.cc:330:9 (dart+0x274d117)
    #8 dart::ThreadStart(void*) out/ReleaseTSANX64/../../runtime/vm/os_thread_linux.cc:154:5 (dart+0x266f1d3)

  Previous write of size 8 at 0x7f5688180038 by thread T7 (mutexes: write M0):
    #0 __tsan_memset ../llvm_build/tools/clang/stage2-bins/runtimes/runtimes-x86_64-unknown-linux-gnu-bins/compiler-rt/lib/tsan/rtl/tsan_interceptors_memintrinsics.cpp:35:3 (dart+0x21701e9)
    #1 dart::Page::Allocate(long, unsigned long) out/ReleaseTSANX64/../../runtime/vm/heap/page.cc:113:16 (dart+0x278de07)
    #2 dart::SemiSpace::TryAllocatePageLocked(bool) out/ReleaseTSANX64/../../runtime/vm/heap/scavenger.cc:729:16 (dart+0x279dfa1)
    #3 dart::Scavenger::TryAllocateNewTLAB(dart::Thread*, long, bool) out/ReleaseTSANX64/../../runtime/vm/heap/scavenger.cc:1669:21 (dart+0x279dfa1)
    #4 dart::Scavenger::TryAllocate(dart::Thread*, long) out/ReleaseTSANX64/../../runtime/vm/heap/scavenger.h:143:5 (dart+0x277f65b)
    #5 dart::Heap::AllocateNew(dart::Thread*, long) out/ReleaseTSANX64/../../runtime/vm/heap/heap.cc:98:23 (dart+0x277f5ad)
    #6 dart::Heap::Allocate(dart::Thread*, long, dart::Heap::Space) out/ReleaseTSANX64/../../runtime/vm/heap/heap.h:73:16 (dart+0x2579bbb)
    #7 dart::Object::Allocate(long, long, dart::Heap::Space, bool, unsigned long, unsigned long) out/ReleaseTSANX64/../../runtime/vm/object.cc:2849:25 (dart+0x259e2c8)
    #8 dart::Array::ObjectPtrType dart::Object::AllocateVariant<dart::Array>(long, dart::Heap::Space, long) out/ReleaseTSANX64/../../runtime/vm/object.h:749:9 (dart+0x260a0eb)
    #9 dart::Array::NewUninitialized(long, long, dart::Heap::Space) out/ReleaseTSANX64/../../runtime/vm/object.cc:25163:14 (dart+0x260a0eb)
    #10 dart::Array::New(long, long, dart::Heap::Space) out/ReleaseTSANX64/../../runtime/vm/object.cc:25175:12 (dart+0x260a0eb)
    #11 dart::Array::New(long, dart::Heap::Space) out/ReleaseTSANX64/../../runtime/vm/object.h:11092:12 (dart+0x26ed5d0)
    #12 dart::DRT_HelperAllocateArray(dart::Isolate*, dart::Thread*, dart::Zone*, dart::NativeArguments) out/ReleaseTSANX64/../../runtime/vm/runtime_entry.cc:375:7 (dart+0x26ed5d0)
    #13 dart::DRT_AllocateArray(dart::NativeArguments) out/ReleaseTSANX64/../../runtime/vm/runtime_entry.cc:353:1 (dart+0x26ed5d0)
    #14 <null> <null> (0x7f56a2b82b4a)
    #15 dart::DartEntry::InvokeFunction(dart::Function const&, dart::Array const&) out/ReleaseTSANX64/../../runtime/vm/dart_entry.cc:37:10 (dart+0x24e4cf1)
    #16 dart::DartLibraryCalls::HandleMessage(long, dart::Instance const&) out/ReleaseTSANX64/../../runtime/vm/dart_entry.cc:718:28 (dart+0x24e4cf1)
    #17 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:1394:15 (dart+0x251b5b0)
    #18 dart::MessageHandler::HandleMessages(dart::MonitorLocker*, bool, bool) out/ReleaseTSANX64/../../runtime/vm/message_handler.cc:238:16 (dart+0x255c00f)
    #19 dart::MessageHandler::TaskCallback() out/ReleaseTSANX64/../../runtime/vm/message_handler.cc:457:18 (dart+0x255ca00)
    #20 dart::MessageHandlerTask::Run() out/ReleaseTSANX64/../../runtime/vm/message_handler.cc:31:15 (dart+0x255d1a3)
    #21 dart::ThreadPool::WorkerLoop(dart::ThreadPool::Worker*) out/ReleaseTSANX64/../../runtime/vm/thread_pool.cc:158:15 (dart+0x274cc0e)
    #22 dart::ThreadPool::Worker::Main(unsigned long) out/ReleaseTSANX64/../../runtime/vm/thread_pool.cc:330:9 (dart+0x274d117)
    #23 dart::ThreadStart(void*) out/ReleaseTSANX64/../../runtime/vm/os_thread_linux.cc:154:5 (dart+0x266f1d3)

  Mutex M0 (0x726800000878) created at:
    #0 pthread_mutex_init ../llvm_build/tools/clang/stage2-bins/runtimes/runtimes-x86_64-unknown-linux-gnu-bins/compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp:1315:3 (dart+0x21758bf)
    #1 dart::Mutex::Mutex(char const*) out/ReleaseTSANX64/../../runtime/vm/os_thread_linux.cc:308:12 (dart+0x266f597)
    #2 dart::Scavenger::Scavenger(dart::Heap*, long) out/ReleaseTSANX64/../../runtime/vm/heap/scavenger.cc:777:12 (dart+0x279bdb6)
    #3 dart::Heap::Heap(dart::IsolateGroup*, bool, long, long) out/ReleaseTSANX64/../../runtime/vm/heap/heap.cc:49:7 (dart+0x277ebaf)
    #4 dart::Heap::Init(dart::IsolateGroup*, bool, long, long) out/ReleaseTSANX64/../../runtime/vm/heap/heap.cc:698:34 (dart+0x2782c23)
    #5 dart::IsolateGroup::CreateHeap(bool, bool) out/ReleaseTSANX64/../../runtime/vm/isolate.cc:472:3 (dart+0x2514f8f)
    #6 Dart_CreateIsolateGroup out/ReleaseTSANX64/../../runtime/vm/dart_api_impl.cc:1373:10 (dart+0x2ada99a)
    #7 dart::bin::CreateIsolateGroupAndSetupHelper(bool, char const*, char const*, char const*, Dart_IsolateFlags*, void*, char**, int*, bool) out/ReleaseTSANX64/../../runtime/bin/main_impl.cc:815:15 (dart+0x21fb6af)
    #8 dart::bin::RunMainIsolate(char const*, char const*, bool, dart::bin::CommandLineOptions*) out/ReleaseTSANX64/../../runtime/bin/main_impl.cc:1031:26 (dart+0x21faeb2)
    #9 dart::bin::main(int, char**) out/ReleaseTSANX64/../../runtime/bin/main_impl.cc:1430:9 (dart+0x21fc421)
    #10 main out/ReleaseTSANX64/../../runtime/bin/main.cc:9:3 (dart+0x21fad64)

  Thread T9 'DartWorker' (tid=63479, running) created by thread T3 at:
    #0 pthread_create ../llvm_build/tools/clang/stage2-bins/runtimes/runtimes-x86_64-unknown-linux-gnu-bins/compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp:1022:3 (dart+0x21740cb)
    #1 dart::OSThread::Start(char const*, void (*)(unsigned long), unsigned long) out/ReleaseTSANX64/../../runtime/vm/os_thread_linux.cc:173:12 (dart+0x266f093)
    #2 dart::ThreadPool::Worker::StartThread() out/ReleaseTSANX64/../../runtime/vm/thread_pool.cc:296:16 (dart+0x274c361)
    #3 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:94:17 (dart+0x274c361)
    #4 bool dart::ThreadPool::Run<dart::BackgroundCompilerTask, dart::BackgroundCompiler*>(dart::BackgroundCompiler*&&) out/ReleaseTSANX64/../../runtime/vm/thread_pool.h:46:12 (dart+0x276b4f3)
    #5 dart::BackgroundCompiler::Run() out/ReleaseTSANX64/../../runtime/vm/compiler/jit/compiler.cc:1174:30 (dart+0x276b4f3)
    #6 dart::BackgroundCompilerTask::Run() out/ReleaseTSANX64/../../runtime/vm/compiler/jit/compiler.cc:1113:46 (dart+0x276c1f3)
    #7 dart::ThreadPool::WorkerLoop(dart::ThreadPool::Worker*) out/ReleaseTSANX64/../../runtime/vm/thread_pool.cc:158:15 (dart+0x274cc0e)
    #8 dart::ThreadPool::Worker::Main(unsigned long) out/ReleaseTSANX64/../../runtime/vm/thread_pool.cc:330:9 (dart+0x274d117)
    #9 dart::ThreadStart(void*) out/ReleaseTSANX64/../../runtime/vm/os_thread_linux.cc:154:5 (dart+0x266f1d3)

  Thread T7 'DartWorker' (tid=63476, running) created by main thread at:
    #0 pthread_create ../llvm_build/tools/clang/stage2-bins/runtimes/runtimes-x86_64-unknown-linux-gnu-bins/compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp:1022:3 (dart+0x21740cb)
    #1 dart::OSThread::Start(char const*, void (*)(unsigned long), unsigned long) out/ReleaseTSANX64/../../runtime/vm/os_thread_linux.cc:173:12 (dart+0x266f093)
    #2 dart::ThreadPool::Worker::StartThread() out/ReleaseTSANX64/../../runtime/vm/thread_pool.cc:296:16 (dart+0x274c361)
    #3 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:94:17 (dart+0x274c361)
    #4 bool dart::ThreadPool::Run<dart::MessageHandlerTask, dart::MessageHandler*>(dart::MessageHandler*&&) out/ReleaseTSANX64/../../runtime/vm/thread_pool.h:46:12 (dart+0x255ba86)
    #5 dart::MessageHandler::Run(dart::ThreadPool*, dart::MessageHandler::MessageStatus (*)(unsigned long), void (*)(unsigned long), unsigned long) out/ReleaseTSANX64/../../runtime/vm/message_handler.cc:119:24 (dart+0x255ba86)
    #6 Dart_RunLoop out/ReleaseTSANX64/../../runtime/vm/dart_api_impl.cc:2038:31 (dart+0x2ade91e)
    #7 dart::bin::RunMainIsolate(char const*, char const*, bool, dart::bin::CommandLineOptions*) out/ReleaseTSANX64/../../runtime/bin/main_impl.cc:1103:12 (dart+0x21fb06d)
    #8 dart::bin::main(int, char**) out/ReleaseTSANX64/../../runtime/bin/main_impl.cc:1430:9 (dart+0x21fc421)
    #9 main out/ReleaseTSANX64/../../runtime/bin/main.cc:9:3 (dart+0x21fad64)

SUMMARY: ThreadSanitizer: data race out/ReleaseTSANX64/../../third_party/libcxx/include/atomic:958:12 in unsigned long std::_LIBCPP_ABI_NAMESPACE::__cxx_atomic_load[abi:v15000]<unsigned long>(std::_LIBCPP_ABI_NAMESPACE::__cxx_atomic_base_impl<unsigned long> const*, std::_LIBCPP_ABI_NAMESPACE::memory_order)
==================

--- Re-run this test:
python3 tools/test.py -n vm-tsan-linux-release-x64 vm/dart/gc/splay_ephemeron_test/17

/cc @rmacnak-google

@mkustermann mkustermann added the area-vm Use area-vm for VM related issues, including code coverage, FFI, and the AOT and JIT backends. label Jan 30, 2024
@a-siva a-siva added triaged Issue has been triaged by sub team P3 A lower priority bug or feature request labels Feb 1, 2024
@a-siva
Copy link
Contributor

a-siva commented Feb 1, 2024

per @rmacnak-google may not be a real race, need to figure out how to satisfy TSAN

copybara-service bot pushed a commit that referenced this issue Feb 6, 2024
TEST=tsan
Bug: #54766
Change-Id: Ic297b426977b835d11c2a98357839f1df8cfbc39
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/349711
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Siva Annamalai <asiva@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. P3 A lower priority bug or feature request triaged Issue has been triaged by sub team
Projects
None yet
Development

No branches or pull requests

3 participants