Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Segmentation fault when using fly server (node version >=10.4) #101

Closed
nick-potts opened this issue Jul 3, 2018 · 18 comments
Closed

Segmentation fault when using fly server (node version >=10.4) #101

nick-potts opened this issue Jul 3, 2018 · 18 comments

Comments

@nick-potts
Copy link

Just using the example code from the docs.

Generating Webpack config...
Compiling app w/ options: { watch: true, uglify: false }
new runtime, app: /Users/nick.potts/Documents/worker-performance-examples/time 
PID 4992 received SIGSEGV for address: 0x73
0   segfault-handler.node               0x00000001083603e8 _ZL16segfault_handleriP9__siginfoPv + 312
1   libsystem_platform.dylib            0x00007fff5ae17f5a _sigtramp + 26
2   ???                                 0x00007ffeefbfd130 0x0 + 140732920746288
Segmentation fault: 11
@mrkurt
Copy link
Member

mrkurt commented Jul 3, 2018

Which OS and node version was this? If you can try a new node version, 10.4 10.3 or 8.9 (I think) might help.

@nick-potts nick-potts changed the title Segmentation fault when using fly server Segmentation fault when using fly server Jul 3, 2018
@nick-potts
Copy link
Author

macOS 10.13.5, node/10.4.1

@jeromegn
Copy link
Member

jeromegn commented Jul 3, 2018 via email

@nick-potts
Copy link
Author

Yep, that's my conclusion too.

