fix: crash in gin::wrappable::secondweakcallback (#45379)

Co-authored-by: deepak1556 <hop2deep@gmail.com>
This commit is contained in:
Keeley Hammond 2025-01-30 01:35:42 -08:00 committed by GitHub
commit f360dadbb4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
22 changed files with 340 additions and 116 deletions

View file

@ -133,11 +133,16 @@ v8::Isolate* JavascriptEnvironment::GetIsolate() {
void JavascriptEnvironment::CreateMicrotasksRunner() {
DCHECK(!microtasks_runner_);
microtasks_runner_ = std::make_unique<MicrotasksRunner>(isolate());
isolate_holder_.WillCreateMicrotasksRunner();
base::CurrentThread::Get()->AddTaskObserver(microtasks_runner_.get());
}
void JavascriptEnvironment::DestroyMicrotasksRunner() {
DCHECK(microtasks_runner_);
// Should be called before running gin_helper::CleanedUpAtExit::DoCleanup.
// This helps to signal wrappable finalizer callbacks to not act on freed
// parameters.
isolate_holder_.WillDestroyMicrotasksRunner();
{
v8::HandleScope scope(isolate_);
gin_helper::CleanedUpAtExit::DoCleanup();