summaryrefslogtreecommitdiff
path: root/src/node_main_instance.cc
diff options
context:
space:
mode:
authorAnna Henningsen <anna@addaleax.net>2020-02-14 16:28:58 +0100
committerAnna Henningsen <anna@addaleax.net>2020-02-14 17:15:18 +0100
commite460f8cf43863a5a8d73273ce311135ad3245699 (patch)
tree52491841476289af24ab350bd1fafe0aa8f12fdb /src/node_main_instance.cc
parent75311dbc2f5fbd1c81dbab94e1372b55e0dbb1ac (diff)
downloadnode-new-e460f8cf43863a5a8d73273ce311135ad3245699.tar.gz
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 25447d82d cannot occur for the `NodeMainInstance`’s Isolate, as it is the last one to exit in any given Node.js process. This partially reverts 25447d82d. Refs: https://github.com/nodejs/node/pull/30909 Refs: https://github.com/nodejs/node/issues/31752 PR-URL: https://github.com/nodejs/node/pull/31795 Reviewed-By: Denys Otrishko <shishugi@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
Diffstat (limited to 'src/node_main_instance.cc')
-rw-r--r--src/node_main_instance.cc6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/node_main_instance.cc b/src/node_main_instance.cc
index ad6966cf4f..d53eaa7329 100644
--- a/src/node_main_instance.cc
+++ b/src/node_main_instance.cc
@@ -102,8 +102,12 @@ NodeMainInstance::~NodeMainInstance() {
if (!owns_isolate_) {
return;
}
- platform_->UnregisterIsolate(isolate_);
+ // TODO(addaleax): Reverse the order of these calls. The fact that we first
+ // dispose the Isolate is a temporary workaround for
+ // https://github.com/nodejs/node/issues/31752 -- V8 should not be posting
+ // platform tasks during Dispose(), but it does in some WASM edge cases.
isolate_->Dispose();
+ platform_->UnregisterIsolate(isolate_);
}
int NodeMainInstance::Run() {