From 9f723d759d0e7f630e8f5db70ff7af4fa5de5593 Mon Sep 17 00:00:00 2001 From: Ryan Macnak Date: Mon, 24 Mar 2025 13:04:21 -0700 Subject: [PATCH] [vm] Fix race between MarkWorkerAsBlocked/Unblocked. TEST=vm/dart/isolates/many_isolates_blocked_at_process_run_sync_test Change-Id: I3efde84cae4a9ea25c75f2f735d5f7b74c22237d Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/417561 Commit-Queue: Ryan Macnak Reviewed-by: Alexander Aprelev --- runtime/vm/thread.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/runtime/vm/thread.cc b/runtime/vm/thread.cc index 7fb03168963..1dc55d5a049 100644 --- a/runtime/vm/thread.cc +++ b/runtime/vm/thread.cc @@ -1373,6 +1373,10 @@ void Thread::UnwindScopes(uword stack_marker) { } void Thread::HandleStolen() { + { + // To make sure we're sequenced after MarkWorkerAsBlocked. + MonitorLocker ml(isolate_group()->thread_registry()->threads_lock()); + } isolate_group()->IncreaseMutatorCount(this, /*is_nested_reenter=*/false, /*was_stolen=*/true); }