jazz-soft / jazz-midi

MIDI support for Node.js and browsers
https://jazz-soft.net
17 stars 4 forks source link

Segmentation fault: 11 when closing other MIDI-Applications (like Koala-Sampler or DLS-Midi Synth) #5

Open scrbblr opened 2 years ago

scrbblr commented 2 years ago

Node.js exits with a "segmentation fault: 11"-Error when closing a midi-application whose (virtual) midi-ports where already recognized by JZZ's watcher.

This happens when JZZ.js runs within my node application, then I open e.g. the DLS-Midi Synth App on Mac and the port 'DLS-MIDI-Synth Virtual In' shows up in JZZ's list of available ports. Now, when I close the DLS-Midi Synth App, my node application exits with the segmentation fault.

There seems to be a problem with the watcher and the MidiOutInfo method calling the compiled jazz-midi/bin/11_15/macos64/jazz.node gyp. And it seems to be related to virtual ports that weren't created by JZZ.

Reinstalling all node_modules didn't fix it.

Running node.js v16.1.0 on Mac 10.14.6. The jzz version is 1.3.8, the jazz-midi version is 1.7.5.

Here the log:

PID 15144 received SIGSEGV for address: 0x0
0   segfault-handler.node               0x000000010e172006 _ZL16segfault_handleriP9__siginfoPv + 310
1   libsystem_platform.dylib            0x00007fff5b9a5b5d _sigtramp + 29
2   CoreFoundation                      0x00007fff8a9618f0 __kCFAllocatorSystemDefault + 0
3   jazz.node                           0x000000010e1a4d15 _ZN11CMidiMacOSX11MidiOutInfoEPKw + 245
4   jazz.node                           0x000000010e198c0d _Z11MidiOutInfoP10napi_env__P20napi_callback_info__ + 541
5   node                                0x000000010923168a _ZN6v8impl12_GLOBAL__N_123FunctionCallbackWrapper6InvokeERKN2v820FunctionCallbackInfoINS2_5ValueEEE + 122
6   node                                0x0000000109463275 _ZN2v88internal25FunctionCallbackArguments4CallENS0_15CallHandlerInfoE + 613
7   node                                0x0000000109462848 _ZN2v88internal12_GLOBAL__N_119HandleApiCallHelperILb0EEENS0_11MaybeHandleINS0_6ObjectEEEPNS0_7IsolateENS0_6HandleINS0_10HeapObjectEEESA_NS8_INS0_20FunctionTemplateInfoEEENS8_IS4_EENS0_16BuiltinArgumentsE + 824
8   node                                0x0000000109461dff _ZN2v88internalL26Builtin_Impl_HandleApiCallENS0_16BuiltinArgumentsEPNS0_7IsolateE + 255
9   node                                0x0000000109ceb7b9 Builtins_CEntry_Return1_DontSaveFPRegs_ArgvOnStack_BuiltinExit + 57
10  node                                0x0000000109c861e5 Builtins_InterpreterEntryTrampoline + 197
Segmentation fault: 11

How to reproduce the issue: 1) Open a midi-application like Koala Sampler or DLS-Midi-Synth.

2) Call following node script:

const navigator = require('jzz'); 

navigator.requestMIDIAccess({sysex: true}).then((access)=>{
  console.log(Array.from(access.inputs.values()), Array.from(access.outputs.values())); 
}, (err)=>{console.log(err)});

3) Close the midi-application.

djipco commented 8 months ago

This problem has also been reported in the WEBMIDI.js repo (which uses jazz-midi under the hood to add Node.js support).

Details here: https://github.com/djipco/webmidi/issues/391