From 4c431039bb3f27836adfcfbb11e04e798b1217cf Mon Sep 17 00:00:00 2001 From: Alexander Aprelev Date: Mon, 15 Sep 2025 15:17:01 -0700 Subject: [PATCH] [vm/tags] Ensure current tag is set to default only if it was not previously set. The isolate creation callback might have set up current tag, so we dont' want to override it. Fixes https://github.com/dart-lang/sdk/issues/61505 TEST=flutter ci Change-Id: I18e7f60a9c41e96c9754476db17ad97d3d668949 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/449604 Reviewed-by: Ryan Macnak Commit-Queue: Alexander Aprelev --- runtime/vm/thread.cc | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/runtime/vm/thread.cc b/runtime/vm/thread.cc index 0186b387d9a..3ddf4b9fc17 100644 --- a/runtime/vm/thread.cc +++ b/runtime/vm/thread.cc @@ -437,11 +437,14 @@ void Thread::EnterIsolate(Isolate* isolate) { thread->ExitSafepoint(); } - StackZone zone(thread); - HANDLESCOPE(thread); - if (group->tag_table() != GrowableObjectArray::null()) { - const UserTag& default_tag = UserTag::Handle(UserTag::DefaultTag(thread)); - thread->set_current_tag(default_tag); + if (thread->current_tag() == UserTag::null()) { + // Set up current tag if it was not set up by the callback. + StackZone zone(thread); + HANDLESCOPE(thread); + if (group->tag_table() != GrowableObjectArray::null()) { + const UserTag& default_tag = UserTag::Handle(UserTag::DefaultTag(thread)); + thread->set_current_tag(default_tag); + } } ASSERT(!thread->IsAtSafepoint());