[vm, profiler] Remove race between sample processor and stub code initialization.

TEST=tsan
Bug: https://github.com/dart-lang/sdk/issues/54226
Change-Id: I54ce983acae28474c4a31200922b902dd19cf95d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/339643
Reviewed-by: Ben Konyi <bkonyi@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
This commit is contained in:
Ryan Macnak 2023-12-05 17:29:05 +00:00 committed by Commit Queue
parent ea57365feb
commit 9c0b1e06db
2 changed files with 3 additions and 1 deletions

View file

@ -342,7 +342,6 @@ char* Dart::DartInit(const Dart_InitializeParams* params) {
ForwardingCorpse::Init();
Api::Init();
NativeSymbolResolver::Init();
NOT_IN_PRODUCT(Profiler::Init());
UnwindingRecordsPlatform::Init();
Page::Init();
StoreBuffer::Init();
@ -486,6 +485,7 @@ char* Dart::DartInit(const Dart_InitializeParams* params) {
vm_isolate_group()->heap()->Verify("Dart::DartInit", kRequireMarked);
#endif
}
NOT_IN_PRODUCT(Profiler::Init());
// Allocate the "persistent" scoped handles for the predefined API
// values (such as Dart_True, Dart_False and Dart_Null).
Api::InitHandles();

View file

@ -1895,6 +1895,8 @@ void SampleBlockProcessor::ThreadMain(uword parameters) {
}
IsolateGroup::ForEach([&](IsolateGroup* group) {
if (group == Dart::vm_isolate_group()) return;
const bool kBypassSafepoint = false;
Thread::EnterIsolateGroupAsHelper(group, Thread::kSampleBlockTask,
kBypassSafepoint);