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

This commit is contained in:
Robo 2025-01-30 03:20:37 +09:00 committed by GitHub
parent 8cf2e46c1f
commit ecd5d0a3a4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
19 changed files with 233 additions and 6 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();