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

Concurrent access to lazily created function objects with lightweight isolates #45170

Closed
mkustermann opened this issue Mar 3, 2021 · 2 comments
Assignees
Labels
area-vm Use area-vm for VM related issues, including code coverage, FFI, and the AOT and JIT backends.

Comments

@mkustermann
Copy link
Member


/==============================================================================================\
| vm/dart_2/isolates/reload_many_isolates_test is new and failed (RuntimeError, expected Pass) |
\==============================================================================================/

--- Command "vm" (took 01:32.000623s):
DART_CONFIGURATION=ReleaseTSANX64 out/ReleaseTSANX64/dart --ignore-unrecognized-flags --packages=/b/s/w/ir/.packages /b/s/w/ir/runtime/tests/vm/dart_2/isolates/reload_many_isolates_test.dart

exit code:
255

stdout:
Launching out/ReleaseTSANX64/dart --packages=.packages --snapshot-kind=kernel --snapshot=/b/s/w/itiG3vEc/IJMLQB/test.dart.0.dill /b/s/w/itiG3vEc/IJMLQB/test.dart
stdout: Info: Compiling with sound null safety
Launching out/ReleaseTSANX64/dart --packages=.packages --snapshot-kind=kernel --snapshot=/b/s/w/itiG3vEc/IJMLQB/test.dart.1.dill /b/s/w/itiG3vEc/IJMLQB/test.dart
stdout: Info: Compiling with sound null safety
Launching out/ReleaseTSANX64/dart --packages=.packages --snapshot-kind=kernel --snapshot=/b/s/w/itiG3vEc/IJMLQB/test.dart.2.dill /b/s/w/itiG3vEc/IJMLQB/test.dart
stdout: Info: Compiling with sound null safety
Launching out/ReleaseTSANX64/dart --enable-vm-service:0 --disable-dart-dev --disable-service-auth-codes --enable-isolate-groups --experimental-enable-isolate-groups-jit file:///b/s/w/itiG3vEc/IJMLQB/test.dart.0.dill
stdout: [child-0] entering ready loop
...
stderr: ==================
stderr: WARNING: ThreadSanitizer: data race (pid=27592)
stderr:   Read of size 4 at 0x7fe340a86838 by thread T18:
stderr:     #0 dart::Function::kind() const ../../out/ReleaseTSANX64/../../runtime/vm/object.h:2815 (dart+0x1ed29df)
stderr:     #1 operator() ../../out/ReleaseTSANX64/../../runtime/vm/object.cc:3503 (dart+0x1ed29df)
stderr:     #2 dart::Class::GetInvocationDispatcher(dart::String const&, dart::Array const&, dart::UntaggedFunction::Kind, bool) const ../../out/ReleaseTSANX64/../../runtime/vm/object.cc:3511 (dart+0x1ed29df)
stderr:     #3 dart::ResolveDynamicAnyArgsWithCustomLookup(dart::Zone*, dart::Class const&, dart::String const&, bool, std::__2::function<dart::FunctionPtr (dart::Class&, dart::String const&)>) ../../out/ReleaseTSANX64/../../runtime/vm/resolver.cc:65 (dart+0x2030e0b)
stderr:     #4 dart::ResolveDynamicForReceiverClassWithCustomLookup(dart::Class const&, dart::String const&, dart::ArgumentsDescriptor const&, bool, std::__2::function<dart::FunctionPtr (dart::Class&, dart::String const&)>) ../../out/ReleaseTSANX64/../../runtime/vm/resolver.cc:121 (dart+0x20308e1)
stderr:     #5 dart::Resolver::ResolveDynamicForReceiverClass(dart::Class const&, dart::String const&, dart::ArgumentsDescriptor const&, bool) ../../out/ReleaseTSANX64/../../runtime/vm/resolver.cc:147 (dart+0x2030801)
stderr:     #6 dart::Resolve(dart::Thread*, dart::Zone*, dart::GrowableArray<dart::Instance const*> const&, dart::Class const&, dart::String const&, dart::Array const&) ../../out/ReleaseTSANX64/../../runtime/vm/runtime_entry.cc:1293 (dart+0x2037dba)
stderr:     #7 dart::PatchableCallHandler::ResolveTargetFunction(dart::Object const&) ../../out/ReleaseTSANX64/../../runtime/vm/runtime_entry.cc:2084 (dart+0x2037dba)
stderr:     #8 dart::PatchableCallHandler::ResolveSwitchAndReturn(dart::Object const&) ../../out/ReleaseTSANX64/../../runtime/vm/runtime_entry.cc:2092 (dart+0x2037ff0)
stderr:     #9 dart::InlineCacheMissHandler(dart::Thread*, dart::Zone*, dart::GrowableArray<dart::Instance const*> const&, dart::ICData const&, dart::NativeArguments) ../../out/ReleaseTSANX64/../../runtime/vm/runtime_entry.cc:2202 (dart+0x20386d1)
stderr:     #10 dart::DRT_HelperInlineCacheMissHandlerOneArg(dart::Isolate*, dart::Thread*, dart::Zone*, dart::NativeArguments) ../../out/ReleaseTSANX64/../../runtime/vm/runtime_entry.cc:2219 (dart+0x20386d1)
stderr:     #11 dart::DRT_InlineCacheMissHandlerOneArg(dart::NativeArguments) ../../out/ReleaseTSANX64/../../runtime/vm/runtime_entry.cc:2213 (dart+0x20386d1)
stderr:     #12 <null> <null> (memfd:dart-codespace (deleted)+0x2162)
stderr:     #13 dart::DartEntry::InvokeFunction(dart::Function const&, dart::Array const&, dart::Array const&, unsigned long) ../../out/ReleaseTSANX64/../../runtime/vm/dart_entry.cc:147 (dart+0x1dff21b)
stderr:     #14 dart::DartEntry::InvokeFunction(dart::Function const&, dart::Array const&) ../../out/ReleaseTSANX64/../../runtime/vm/dart_entry.cc:37 (dart+0x1e03532)
stderr:     #15 dart::DartLibraryCalls::HandleMessage(dart::Object const&, dart::Instance const&) ../../out/ReleaseTSANX64/../../runtime/vm/dart_entry.cc:792 (dart+0x1e03532)
stderr:     #16 dart::IsolateMessageHandler::HandleMessage(std::__2::unique_ptr<dart::Message, std::__2::default_delete<dart::Message> >) ../../out/ReleaseTSANX64/../../runtime/vm/isolate.cc:1433 (dart+0x1e4c6d7)
stderr:     #17 dart::MessageHandler::HandleMessages(dart::MonitorLocker*, bool, bool) ../../out/ReleaseTSANX64/../../runtime/vm/message_handler.cc:233 (dart+0x1e991b0)
stderr:     #18 dart::MessageHandler::TaskCallback() ../../out/ReleaseTSANX64/../../runtime/vm/message_handler.cc:443 (dart+0x1e99bb4)
stderr:     #19 dart::MessageHandlerTask::Run() ../../out/ReleaseTSANX64/../../runtime/vm/message_handler.cc:31 (dart+0x1e9a653)
stderr:     #20 dart::ThreadPool::WorkerLoop(dart::ThreadPool::Worker*) ../../out/ReleaseTSANX64/../../runtime/vm/thread_pool.cc:158 (dart+0x209191c)
stderr:     #21 dart::ThreadPool::Worker::Main(unsigned long) ../../out/ReleaseTSANX64/../../runtime/vm/thread_pool.cc:323 (dart+0x2092305)
stderr:     #22 dart::ThreadStart(void*) ../../out/ReleaseTSANX64/../../runtime/vm/os_thread_linux.cc:153 (dart+0x1f98c22)
stderr:
stderr:   Previous write of size 8 at 0x7fe340a86838 by thread T19:
stderr:     #0 dart::Object::InitializeObject(unsigned long, long, long) ../../out/ReleaseTSANX64/../../runtime/vm/object.cc:2524 (dart+0x1ea63f7)
stderr:     #1 dart::Object::Allocate(long, long, dart::Heap::Space) ../../out/ReleaseTSANX64/../../runtime/vm/object.cc:2606 (dart+0x1ea63f7)
stderr:     #2 dart::Object::Clone(dart::Object const&, dart::Heap::Space) ../../out/ReleaseTSANX64/../../runtime/vm/object.cc:2697 (dart+0x1eccc3d)
stderr:     #3 dart::Function::CreateDynamicInvocationForwarder(dart::String const&) const ../../out/ReleaseTSANX64/../../runtime/vm/object.cc:3770 (dart+0x1ed7bbc)
stderr:     #4 dart::Function::GetDynamicInvocationForwarder(dart::String const&, bool) const ../../out/ReleaseTSANX64/../../runtime/vm/object.cc:3837 (dart+0x1ed846a)
stderr:     #5 dart::ResolveDynamicAnyArgsWithCustomLookup(dart::Zone*, dart::Class const&, dart::String const&, bool, std::__2::function<dart::FunctionPtr (dart::Class&, dart::String const&)>) ../../out/ReleaseTSANX64/../../runtime/vm/resolver.cc:81 (dart+0x2030f44)
stderr:     #6 dart::ResolveDynamicForReceiverClassWithCustomLookup(dart::Class const&, dart::String const&, dart::ArgumentsDescriptor const&, bool, std::__2::function<dart::FunctionPtr (dart::Class&, dart::String const&)>) ../../out/ReleaseTSANX64/../../runtime/vm/resolver.cc:121 (dart+0x20308e1)
stderr:     #7 dart::Resolver::ResolveDynamicForReceiverClass(dart::Class const&, dart::String const&, dart::ArgumentsDescriptor const&, bool) ../../out/ReleaseTSANX64/../../runtime/vm/resolver.cc:147 (dart+0x2030801)
stderr:     #8 dart::Resolve(dart::Thread*, dart::Zone*, dart::GrowableArray<dart::Instance const*> const&, dart::Class const&, dart::String const&, dart::Array const&) ../../out/ReleaseTSANX64/../../runtime/vm/runtime_entry.cc:1293 (dart+0x2037dba)
stderr:     #9 dart::PatchableCallHandler::ResolveTargetFunction(dart::Object const&) ../../out/ReleaseTSANX64/../../runtime/vm/runtime_entry.cc:2084 (dart+0x2037dba)
stderr:     #10 dart::PatchableCallHandler::ResolveSwitchAndReturn(dart::Object const&) ../../out/ReleaseTSANX64/../../runtime/vm/runtime_entry.cc:2092 (dart+0x2037ff0)
stderr:     #11 dart::InlineCacheMissHandler(dart::Thread*, dart::Zone*, dart::GrowableArray<dart::Instance const*> const&, dart::ICData const&, dart::NativeArguments) ../../out/ReleaseTSANX64/../../runtime/vm/runtime_entry.cc:2202 (dart+0x20386d1)
stderr:     #12 dart::DRT_HelperInlineCacheMissHandlerOneArg(dart::Isolate*, dart::Thread*, dart::Zone*, dart::NativeArguments) ../../out/ReleaseTSANX64/../../runtime/vm/runtime_entry.cc:2219 (dart+0x20386d1)
stderr:     #13 dart::DRT_InlineCacheMissHandlerOneArg(dart::NativeArguments) ../../out/ReleaseTSANX64/../../runtime/vm/runtime_entry.cc:2213 (dart+0x20386d1)
stderr:     #14 <null> <null> (memfd:dart-codespace (deleted)+0x2162)
stderr:     #15 dart::DartEntry::InvokeFunction(dart::Function const&, dart::Array const&, dart::Array const&, unsigned long) ../../out/ReleaseTSANX64/../../runtime/vm/dart_entry.cc:147 (dart+0x1dff21b)
stderr:     #16 dart::DartEntry::InvokeFunction(dart::Function const&, dart::Array const&) ../../out/ReleaseTSANX64/../../runtime/vm/dart_entry.cc:37 (dart+0x1e03532)
stderr:     #17 dart::DartLibraryCalls::HandleMessage(dart::Object const&, dart::Instance const&) ../../out/ReleaseTSANX64/../../runtime/vm/dart_entry.cc:792 (dart+0x1e03532)
stderr:     #18 dart::IsolateMessageHandler::HandleMessage(std::__2::unique_ptr<dart::Message, std::__2::default_delete<dart::Message> >) ../../out/ReleaseTSANX64/../../runtime/vm/isolate.cc:1433 (dart+0x1e4c6d7)
stderr:     #19 dart::MessageHandler::HandleMessages(dart::MonitorLocker*, bool, bool) ../../out/ReleaseTSANX64/../../runtime/vm/message_handler.cc:233 (dart+0x1e991b0)
stderr:     #20 dart::MessageHandler::TaskCallback() ../../out/ReleaseTSANX64/../../runtime/vm/message_handler.cc:443 (dart+0x1e99bb4)
stderr:     #21 dart::MessageHandlerTask::Run() ../../out/ReleaseTSANX64/../../runtime/vm/message_handler.cc:31 (dart+0x1e9a653)
stderr:     #22 dart::ThreadPool::WorkerLoop(dart::ThreadPool::Worker*) ../../out/ReleaseTSANX64/../../runtime/vm/thread_pool.cc:158 (dart+0x209191c)
stderr:     #23 dart::ThreadPool::Worker::Main(unsigned long) ../../out/ReleaseTSANX64/../../runtime/vm/thread_pool.cc:323 (dart+0x2092305)
stderr:     #24 dart::ThreadStart(void*) ../../out/ReleaseTSANX64/../../runtime/vm/os_thread_linux.cc:153 (dart+0x1f98c22)
stderr:

...

--- Re-run this test:
python tools/test.py -n dartk-tsan-linux-release-x64 vm/dart_2/isolates/reload_many_isolates_test
@mkustermann mkustermann added the area-vm Use area-vm for VM related issues, including code coverage, FFI, and the AOT and JIT backends. label Mar 3, 2021
@mkustermann
Copy link
Member Author

/cc @aam Interested in fixing this one?

@aam
Copy link
Contributor

aam commented Mar 3, 2021

Yes, looking

dart-bot pushed a commit that referenced this issue Apr 22, 2021
Issue #45170

TEST=ci

Change-Id: I8583a0df77914c4dc69a5b4565124a21a46421cf
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/196562
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Alexander Aprelev <aam@google.com>
@aam aam closed this as completed Apr 22, 2021
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.
Projects
None yet
Development

No branches or pull requests

2 participants