npm i --save node-segfault-handler-rs
Manually register.
const { register } = require('node-segfault-handler-rs');
register();
Use node -r
option
node -r node-segfault-handler-rs/register
rust backtrace start
Backtrace [
{ fn: "std::backtrace_rs::backtrace::libunwind::trace", file: "/rustc/9fc6b43126469e3858e2fe86cafb4f0fd5068869/library/std/src/../../backtrace/src/backtrace/libunwind.rs", line: 116 },
{ fn: "std::backtrace_rs::backtrace::trace_unsynchronized", file: "/rustc/9fc6b43126469e3858e2fe86cafb4f0fd5068869/library/std/src/../../backtrace/src/backtrace/mod.rs", line: 66 },
{ fn: "std::backtrace::Backtrace::create", file: "/rustc/9fc6b43126469e3858e2fe86cafb4f0fd5068869/library/std/src/backtrace.rs", line: 331 },
{ fn: "node_segfault_handler_rs::segfault_handler::segfault_action", file: "./src/segfault_handler.rs", line: 12 },
{ fn: "__os_alloc_slow" },
{ fn: "node_segfault_handler_rs::__napi__cause_sigsegv::{{closure}}", file: "./src/lib.rs", line: 9 },
{ fn: "napi::bindgen_prelude::within_runtime_if_available", file: "/Users/killa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/napi-2.16.13/src/lib.rs", line: 162 },
{ fn: "node_segfault_handler_rs::__napi__cause_sigsegv", file: "./src/lib.rs", line: 9 },
]
rust backtrace end
c backtrace start
0 node-segfault-handler-rs.darwin-arm 0x0000000116c4da28 _ZN24node_segfault_handler_rs16segfault_handler15segfault_action17h10628a5b3a9c0f7bE + 576
1 libsystem_platform.dylib 0x000000019a19ee04 _sigtramp + 56
2 node-segfault-handler-rs.darwin-arm 0x0000000116c4dfcc _ZN24node_segfault_handler_rs21__napi__cause_sigsegv28_$u7b$$u7b$closure$u7d$$u7d$17hd374b5527e7afc97E + 28
3 node-segfault-handler-rs.darwin-arm 0x0000000116c4c994 _ZN4napi15bindgen_prelude27within_runtime_if_available17h144884eeb82fdcd8E + 24
4 node-segfault-handler-rs.darwin-arm 0x0000000116c4ca08 _ZN24node_segfault_handler_rs21__napi__cause_sigsegv17h35cd5920ef74f338E + 32
5 node 0x0000000100e7cda8 _ZN6v8impl12_GLOBAL__N_123FunctionCallbackWrapper6InvokeERKN2v820FunctionCallbackInfoINS2_5ValueEEE + 108
6 node 0x00000001010b9bc8 _ZN2v88internal12_GLOBAL__N_119HandleApiCallHelperILb0EEENS0_11MaybeHandleINS0_6ObjectEEEPNS0_7IsolateENS0_6HandleINS0_10HeapObjectEEENS8_INS0_20FunctionTemplateInfoEEENS8_IS4_EEPmi + 728
7 node 0x00000001010b92c0 _ZN2v88internal21Builtin_HandleApiCallEiPmPNS0_7IsolateE + 192
8 node 0x0000000101940b24 Builtins_CEntry_Return1_ArgvOnStack_BuiltinExit + 100
9 node 0x00000001018b83e4 Builtins_InterpreterEntryTrampoline + 260
10 node 0x00000001018b83e4 Builtins_InterpreterEntryTrampoline + 260
11 node 0x00000001018b83e4 Builtins_InterpreterEntryTrampoline + 260
12 node 0x00000001018b650c Builtins_JSEntryTrampoline + 172
13 node 0x00000001018b61f4 Builtins_JSEntry + 148
14 node 0x000000010118dbc8 _ZN2v88internal12_GLOBAL__N_16InvokeEPNS0_7IsolateERKNS1_12InvokeParamsE + 2972
15 node 0x000000010118d014 _ZN2v88internal9Execution4CallEPNS0_7IsolateENS0_6HandleINS0_6ObjectEEES6_iPS6_ + 200
16 node 0x0000000101067904 _ZN2v88Function4CallENS_5LocalINS_7ContextEEENS1_INS_5ValueEEEiPS5_ + 520
17 node 0x0000000100e64868 _ZN4node11Environment9RunTimersEP10uv_timer_s + 552
18 node 0x0000000101894634 uv__run_timers + 40
19 node 0x0000000101897e94 uv_run + 1372
20 node 0x0000000100ded6f0 _ZN4node21SpinEventLoopInternalEPNS_11EnvironmentE + 256
21 node 0x0000000100f033f0 _ZN4node16NodeMainInstance3RunEPNS_8ExitCodeEPNS_11EnvironmentE + 316
22 node 0x0000000100f03104 _ZN4node16NodeMainInstance3RunEv + 124
23 node 0x0000000100e8afa0 _ZN4node5StartEiPPc + 640
24 dyld 0x0000000199de8274 start + 2840
c backtrace end
v8 backtrace start
<anonymous> (/Users/killa/workspace/projects/node-segfault-handler-rs/node-segfault-handler-rs/test/fixtures/test.js:6:3)
listOnTimeout (node:internal/timers:581:17)
processTimers (node:internal/timers:519:7)
v8 backtrace end
Run build before test if modified rust code.
npm run build
npm run test
- Inspired by node-segfault-handler for its implementation of backtrace.
- Thanks to the napi-rs for delivering an amazing Rust development experience.