Skip to content

Commit 43d02e2

Browse files
committed
src: keep main-thread Isolate attached to platform during Dispose
This works around a situation in which the V8 WASM code calls into the platform while the Isolate is being disposed. This goes against the V8 API constract for `v8::Platform`. In lieu of a proper fix, it should be okay to keep the Isolate registered; the race condition fixed by 25447d8 cannot occur for the `NodeMainInstance`’s Isolate, as it is the last one to exit in any given Node.js process. This partially reverts 25447d8. Refs: #30909 Refs: #31752 PR-URL: #31795 Reviewed-By: Denys Otrishko <[email protected]> Reviewed-By: James M Snell <[email protected]>
1 parent f0b2d87 commit 43d02e2

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

src/node_main_instance.cc

+5-1
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,12 @@ NodeMainInstance::~NodeMainInstance() {
9999
if (!owns_isolate_) {
100100
return;
101101
}
102-
platform_->UnregisterIsolate(isolate_);
102+
// TODO(addaleax): Reverse the order of these calls. The fact that we first
103+
// dispose the Isolate is a temporary workaround for
104+
// https://github.com/nodejs/node/issues/31752 -- V8 should not be posting
105+
// platform tasks during Dispose(), but it does in some WASM edge cases.
103106
isolate_->Dispose();
107+
platform_->UnregisterIsolate(isolate_);
104108
}
105109

106110
int NodeMainInstance::Run() {

0 commit comments

Comments
 (0)