diff options
author | Anna Henningsen <anna@addaleax.net> | 2020-10-03 22:40:12 +0300 |
---|---|---|
committer | Anna Henningsen <anna@addaleax.net> | 2020-10-03 23:46:42 +0300 |
commit | f83f6830437a57bd4460a378b6296bd7cd2e1104 (patch) | |
tree | b77bfab43b6db7e11f0bf19a3097779c16471ba7 /src | |
parent | f5c7aa0c82a41d5d5a5af45f81b9517132bea849 (diff) |
src: remove invalid ToLocalChecked in EmitBeforeExit
This call can fail, we should not use `.ToLocalChecked()` here.
In the long run, we should use variants of `EmitExit()` and
`EmitBeforeExit()` that avoid this problem by properly propagating
empty `MaybeLocal`s.
Example failure:
21:07:17 not ok 2564 parallel/test-worker-terminate-source-map
21:07:17 ---
21:07:17 duration_ms: 0.385
21:07:17 severity: crashed
21:07:17 exitcode: -6
21:07:17 stack: |-
21:07:17 FATAL ERROR: v8::ToLocalChecked Empty MaybeLocal.
21:07:17 1: 0x1012f04a5 node::Abort() (.cold.1) [/Users/iojs/build/workspace/node-test-commit-osx/nodes/osx1015/out/Release/node]
21:07:17 2: 0x1000b52d9 node::Abort() [/Users/iojs/build/workspace/node-test-commit-osx/nodes/osx1015/out/Release/node]
21:07:17 3: 0x1000b543f node::OnFatalError(char const*, char const*) [/Users/iojs/build/workspace/node-test-commit-osx/nodes/osx1015/out/Release/node]
21:07:17 4: 0x1001ffd70 v8::V8::ToLocalEmpty() [/Users/iojs/build/workspace/node-test-commit-osx/nodes/osx1015/out/Release/node]
21:07:17 5: 0x1000079b8 node::EmitBeforeExit(node::Environment*) [/Users/iojs/build/workspace/node-test-commit-osx/nodes/osx1015/out/Release/node]
21:07:17 6: 0x100156fea node::worker::Worker::Run() [/Users/iojs/build/workspace/node-test-commit-osx/nodes/osx1015/out/Release/node]
21:07:17 7: 0x10015a4d2 node::worker::Worker::StartThread(v8::FunctionCallbackInfo<v8::Value> const&)::$_3::__invoke(void*) [/Users/iojs/build/workspace/node-test-commit-osx/nodes/osx1015/out/Release/node]
21:07:17 8: 0x7fff72fe7109 _pthread_start [/usr/lib/system/libsystem_pthread.dylib]
21:07:17 9: 0x7fff72fe2b8b thread_start [/usr/lib/system/libsystem_pthread.dylib]
21:07:17 ...
PR-URL: https://github.com/nodejs/node/pull/35484
Reviewed-By: Anatoli Papirovski <apapirovski@mac.com>
Reviewed-By: Richard Lau <rlau@redhat.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/api/hooks.cc | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/api/hooks.cc b/src/api/hooks.cc index e1536193f95..a719a861dbe 100644 --- a/src/api/hooks.cc +++ b/src/api/hooks.cc @@ -45,7 +45,9 @@ void EmitBeforeExit(Environment* env) { Local<Integer> exit_code; if (!exit_code_v->ToInteger(env->context()).ToLocal(&exit_code)) return; - ProcessEmit(env, "beforeExit", exit_code).ToLocalChecked(); + // TODO(addaleax): Provide variants of EmitExit() and EmitBeforeExit() that + // actually forward empty MaybeLocal<>s (and check env->can_call_into_js()). + USE(ProcessEmit(env, "beforeExit", exit_code)); } int EmitExit(Environment* env) { |