/Users/nick.potts/fly/src/v8env.ts:29
  v8EnvSnapshot = ivm.Isolate.createSnapshot([{
Error: Cannot find module "whatwg-streams/reference-implementation/lib/readable-stream"

@jeromegn
Copy link
Member

jeromegn commented Jul 3, 2018

@laverdet any ideas?

@jeromegn
Copy link
Member

jeromegn commented Jul 3, 2018

@nick-potts you need to git submodule init and git submodule update

@nick-potts
Copy link
Author

That's fixed the error above, now I'm back to the seg fault. I've joined the slack channel.

@laverdet
Copy link

laverdet commented Jul 3, 2018

The segfault-handler module on npm (in use by fly) actually causes segfaults. I submitted a patch to the author in April and haven't heard anything about it: ddopson/node-segfault-handler#49

@laverdet
Copy link

laverdet commented Jul 3, 2018

Correction: I didn't submit a patch but the problem is clear :)

@mrkurt
Copy link
Member

mrkurt commented Jul 3, 2018

@nick-potts did you happen to nuke node_modules and reinstall from npm after you downgraded to 10.3? I just tried a fresh 10.3 install + fresh npm install to double check and it works here.

@laverdet
Copy link

laverdet commented Jul 3, 2018

Further correction: now that I remember the issue with that package it's not that segfault-handler causes segfaults, it just makes them harder to track. Could you please drop that package and post the resulting stack trace?

@nick-potts
Copy link
Author

10.3 + npm rebuild + restart of the dev machine fixed it for me. Removing segfault-handler just resulted in the stack trace to not be logged, but I'm not familiar with the code base.

@mrkurt mrkurt added the bug label Jul 3, 2018
@mrkurt mrkurt changed the title Segmentation fault when using fly server Segmentation fault when using fly server (node version >=10.4) Jul 3, 2018
@mrkurt
Copy link
Member

mrkurt commented Jul 6, 2018

@laverdet I removed the segfault handler, installed isolated-vm from master, and I just get sh: line 1: 60008 Segmentation fault: 11 node ./lib/cmd/index.js server

Here's what lnode give me. Anything else I can check? And do you want an issue in your repo?

new runtime, app: /Users/kurt/code/fly.io/core/examples/getting-started
Process 60041 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x73)
    frame #0: 0x000039f84c793d28
->  0x39f84c793d28: testb  $0x1, 0xf(%r14)
    0x39f84c793d2d: jne    0x39f84c793d8b
    0x39f84c793d33: movq   %rcx, 0x2f(%rdi)
    0x39f84c793d37: movq   %rcx, %r14
Target 0: (node) stopped.
(llnode) bt
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x73)
  * frame #0: 0x000039f84c793d28
    frame #1: 0x000039f84c7913f5
    frame #2: 0x000039f84c78ae61
    frame #3: 0x0000000100518bc7 node`v8::internal::(anonymous namespace)::Invoke(v8::internal::Isolate*, bool, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, int, v8::internal::Handle<v8::internal::Object>*, v8::internal::Handle<v8::internal::Object>, v8::internal::Execution::MessageHandling, v8::internal::Execution::Target) + 999
    frame #4: 0x0000000100518746 node`v8::internal::Execution::Call(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, int, v8::internal::Handle<v8::internal::Object>*) + 166
    frame #5: 0x00000001001b931c node`v8::Function::Call(v8::Local<v8::Context>, v8::Local<v8::Value>, int, v8::Local<v8::Value>*) + 460
    frame #6: 0x0000000103456d6f isolated_vm.node`v8::Local<v8::Value> ivm::RunWithTimeout<ivm::ApplyRunner::Phase2()::'lambda'()>(unsigned int, ivm::ApplyRunner::Phase2()::'lambda'()&&) [inlined] ivm::ApplyRunner::Phase2(this=<unavailable>)::'lambda'()::operator()() const at reference_handle.cc:436 [opt]
    frame #7: 0x0000000103456d3d isolated_vm.node`v8::Local<v8::Value> ivm::RunWithTimeout<ivm::ApplyRunner::Phase2(timeout_ms=0, fn=<unavailable>)::'lambda'()>(unsigned int, ivm::ApplyRunner::Phase2()::'lambda'()&&) at run_with_timeout.h:148 [opt]
    frame #8: 0x0000000103455f28 isolated_vm.node`ivm::ApplyRunner::Phase2(this=0x00007ffeefbfadd8) at reference_handle.cc:433 [opt]
    frame #9: 0x000000010342648a isolated_vm.node`ivm::ThreePhaseTask::RunSync(ivm::IsolateHolder&, bool) [inlined] ivm::ThreePhaseTask::RunSync(ivm::IsolateHolder&, bool)::$_2::operator()() const at three_phase_task.cc:240 [opt]
    frame #10: 0x0000000103426484 isolated_vm.node`ivm::ThreePhaseTask::RunSync(ivm::IsolateHolder&, bool) at functor_runners.h:39 [opt]
    frame #11: 0x0000000103426469 isolated_vm.node`ivm::ThreePhaseTask::RunSync(this=0x00007ffeefbfadd8, second_isolate=0x00000001026649d8, allow_async=<unavailable>) at three_phase_task.cc:238 [opt]
    frame #12: 0x000000010345b0b8 isolated_vm.node`v8::Local<v8::Value> ivm::ThreePhaseTask::Run<0, ivm::ApplyRunner, ivm::ReferenceHandle&, v8::MaybeLocal<v8::Value>&, v8::MaybeLocal<v8::Array>&, v8::MaybeLocal<v8::Object>&, std::__1::shared_ptr<ivm::RemoteHandle<v8::Context> >&, std::__1::shared_ptr<ivm::RemoteHandle<v8::Value> >&>(second_isolate=0x00000001026649d8, args=<unavailable>, args=<unavailable>, args=<unavailable>, args=<unavailable>, args=<unavailable>, args=std::__1::shared_ptr<ivm::RemoteHandle<v8::Value> >::element_type @ 0x0000000103108db8 strong=2 weak=1) at three_phase_task.h:129 [opt]
    frame #13: 0x000000010345b1e7 isolated_vm.node`void ivm::FunctorRunners::RunCallback<void ivm::ClassHandle::ParameterizeEntry<-1, v8::Local<v8::Value> (*)(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>), &(v8::Local<v8::Value> ivm::ClassHandle::MethodCast<v8::Local<v8::Value> (ivm::ReferenceHandle::*)(v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>)>::Invoke<&(v8::Local<v8::Value> ivm::ReferenceHandle::Apply<0>(v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>))>(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>))>(v8::FunctionCallbackInfo<v8::Value> const&)::'lambda'(), v8::FunctionCallbackInfo<v8::Value> const>(v8::FunctionCallbackInfo<v8::Value> const&, void ivm::ClassHandle::ParameterizeEntry<-1, v8::Local<v8::Value> (*)(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>), &(v8::Local<v8::Value> ivm::ClassHandle::MethodCast<v8::Local<v8::Value> (ivm::ReferenceHandle::*)(v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>)>::Invoke<&(v8::Local<v8::Value> ivm::ReferenceHandle::Apply<0>(v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>))>(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>))>(v8::FunctionCallbackInfo<v8::Value> const&)::'lambda'()) [inlined] v8::Local<v8::Value> ivm::ReferenceHandle::Apply<0>(recv_handle=(val_ = 0x0000000104800068), maybe_arguments=(val_ = 0x0000000000000000), maybe_options=(val_ = 0x0000000000000000)) at reference_handle.cc:490 [opt]
    frame #14: 0x000000010345b1c0 isolated_vm.node`void ivm::FunctorRunners::RunCallback<void ivm::ClassHandle::ParameterizeEntry<-1, v8::Local<v8::Value> (*)(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>), &(v8::Local<v8::Value> ivm::ClassHandle::MethodCast<v8::Local<v8::Value> (ivm::ReferenceHandle::*)(v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>)>::Invoke<&(v8::Local<v8::Value> ivm::ReferenceHandle::Apply<0>(v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>))>(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>))>(v8::FunctionCallbackInfo<v8::Value> const&)::'lambda'(), v8::FunctionCallbackInfo<v8::Value> const>(v8::FunctionCallbackInfo<v8::Value> const&, void ivm::ClassHandle::ParameterizeEntry<-1, v8::Local<v8::Value> (*)(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>), &(v8::Local<v8::Value> ivm::ClassHandle::MethodCast<v8::Local<v8::Value> (ivm::ReferenceHandle::*)(v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>)>::Invoke<&(v8::Local<v8::Value> ivm::ReferenceHandle::Apply<0>(v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>))>(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>))>(v8::FunctionCallbackInfo<v8::Value> const&)::'lambda'()) [inlined] v8::Local<v8::Value> ivm::ClassHandle::MethodCast<v8::Local<v8::Value> (args=<unavailable>, args=<unavailable>)(v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>)>::Invoke<&(v8::Local<v8::Value> ivm::ReferenceHandle::Apply<0>(v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>))>(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>) at class_handle.h:234 [opt]
    frame #15: 0x000000010345b1c0 isolated_vm.node`void ivm::FunctorRunners::RunCallback<void ivm::ClassHandle::ParameterizeEntry<-1, v8::Local<v8::Value> (*)(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>), &(v8::Local<v8::Value> ivm::ClassHandle::MethodCast<v8::Local<v8::Value> (ivm::ReferenceHandle::*)(v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>)>::Invoke<&(v8::Local<v8::Value> ivm::ReferenceHandle::Apply<0>(v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>))>(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>))>(v8::FunctionCallbackInfo<v8::Value> const&)::'lambda'(), v8::FunctionCallbackInfo<v8::Value> const>(v8::FunctionCallbackInfo<v8::Value> const&, void ivm::ClassHandle::ParameterizeEntry<-1, v8::Local<v8::Value> (*)(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>), &(v8::Local<v8::Value> ivm::ClassHandle::MethodCast<v8::Local<v8::Value> (ivm::ReferenceHandle::*)(v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>)>::Invoke<&(v8::Local<v8::Value> ivm::ReferenceHandle::Apply<0>(v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>))>(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>))>(v8::FunctionCallbackInfo<v8::Value> const&)::'lambda'()) [inlined] decltype(auto) apply_tuple_impl<v8::Local<v8::Value> (*&)(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>), std::__1::tuple<ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object> >, 0ul, 1ul, 2ul, 3ul>(v8::Local<v8::Value> (*&&&)(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>), std::__1::tuple<ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object> >&&, std::__1::integer_sequence<unsigned long, 0ul, 1ul, 2ul, 3ul>) at apply_from_tuple.h:11 [opt]
    frame #16: 0x000000010345b1c0 isolated_vm.node`void ivm::FunctorRunners::RunCallback<void ivm::ClassHandle::ParameterizeEntry<-1, v8::Local<v8::Value> (*)(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>), &(v8::Local<v8::Value> ivm::ClassHandle::MethodCast<v8::Local<v8::Value> (ivm::ReferenceHandle::*)(v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>)>::Invoke<&(v8::Local<v8::Value> ivm::ReferenceHandle::Apply<0>(v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>))>(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>))>(v8::FunctionCallbackInfo<v8::Value> const&)::'lambda'(), v8::FunctionCallbackInfo<v8::Value> const>(v8::FunctionCallbackInfo<v8::Value> const&, void ivm::ClassHandle::ParameterizeEntry<-1, v8::Local<v8::Value> (*)(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>), &(v8::Local<v8::Value> ivm::ClassHandle::MethodCast<v8::Local<v8::Value> (ivm::ReferenceHandle::*)(v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>)>::Invoke<&(v8::Local<v8::Value> ivm::ReferenceHandle::Apply<0>(v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>))>(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>))>(v8::FunctionCallbackInfo<v8::Value> const&)::'lambda'()) [inlined] decltype(auto) apply_from_tuple<v8::Local<v8::Value> (*&)(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>), ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object> >(v8::Local<v8::Value> (*&&&)(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>), std::__1::tuple<ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object> >) at apply_from_tuple.h:17 [opt]
    frame #17: 0x000000010345b1c0 isolated_vm.node`void ivm::FunctorRunners::RunCallback<void ivm::ClassHandle::ParameterizeEntry<-1, v8::Local<v8::Value> (*)(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>), &(v8::Local<v8::Value> ivm::ClassHandle::MethodCast<v8::Local<v8::Value> (ivm::ReferenceHandle::*)(v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>)>::Invoke<&(v8::Local<v8::Value> ivm::ReferenceHandle::Apply<0>(v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>))>(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>))>(v8::FunctionCallbackInfo<v8::Value> const&)::'lambda'(), v8::FunctionCallbackInfo<v8::Value> const>(v8::FunctionCallbackInfo<v8::Value> const&, void ivm::ClassHandle::ParameterizeEntry<-1, v8::Local<v8::Value> (*)(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>), &(v8::Local<v8::Value> ivm::ClassHandle::MethodCast<v8::Local<v8::Value> (ivm::ReferenceHandle::*)(v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>)>::Invoke<&(v8::Local<v8::Value> ivm::ReferenceHandle::Apply<0>(v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>))>(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>))>(v8::FunctionCallbackInfo<v8::Value> const&)::'lambda'()) [inlined] v8::Local<v8::Value> ivm::ClassHandle::ParameterizeHelper<v8::FunctionCallbackInfo<v8::Value> const&, -1, v8::Local<v8::Value> (*)(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>), v8::Local<v8::Value>, std::__1::tuple<ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object> > >(v8::Local<v8::Value> (*)(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>), std::__1::tuple<ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object> >, v8::FunctionCallbackInfo<v8::Value> const&) at class_handle.h:135 [opt]
    frame #18: 0x000000010345b1c0 isolated_vm.node`void ivm::FunctorRunners::RunCallback<void ivm::ClassHandle::ParameterizeEntry<-1, v8::Local<v8::Value> (*)(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>), &(v8::Local<v8::Value> ivm::ClassHandle::MethodCast<v8::Local<v8::Value> (ivm::ReferenceHandle::*)(v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>)>::Invoke<&(v8::Local<v8::Value> ivm::ReferenceHandle::Apply<0>(v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>))>(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>))>(v8::FunctionCallbackInfo<v8::Value> const&)::'lambda'(), v8::FunctionCallbackInfo<v8::Value> const>(v8::FunctionCallbackInfo<v8::Value> const&, void ivm::ClassHandle::ParameterizeEntry<-1, v8::Local<v8::Value> (*)(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>), &(v8::Local<v8::Value> ivm::ClassHandle::MethodCast<v8::Local<v8::Value> (ivm::ReferenceHandle::*)(v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>)>::Invoke<&(v8::Local<v8::Value> ivm::ReferenceHandle::Apply<0>(v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>))>(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>))>(v8::FunctionCallbackInfo<v8::Value> const&)::'lambda'()) [inlined] v8::Local<v8::Value> ivm::ClassHandle::ParameterizeHelper<v8::FunctionCallbackInfo<v8::Value> const&, -1, v8::Local<v8::Value> (info=<unavailable>)(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>), v8::Local<v8::Value>, std::__1::tuple<ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array> >, v8::MaybeLocal<v8::Object> >(v8::Local<v8::Value> (*)(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>), std::__1::tuple<ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array> >, v8::FunctionCallbackInfo<v8::Value> const&) at class_handle.h:147 [opt]
    frame #19: 0x000000010345b1ac isolated_vm.node`void ivm::FunctorRunners::RunCallback<void ivm::ClassHandle::ParameterizeEntry<-1, v8::Local<v8::Value> (*)(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>), &(v8::Local<v8::Value> ivm::ClassHandle::MethodCast<v8::Local<v8::Value> (ivm::ReferenceHandle::*)(v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>)>::Invoke<&(v8::Local<v8::Value> ivm::ReferenceHandle::Apply<0>(v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>))>(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>))>(v8::FunctionCallbackInfo<v8::Value> const&)::'lambda'(), v8::FunctionCallbackInfo<v8::Value> const>(v8::FunctionCallbackInfo<v8::Value> const&, void ivm::ClassHandle::ParameterizeEntry<-1, v8::Local<v8::Value> (*)(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>), &(v8::Local<v8::Value> ivm::ClassHandle::MethodCast<v8::Local<v8::Value> (ivm::ReferenceHandle::*)(v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>)>::Invoke<&(v8::Local<v8::Value> ivm::ReferenceHandle::Apply<0>(v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>))>(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>))>(v8::FunctionCallbackInfo<v8::Value> const&)::'lambda'()) [inlined] v8::Local<v8::Value> ivm::ClassHandle::ParameterizeHelper<v8::FunctionCallbackInfo<v8::Value> const&, -1, v8::Local<v8::Value> (info=<unavailable>)(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>), v8::Local<v8::Value>, std::__1::tuple<ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value> >, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object> >(v8::Local<v8::Value> (*)(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>), std::__1::tuple<ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value> >, v8::FunctionCallbackInfo<v8::Value> const&) at class_handle.h:147 [opt]
    frame #20: 0x000000010345b1a1 isolated_vm.node`void ivm::FunctorRunners::RunCallback<void ivm::ClassHandle::ParameterizeEntry<-1, v8::Local<v8::Value> (*)(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>), &(v8::Local<v8::Value> ivm::ClassHandle::MethodCast<v8::Local<v8::Value> (ivm::ReferenceHandle::*)(v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>)>::Invoke<&(v8::Local<v8::Value> ivm::ReferenceHandle::Apply<0>(v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>))>(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>))>(v8::FunctionCallbackInfo<v8::Value> const&)::'lambda'(), v8::FunctionCallbackInfo<v8::Value> const>(v8::FunctionCallbackInfo<v8::Value> const&, void ivm::ClassHandle::ParameterizeEntry<-1, v8::Local<v8::Value> (*)(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>), &(v8::Local<v8::Value> ivm::ClassHandle::MethodCast<v8::Local<v8::Value> (ivm::ReferenceHandle::*)(v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>)>::Invoke<&(v8::Local<v8::Value> ivm::ReferenceHandle::Apply<0>(v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>))>(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>))>(v8::FunctionCallbackInfo<v8::Value> const&)::'lambda'()) [inlined] v8::Local<v8::Value> ivm::ClassHandle::ParameterizeHelper<v8::FunctionCallbackInfo<v8::Value> const&, -1, v8::Local<v8::Value> (*)(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>), v8::Local<v8::Value>, std::__1::tuple<ivm::ReferenceHandle*>, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object> >(v8::Local<v8::Value> (*)(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>), std::__1::tuple<ivm::ReferenceHandle*>, v8::FunctionCallbackInfo<v8::Value> const&) at class_handle.h:147 [opt]
    frame #21: 0x000000010345b182 isolated_vm.node`void ivm::FunctorRunners::RunCallback<void ivm::ClassHandle::ParameterizeEntry<-1, v8::Local<v8::Value> (*)(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>), &(v8::Local<v8::Value> ivm::ClassHandle::MethodCast<v8::Local<v8::Value> (ivm::ReferenceHandle::*)(v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>)>::Invoke<&(v8::Local<v8::Value> ivm::ReferenceHandle::Apply<0>(v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>))>(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>))>(v8::FunctionCallbackInfo<v8::Value> const&)::'lambda'(), v8::FunctionCallbackInfo<v8::Value> const>(v8::FunctionCallbackInfo<v8::Value> const&, void ivm::ClassHandle::ParameterizeEntry<-1, v8::Local<v8::Value> (*)(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>), &(v8::Local<v8::Value> ivm::ClassHandle::MethodCast<v8::Local<v8::Value> (ivm::ReferenceHandle::*)(v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>)>::Invoke<&(v8::Local<v8::Value> ivm::ReferenceHandle::Apply<0>(v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>))>(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>))>(v8::FunctionCallbackInfo<v8::Value> const&)::'lambda'()) [inlined] v8::Local<v8::Value> ivm::ClassHandle::ParameterizeHelper<v8::FunctionCallbackInfo<v8::Value> const&, -1, v8::Local<v8::Value> (info=<unavailable>)(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>), v8::Local<v8::Value>, std::__1::tuple<>, ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object> >(v8::Local<v8::Value> (*)(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>), std::__1::tuple<>, v8::FunctionCallbackInfo<v8::Value> const&) at class_handle.h:147 [opt]
    frame #22: 0x000000010345b177 isolated_vm.node`void ivm::FunctorRunners::RunCallback<void ivm::ClassHandle::ParameterizeEntry<-1, v8::Local<v8::Value> (*)(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>), &(v8::Local<v8::Value> ivm::ClassHandle::MethodCast<v8::Local<v8::Value> (ivm::ReferenceHandle::*)(v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>)>::Invoke<&(v8::Local<v8::Value> ivm::ReferenceHandle::Apply<0>(v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>))>(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>))>(v8::FunctionCallbackInfo<v8::Value> const&)::'lambda'(), v8::FunctionCallbackInfo<v8::Value> const>(v8::FunctionCallbackInfo<v8::Value> const&, void ivm::ClassHandle::ParameterizeEntry<-1, v8::Local<v8::Value> (*)(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>), &(v8::Local<v8::Value> ivm::ClassHandle::MethodCast<v8::Local<v8::Value> (ivm::ReferenceHandle::*)(v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>)>::Invoke<&(v8::Local<v8::Value> ivm::ReferenceHandle::Apply<0>(v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>))>(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>))>(v8::FunctionCallbackInfo<v8::Value> const&)::'lambda'()) [inlined] v8::Local<v8::Value> ivm::ClassHandle::ParameterizeHelperStart<v8::FunctionCallbackInfo<v8::Value> const&, -1, ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object> >(info=<unavailable>)(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>)) at class_handle.h:153 [opt]
    frame #23: 0x000000010345b177 isolated_vm.node`void ivm::FunctorRunners::RunCallback<void ivm::ClassHandle::ParameterizeEntry<-1, v8::Local<v8::Value> (*)(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>), &(v8::Local<v8::Value> ivm::ClassHandle::MethodCast<v8::Local<v8::Value> (ivm::ReferenceHandle::*)(v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>)>::Invoke<&(v8::Local<v8::Value> ivm::ReferenceHandle::Apply<0>(v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>))>(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>))>(v8::FunctionCallbackInfo<v8::Value> const&)::'lambda'(), v8::FunctionCallbackInfo<v8::Value> const>(v8::FunctionCallbackInfo<v8::Value> const&, void ivm::ClassHandle::ParameterizeEntry<-1, v8::Local<v8::Value> (*)(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>), &(v8::Local<v8::Value> ivm::ClassHandle::MethodCast<v8::Local<v8::Value> (ivm::ReferenceHandle::*)(v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>)>::Invoke<&(v8::Local<v8::Value> ivm::ReferenceHandle::Apply<0>(v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>))>(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>))>(v8::FunctionCallbackInfo<v8::Value> const&)::'lambda'()) [inlined] void ivm::ClassHandle::ParameterizeEntry<-1, v8::Local<v8::Value> (*)(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>), &(v8::Local<v8::Value> ivm::ClassHandle::MethodCast<v8::Local<v8::Value> (ivm::ReferenceHandle::*)(v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>)>::Invoke<&(v8::Local<v8::Value> ivm::ReferenceHandle::Apply<0>(v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>))>(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>))>(v8::FunctionCallbackInfo<v8::Value> const&)::'lambda'()::operator()() const at class_handle.h:187 [opt]
    frame #24: 0x000000010345b177 isolated_vm.node`void ivm::FunctorRunners::RunCallback<void ivm::ClassHandle::ParameterizeEntry<-1, v8::Local<v8::Value> (*)(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>), &(v8::Local<v8::Value> ivm::ClassHandle::MethodCast<v8::Local<v8::Value> (ivm::ReferenceHandle::*)(v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>)>::Invoke<&(v8::Local<v8::Value> ivm::ReferenceHandle::Apply<0>(v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>))>(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>))>(v8::FunctionCallbackInfo<v8::Value> const&)::'lambda'(), v8::FunctionCallbackInfo<v8::Value> const>(info=0x00007ffeefbfaf30, fn=<unavailable>)(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>), &(v8::Local<v8::Value> ivm::ClassHandle::MethodCast<v8::Local<v8::Value> (ivm::ReferenceHandle::*)(v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>)>::Invoke<&(v8::Local<v8::Value> ivm::ReferenceHandle::Apply<0>(v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>))>(ivm::ReferenceHandle*, v8::MaybeLocal<v8::Value>, v8::MaybeLocal<v8::Array>, v8::MaybeLocal<v8::Object>))>(v8::FunctionCallbackInfo<v8::Value> const&)::'lambda'()) at functor_runners.h:18 [opt]
    frame #25: 0x000000010022822f node`v8::internal::FunctionCallbackArguments::Call(v8::internal::CallHandlerInfo*) + 623
    frame #26: 0x0000000100227771 node`v8::internal::MaybeHandle<v8::internal::Object> v8::internal::(anonymous namespace)::HandleApiCallHelper<false>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::Handle<v8::internal::FunctionTemplateInfo>, v8::internal::Handle<v8::internal::Object>, v8::internal::BuiltinArguments) + 689
    frame #27: 0x0000000100226dc0 node`v8::internal::Builtin_Impl_HandleApiCall(v8::internal::BuiltinArguments, v8::internal::Isolate*) + 288
    frame #28: 0x00001901f84841bd
    frame #29: 0x00001901f8493a09
    frame #30: 0x00001901f848c5a3
    frame #31: 0x00001901f8493a09
    frame #32: 0x00001901f848f147
    frame #33: 0x00001901f850b4a0
    frame #34: 0x00001901f8493a09
    frame #35: 0x00001901f848f147
    frame #36: 0x00001901f850b4a0
    frame #37: 0x00001901f8493a09
    frame #38: 0x00001901f854f5ce
    frame #39: 0x00001901f84c2a11
    frame #40: 0x00001901f84a1c4c
    frame #41: 0x00001901f848ba01
    frame #42: 0x0000000100518bc7 node`v8::internal::(anonymous namespace)::Invoke(v8::internal::Isolate*, bool, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, int, v8::internal::Handle<v8::internal::Object>*, v8::internal::Handle<v8::internal::Object>, v8::internal::Execution::MessageHandling, v8::internal::Execution::Target) + 999
    frame #43: 0x0000000100518dd7 node`v8::internal::Execution::TryCall(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, int, v8::internal::Handle<v8::internal::Object>*, v8::internal::Execution::MessageHandling, v8::internal::MaybeHandle<v8::internal::Object>*, v8::internal::Execution::Target) + 231
    frame #44: 0x0000000100518efa node`v8::internal::Execution::RunMicrotasks(v8::internal::Isolate*, v8::internal::Execution::MessageHandling, v8::internal::MaybeHandle<v8::internal::Object>*) + 42
    frame #45: 0x0000000100629154 node`v8::internal::Isolate::RunMicrotasks() + 436
    frame #46: 0x000000010022822f node`v8::internal::FunctionCallbackArguments::Call(v8::internal::CallHandlerInfo*) + 623
    frame #47: 0x0000000100227771 node`v8::internal::MaybeHandle<v8::internal::Object> v8::internal::(anonymous namespace)::HandleApiCallHelper<false>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::Handle<v8::internal::FunctionTemplateInfo>, v8::internal::Handle<v8::internal::Object>, v8::internal::BuiltinArguments) + 689
    frame #48: 0x0000000100226dc0 node`v8::internal::Builtin_Impl_HandleApiCall(v8::internal::BuiltinArguments, v8::internal::Isolate*) + 288
    frame #49: 0x00001901f84841bd
    frame #50: 0x00001901f8493a09
    frame #51: 0x00001901f8493a09
    frame #52: 0x00001901f8493a09
    frame #53: 0x00001901f8493a09
    frame #54: 0x00001901f8490f95
    frame #55: 0x00001901f848a4a1
    frame #56: 0x0000000100518bc7 node`v8::internal::(anonymous namespace)::Invoke(v8::internal::Isolate*, bool, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, int, v8::internal::Handle<v8::internal::Object>*, v8::internal::Handle<v8::internal::Object>, v8::internal::Execution::MessageHandling, v8::internal::Execution::Target) + 999
    frame #57: 0x0000000100518746 node`v8::internal::Execution::Call(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, int, v8::internal::Handle<v8::internal::Object>*) + 166
    frame #58: 0x00000001001b931c node`v8::Function::Call(v8::Local<v8::Context>, v8::Local<v8::Value>, int, v8::Local<v8::Value>*) + 460
    frame #59: 0x000000010003a0cb node`node::ExecuteBootstrapper(node::Environment*, v8::Local<v8::Function>, int, v8::Local<v8::Value>*, v8::Local<v8::Value>*) + 44
    frame #60: 0x000000010003975a node`node::LoadEnvironment(node::Environment*) + 844
    frame #61: 0x000000010003ca56 node`node::Start(v8::Isolate*, node::IsolateData*, int, char const* const*, int, char const* const*) + 974
    frame #62: 0x000000010003c38a node`node::Start(uv_loop_s*, int, char const* const*, int, char const* const*) + 295
    frame #63: 0x000000010003becd node`node::Start(int, char**) + 435
    frame #64: 0x0000000100001034 node`start + 52

@laverdet
Copy link

I've been looking into these errors and I think they have to do with v8's snapshot feature. This example will fail while using a debug build of node:

'use strict';
let ivm = require('isolated-vm');
let snapshot = ivm.Isolate.createSnapshot([ { code: `

  (function() {
    class Foo {};
    this.fn = function bootstrap() {
      return Foo;
    };
  })();

` } ]);

I'll need to dig a lot deeper to find out exactly what is going wrong.

@mrkurt
Copy link
Member

mrkurt commented Jul 16, 2018

Oh! That's interesting. I can try some stuff without snapshots tonight and try to confirm that.

@mrkurt
Copy link
Member

mrkurt commented Jul 17, 2018

@laverdet that was hugely helpful, thank you. We can just skip snapshots when node is >=10.4.0 for now.

mrkurt added a commit that referenced this issue Jul 18, 2018
* fix: workaround for crashes loading v8 snapshot (#101)

* Build latest stable node on travis
@laverdet
Copy link

laverdet commented Jul 19, 2018

I think this issue is fixed in latest v8, but it's hard to tell because getting latest v8 to work with current nodejs is not trivial. The two fixes that are relevant to the snapshot issue are:

So either these two patches will need to be backported or we'll have to wait until nodejs picks up v8 6.9.186. Right now nodejs is using 6.7.288, so I would expect snapshots to be broken for a while unless we push the team to backport these commits. 39496a95 in particular is a pretty hairy patch that touches a lot of files so I'm not sure the maintainers would feel like it. On the other hand I think that maybe only 22116dd6 is necessary.

I've forked v10.6.0 and backported both patches (and an additional dependency patch) if any of you want to try it out-- https://github.com/laverdet/node/tree/snapshots

Edit: Github posted my comment before I could finish. Anyway, I've done some cursory testing with my branch and it seemed like it might work but I ran into some other issues that I don't have time to troubleshoot. I'll be offline tonight and for the day tomorrow but I wanted to update with my findings.

@mrkurt
Copy link
Member

mrkurt commented Jul 26, 2018

@laverdet that's super helpful, thank you. I think we're good just not using snapshots on those node versions for now. I'll give your fork a shot next week sometime and see if it helps, though!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants