Feature request: wrapper for libjack.so.2 Hi! I am trying to use a combination of `box64`, `wine64` and [yabridge](https://github.com/robbert-vdh/yabridge) for running x64 Windows audio plugins on my Raspberry Pi 4. I am already able to use these three together, but then to launch the plugins, I need to run an x64 plugin host like [carla](https://github.com/falkTX/Carla), Ardour, Qtractor, Element, ... I have tested all of the clients above, but none of them work with `box64` except for `carla-single`, a subproject of `carla` that provides a command-line tool for launching plugins. The problem is, `carla-single` relies on `jack` for the audio input/output, and there seems to be a communication issue between the client-side (`libjack.so.2` is emulated) and server-side (native `jackd` audio server running on ARM). The `jackd` server quits with a segmentation fault when `carla-single` tries to connect to its channels. I think that wrapping `libjack.so.2` can solve this issue. Is it something doable? To troubleshoot this, I open two consoles, one for launching `jackd`, and another one for launching `carla-single`. This is the output of the console running `jackd`: ``` [michele@michele-rpi4 ~]$ jackd -d alsa jackdmp 1.9.21 Copyright 2001-2005 Paul Davis and others. Copyright 2004-2016 Grame. Copyright 2016-2022 Filipe Coelho. jackdmp comes with ABSOLUTELY NO WARRANTY This is free software, and you are welcome to redistribute it under certain conditions; see the file COPYING for details Could not open component .so '/usr/lib/jack/jack_firewire.so': libffado.so.2: cannot open shared object file: No such file or directory Could not open component .so '/usr/lib/jack/jack_firewire.so': libffado.so.2: cannot open shared object file: No such file or directory jack_get_descriptor : dll jack_get_descriptor returns null for 'jack_firewire.so' Could not open component .so '/usr/lib/jack/jack_firewire.so': libffado.so.2: cannot open shared object file: No such file or directory JACK server starting in realtime mode with priority 10 self-connect-mode is "Don't restrict self connect requests" audio_reservation_init Acquire audio card Audio0 creating alsa driver ... hw:0|hw:0|1024|2|48000|0|0|nomon|swmeter|-|32bit ALSA: Cannot open PCM device alsa_pcm for capture. Falling back to playback-only mode configuring for 48000Hz, period = 1024 frames (21.3 ms), buffer = 2 periods ALSA: final selected sample format for playback: 16bit little-endian ALSA: use 2 periods for playback ALSA: playback device disconnected JackAudioDriver::ProcessAsync: read error, stopping... Segmentation fault (core dumped) ``` And this is the output of the console running `carla-single`: ``` [michele@michele-rpi4 libs]$ carla-single vst3 "/home/michele/.vst3/yabridge/SWAM/Clarinets/SWAM Clarinet 3.vst3" Dynarec for ARM64, with extension: ASIMD CRC32 PageSize:4096 Cores:4 Box64 with Dynarec v0.2.0 built on Nov 17 2022 14:11:31 Using default BOX64_LD_LIBRARY_PATH: ./:lib/:lib64/:x86_64/:bin64/:libs64/ Using default BOX64_PATH: ./:bin/ Counted 44 Env var Looking for /home/michele/python3.8-x86_64.AppDir/opt/python3.8/bin/python3.8 argv[1]="/usr/bin/carla-single" argv[2]="vst3" argv[3]="/home/michele/.vst3/yabridge/SWAM/Clarinets/SWAM Clarinet 3.vst3" Rename process to "python3.8" Error initializing native libcrypt.so.1 (last dlerror is libcrypt.so.1: cannot open shared object file: No such file or directory) Using emulated /home/michele/python3.8-x86_64.AppDir/opt/python3.8/bin/../../../usr/lib/libcrypt.so.1 Using native(wrapped) libpthread.so.0 Using native(wrapped) libdl.so.2 Using native(wrapped) libc.so.6 Using native(wrapped) ld-linux-x86-64.so.2 Using native(wrapped) librt.so.1 Using native(wrapped) libutil.so.1 Using native(wrapped) libm.so.6 ['/usr/lib/carla/carla-bridge-native', 'vst3', '/home/michele/.vst3/yabridge/SWAM/Clarinets/SWAM Clarinet 3.vst3', '(none)', '0'] Dynarec for ARM64, with extension: ASIMD CRC32 PageSize:4096 Cores:4 Box64 with Dynarec v0.2.0 built on Nov 17 2022 14:11:31 Using default BOX64_LD_LIBRARY_PATH: ./:lib/:lib64/:x86_64/:bin64/:libs64/ Using default BOX64_PATH: ./:bin/ Counted 47 Env var Looking for /usr/lib/carla/carla-bridge-native argv[1]="vst3" argv[2]="/home/michele/.vst3/yabridge/SWAM/Clarinets/SWAM Clarinet 3.vst3" argv[3]="(none)" argv[4]="0" Rename process to "carla-bridge-native" Using native(wrapped) libfreetype.so.6 Using native(wrapped) libX11.so.6 Using native(wrapped) libGL.so.1 Using native(wrapped) libsndfile.so.1 Using emulated liblo.so.7 Using emulated libfluidsynth.so.3 Using emulated libmagic.so.1 Using emulated /lib/x86_64-linux-gnu/libstdc++.so.6 Using native(wrapped) libm.so.6 Using emulated /lib/x86_64-linux-gnu/libgcc_s.so.1 Using native(wrapped) libc.so.6 Using native(wrapped) ld-linux-x86-64.so.2 Using native(wrapped) libpthread.so.0 Using native(wrapped) libdl.so.2 Using native(wrapped) libutil.so.1 Using native(wrapped) librt.so.1 Using emulated libgomp.so.1 Using native(wrapped) libpulse-simple.so.0 Using native(wrapped) libpulse.so.0 Using emulated libportaudio.so.2 Using native(wrapped) libasound.so.2 Using emulated libjack.so.0 Using emulated libpipewire-0.3.so.0 Using native(wrapped) libdbus-1.so.3 Using native(wrapped) libgmodule-2.0.so.0 Using native(wrapped) libglib-2.0.so.0 Using emulated libinstpatch-1.0.so.2 Using native(wrapped) libgobject-2.0.so.0 Using native(wrapped) libSDL2-2.0.so.0 Using emulated libreadline.so.8 Using emulated libdb-5.3.so Error: Global Symbol stat64 not found, cannot apply R_X86_64_GLOB_DAT @0xffffb4819860 ((nil)) in libpipewire-0.3.so.0 Error: Global Symbol g_atomic_int_exchange_and_add not found, cannot apply R_X86_64_GLOB_DAT @0xffffb472c0a0 ((nil)) in libinstpatch-1.0.so.2 Error: Global Symbol g_type_value_table_peek not found, cannot apply R_X86_64_GLOB_DAT @0xffffb472c250 ((nil)) in libinstpatch-1.0.so.2 Error: Global Symbol g_markup_parse_context_new not found, cannot apply R_X86_64_GLOB_DAT @0xffffb472c3c0 ((nil)) in libinstpatch-1.0.so.2 Error: Global Symbol g_node_insert_before not found, cannot apply R_X86_64_GLOB_DAT @0xffffb472c5a8 ((nil)) in libinstpatch-1.0.so.2 Error: Global Symbol g_list_foreach not found, cannot apply R_X86_64_GLOB_DAT @0xffffb472c5f8 ((nil)) in libinstpatch-1.0.so.2 Error: Global Symbol g_markup_parse_context_free not found, cannot apply R_X86_64_GLOB_DAT @0xffffb472c758 ((nil)) in libinstpatch-1.0.so.2 Error: Global Symbol g_markup_parse_context_end_parse not found, cannot apply R_X86_64_GLOB_DAT @0xffffb472c848 ((nil)) in libinstpatch-1.0.so.2 Error: Global Symbol g_weak_ref_clear not found, cannot apply R_X86_64_GLOB_DAT @0xffffb472c8a0 ((nil)) in libinstpatch-1.0.so.2 Error: Global Symbol g_markup_parse_context_parse not found, cannot apply R_X86_64_GLOB_DAT @0xffffb472cad8 ((nil)) in libinstpatch-1.0.so.2 Error: Global Symbol g_node_get_root not found, cannot apply R_X86_64_GLOB_DAT @0xffffb472cf38 ((nil)) in libinstpatch-1.0.so.2 Error: Global Symbol g_weak_ref_init not found, cannot apply R_X86_64_GLOB_DAT @0xffffb472d010 ((nil)) in libinstpatch-1.0.so.2 Error: Global Symbol g_weak_ref_set not found, cannot apply R_X86_64_GLOB_DAT @0xffffb472d140 ((nil)) in libinstpatch-1.0.so.2 Error: Global Symbol g_list_insert_sorted not found, cannot apply R_X86_64_GLOB_DAT @0xffffb472d150 ((nil)) in libinstpatch-1.0.so.2 Error: Global Symbol g_weak_ref_get not found, cannot apply R_X86_64_GLOB_DAT @0xffffb472d290 ((nil)) in libinstpatch-1.0.so.2 Error: Global Symbol g_node_traverse not found, cannot apply R_X86_64_GLOB_DAT @0xffffb472d360 ((nil)) in libinstpatch-1.0.so.2 Error: Global Symbol g_node_copy_deep not found, cannot apply R_X86_64_GLOB_DAT @0xffffb472d9f0 ((nil)) in libinstpatch-1.0.so.2 Error: Global Symbol g_node_new not found, cannot apply R_X86_64_GLOB_DAT @0xffffb472daf0 ((nil)) in libinstpatch-1.0.so.2 Error: Global Symbol g_slist_free_full not found, cannot apply R_X86_64_GLOB_DAT @0xffffb472ddb8 ((nil)) in libinstpatch-1.0.so.2 Error: Global Symbol g_node_destroy not found, cannot apply R_X86_64_GLOB_DAT @0xffffb472dde0 ((nil)) in libinstpatch-1.0.so.2 Using native(wrapped) libncursesw.so.6 Using native(wrapped) libtinfo.so.6 Error: Global Symbol g_cond_signal not found, cannot apply R_X86_64_GLOB_DAT @0xffffb53d0f50 ((nil)) in libfluidsynth.so.3 Error: Global Symbol g_thread_try_new not found, cannot apply R_X86_64_GLOB_DAT @0xffffb53d1110 ((nil)) in libfluidsynth.so.3 Error: Global Symbol g_cond_broadcast not found, cannot apply R_X86_64_GLOB_DAT @0xffffb53d1160 ((nil)) in libfluidsynth.so.3 Error: Global Symbol g_rec_mutex_init not found, cannot apply R_X86_64_GLOB_DAT @0xffffb53d1188 ((nil)) in libfluidsynth.so.3 Error: Global Symbol g_rec_mutex_clear not found, cannot apply R_X86_64_GLOB_DAT @0xffffb53d15b8 ((nil)) in libfluidsynth.so.3 Error: Global Symbol g_rec_mutex_lock not found, cannot apply R_X86_64_GLOB_DAT @0xffffb53d1df0 ((nil)) in libfluidsynth.so.3 Error: Global Symbol g_rec_mutex_unlock not found, cannot apply R_X86_64_GLOB_DAT @0xffffb53d1e50 ((nil)) in libfluidsynth.so.3 Using native(wrapped) liblzma.so.5 Using native(wrapped) libbz2.so.1 Using native(wrapped) libz.so.1 Error: Global Symbol XFetchName not found, cannot apply R_X86_64_GLOB_DAT @0xffffb65992f8 ((nil)) in /usr/lib/carla/carla-bridge-native Error: Global Symbol fts64_read not found, cannot apply R_X86_64_GLOB_DAT @0xffffb65997f8 ((nil)) in /usr/lib/carla/carla-bridge-native Error: Global Symbol fts64_close not found, cannot apply R_X86_64_GLOB_DAT @0xffffb6599a00 ((nil)) in /usr/lib/carla/carla-bridge-native Error: Global Symbol fts64_open not found, cannot apply R_X86_64_GLOB_DAT @0xffffb6599b28 ((nil)) in /usr/lib/carla/carla-bridge-native Error: Global Symbol XGetNormalHints not found, cannot apply R_X86_64_GLOB_DAT @0xffffb6599b38 ((nil)) in /usr/lib/carla/carla-bridge-native Error: Global Symbol stat64 not found, cannot apply R_X86_64_GLOB_DAT @0xffffb6599e10 ((nil)) in /usr/lib/carla/carla-bridge-native Using emulated libfftw3_threads.so.3 Using emulated libfftw3.so.3 Using emulated libfftw3f_threads.so.3 Using emulated libfftw3f.so.3 Using emulated libfftw3l_threads.so.3 Using emulated libfftw3l.so.3 Using emulated libfftw3q_threads.so.3 Using emulated libfftw3q.so.3 Using emulated libquadmath.so.0 Error: Global Symbol sqrtl not found, cannot apply R_X86_64_GLOB_DAT @0xffffb1895d60 ((nil)) in libquadmath.so.0 Error: Global Symbol register_printf_specifier not found, cannot apply R_X86_64_GLOB_DAT @0xffffb1895da8 ((nil)) in libquadmath.so.0 Error: Global Symbol register_printf_type not found, cannot apply R_X86_64_GLOB_DAT @0xffffb1895dc8 ((nil)) in libquadmath.so.0 Error: Global Symbol register_printf_modifier not found, cannot apply R_X86_64_GLOB_DAT @0xffffb1895e38 ((nil)) in libquadmath.so.0 FillBlock at (nil) triggered a segfault, cancelling FillBlock at (nil) triggered a segfault, cancelling 0694|Ask to run at NULL, quit silently libjack.so.0 loaded successfully! BDB1539 Build signature doesn't match environment Cannot open DB environment: BDB0091 DB_VERSION_MISMATCH: Database environment version mismatch Cannot lock down 82837504 byte memory area (Cannot allocate memory) Cannot lock down 136314880 byte memory area (Cannot allocate memory) Cannot lock down 28835840 byte memory area (Cannot allocate memory) Jack: JackClient::SetupDriverSync driver sem in flush mode Jack: JackLinuxFutex::Connect name = jack_sem.1000_default_SWAM_Clarinet_3 Jack: Already connected name = SWAM_Clarinet_3 Jack: Clock source : unknown Jack: JackLibClient::Open name = SWAM_Clarinet_3 refnum = 0 Jack: jack_client_close Jack: JackClient::Close ref = 0 Jack: JackClient::Deactivate Jack: JackSocketClientChannel::Stop Jack: JackPosixThread::Kill Cannot read socket fd = 5 err = Cannot allocate memory Could not read result type = 24 Jack: JackClientSocket::Close Jack: JackClientSocket::Close Jack: JackLibClient::~JackLibClient Jack: JackShmReadWritePtr1::~JackShmReadWritePtr1 2 Cannot unlock down 28835840 byte memory area (Cannot allocate memory) Jack: JackLibGlobals Destroy 7f2d7f80 Jack: ~JackLibGlobals Jack: no message buffer overruns Jack: JackPosixThread::Stop Jack: JackPosixThread::ThreadHandler : exit Jack: JackShmReadWritePtr::~JackShmReadWritePtr 1 Cannot unlock down 82837504 byte memory area (Cannot allocate memory) Jack: JackShmReadWritePtr::~JackShmReadWritePtr 0 Cannot unlock down 136314880 byte memory area (Cannot allocate memory) Jack: jack_client_close res = -1 FillBlock at (nil) triggered a segfault, cancelling FillBlock at (nil) triggered a segfault, cancelling 0694|Ask to run at NULL, quit silently [carla] Carla assertion failure: "engine == nullptr" in file ../backend/CarlaHostImpl.hpp, line 87 JUCE Assertion failure in juce_Singleton.h:50 JUCE Assertion failure in juce_Singleton.h:50 /home/michele/python3.8-x86_64: line 25: 694 Segmentation fault (core dumped) "$APPDIR/opt/python3.8/bin/python3.8" "$@" ```