mod-desktop
mod-desktop copied to clipboard
Pipewire-Jack Segmentation Fault
Pipewire 1.2.0. I get this message in Arch:
MOD Desktop DEBUG: jacklib syms 0x7bd9a4fa9de0 0x7bd9a4fae5e0 | 257 | using pipewire with filename '/usr/lib/libjack.so.0'
--------------------------------------------------------
/usr/lib/libjack.so.0 loaded successfully!
[1] 14472 segmentation fault (core dumped) ./mod-desktop.run
In Pipewire 1.0.4, this works without problems.
Have the exact same thing. Opensuse Tumbleweed. Pipewire 1.2.0. I don't know the version but it worked on my desktop before as well.
Exact same error as @naregderlevonian. It happens since I updated to pipewire 1.2.0.
Same issue on Debian testing.
Same here for me with the stand-alone app, but VST plugin seems to be working fine (it has its own bugs though).
Same with pipewire-1.2.2 on Manjaro Linux.
MOD Desktop DEBUG: jacklib syms 0x78b806b87e10 (nil) | 65 | using regular jack
QSocketNotifier: Can only be used with threads started with QThread
--------------------------------------------------------
libjack.so.0 loaded successfully!
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
--------------------------------------------------------
----------- loadSettings 654
----------- updateDeviceDetails 1028 | 3 4
----------- setStopped 782
compared to running with pw-jack
MOD Desktop DEBUG: jacklib syms 0x74264f844770 0x74264f848f00 | 257 | using pipewire with filename '/usr/lib/x86_64-linux-gnu/pipewire-0.3/jack/libjack.so.0'
QSocketNotifier: Can only be used with threads started with QThread
--------------------------------------------------------
/usr/lib/x86_64-linux-gnu/pipewire-0.3/jack/libjack.so.0 loaded successfully!
Segmentation fault
so I think it needs to use the libraries that it came with for now.
I dont have the newest pipewire on any of my systems, this needs debugging from other people.
There are debug builds in github actions, but now they expired.. I can push some commits to have them regenerated, then we see how to debug this...
Here is what gdb outputs:
Using host libthread_db library "/usr/lib/libthread_db.so.1". [Detaching after fork from child process 40234] [Detaching after fork from child process 40235] ERROR: This system has no python serial support Using FakeHMI => <mod.development.FakeHMI object at 0x7ffff5ac86d0> cc start socket missing last state file does not exist or is corrupt DEBUG:root:[host] popped from queue: transport 0 4.000000 120.000000 [New Thread 0x7ffff5a1e6c0 (LWP 40258)] Cannot connect to server socket err = No such file or directory Cannot connect to server request channel jack server is not running or cannot be started JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock [Thread 0x7ffff5a1e6c0 (LWP 40258) exited] last state file does not exist or is corrupt WARNING:tornado.general:Connect error on fd 11: ECONNREFUSED WARNING:tornado.general:Connect error on fd 10: ECONNREFUSED DEBUG:root:[host] popped from queue: feature_enable processing 0 last state file does not exist or is corrupt INFO:root:[host] HMI initialized right away Readsock none Writesock none Host failed to initialize, is the backend running? jack client deactivated NOT jack client deactivated NOT [Inferior 1 (process 40227) exited with code 01]
Not sure if this is helpful but this is what I got using gdb run and gdb backtrace. Using pipewire 1.2.6
Thread 1 "mod-desktop" received signal SIGSEGV, Segmentation fault.
Downloading 30.70 K source file /usr/src/debug/pipewire/build/../pipewire/spa/plugins/support/loop.c
loop_queue_invoke (object=0x55555566ef40, func=0x7ffff1a94a80 <do_data_loop_setup>, seq=0, data=0x0, size=0, block=false, user_data=0x7ffff1767e90) at ../pipewire/spa/plugins/support/loop.c:308
308 in_thread = (impl->thread == 0 || pthread_equal(impl->thread, pthread_self()));
(gdb) backtrace
#0 loop_queue_invoke (object=0x55555566ef40, func=0x7ffff1a94a80 <do_data_loop_setup>, seq=0, data=0x0, size=0, block=false, user_data=0x7ffff1767e90) at ../pipewire/spa/plugins/support/loop.c:308
#1 loop_invoke (object=0x7ffff176dff8, func=0x7ffff1a94a80 <do_data_loop_setup>, seq=0, data=0x0, size=0, block=false, user_data=0x7ffff1767e90) at ../pipewire/spa/plugins/support/loop.c:435
#2 0x00007ffff1aa3dee in data_loop_start (impl=impl@entry=0x7ffff1767e90, loop=loop@entry=0x7ffff1768358) at ../pipewire/src/pipewire/context.c:295
#3 0x00007ffff1aa40f8 in acquire_data_loop (impl=impl@entry=0x7ffff1767e90, name=name@entry=0x0, klass=0x7ffff176e1d0 "data.rt", klass@entry=0x0) at ../pipewire/src/pipewire/context.c:696
#4 0x00007ffff1aa4349 in pw_context_acquire_loop (context=context@entry=0x7ffff1767e90, props=props@entry=0x0) at ../pipewire/src/pipewire/context.c:734
#5 0x00007ffff1aa4846 in context_get_support (context=0x7ffff1767e90, n_support=0x7fffffffcdc0, info=0x0) at ../pipewire/src/pipewire/context.c:636
#6 pw_context_get_support (context=0x7ffff1767e90, n_support=n_support@entry=0x7fffffffcdc0) at ../pipewire/src/pipewire/context.c:648
#7 0x00007ffff243daef in jack_client_open (client_name=0x555555431350 "MOD Desktop", options=JackNoStartServer, status=0x7fffffffceec) at ../pipewire/pipewire-jack/src/pipewire-jack.c:4108
#8 0x000055555541cb04 in ?? ()
#9 0x0000555555419eea in ?? ()
#10 0x0000555555412751 in ?? ()
#11 0x000055555541979b in ?? ()
#12 0x000055555540edc0 in ?? ()
#13 0x00007ffff6634e08 in __libc_start_call_main (main=main@entry=0x55555540ed05, argc=argc@entry=1, argv=argv@entry=0x7fffffffda88) at ../sysdeps/nptl/libc_start_call_main.h:58
#14 0x00007ffff6634ecc in __libc_start_main_impl (main=0x55555540ed05, argc=1, argv=0x7fffffffda88, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffda78)
at ../csu/libc-start.c:360
#15 0x000055555540eefa in ?? ()
Same issue here with pw 1.2.6
/usr/lib/libjack.so.0 loaded successfully!
[New Thread 0x7fffeac006c0 (LWP 29285)]
Thread 1 "mod-desktop" received signal SIGSEGV, Segmentation fault.
Downloading 30.70 K source file /usr/src/debug/pipewire/build/../pipewire/spa/plugins/support/loop.c
loop_queue_invoke (object=0x55555566ef20, func=0x7ffff0ac5a80 <do_data_loop_setup>, seq=0, data=0x0, size=0, block=false,
user_data=0x7ffff0798e90) at ../pipewire/spa/plugins/support/loop.c:308
308 in_thread = (impl->thread == 0 || pthread_equal(impl->thread, pthread_self()));
#0 loop_queue_invoke (object=0x55555566ef20, func=0x7ffff0ac5a80 <do_data_loop_setup>, seq=0, data=0x0, size=0, block=false,
user_data=0x7ffff0798e90) at ../pipewire/spa/plugins/support/loop.c:308
#1 loop_invoke (object=0x7ffff079eff8, func=0x7ffff0ac5a80 <do_data_loop_setup>, seq=0, data=0x0, size=0, block=false,
user_data=0x7ffff0798e90) at ../pipewire/spa/plugins/support/loop.c:435
#2 0x00007ffff0ad4dee in data_loop_start (impl=impl@entry=0x7ffff0798e90, loop=loop@entry=0x7ffff0799358)
at ../pipewire/src/pipewire/context.c:295
#3 0x00007ffff0ad50f8 in acquire_data_loop (impl=impl@entry=0x7ffff0798e90, name=name@entry=0x0, klass=0x7ffff079f1d0 "data.rt",
klass@entry=0x0) at ../pipewire/src/pipewire/context.c:696
#4 0x00007ffff0ad5349 in pw_context_acquire_loop (context=context@entry=0x7ffff0798e90, props=props@entry=0x0)
at ../pipewire/src/pipewire/context.c:734
#5 0x00007ffff0ad5846 in context_get_support (context=0x7ffff0798e90, n_support=0x7fffffffcd60, info=0x0)
at ../pipewire/src/pipewire/context.c:636
#6 pw_context_get_support (context=0x7ffff0798e90, n_support=n_support@entry=0x7fffffffcd60) at ../pipewire/src/pipewire/context.c:648
#7 0x00007ffff3317aef in jack_client_open (client_name=0x555555431350 "MOD Desktop", options=JackNoStartServer, status=0x7fffffffce8c)
at ../pipewire/pipewire-jack/src/pipewire-jack.c:4108
#8 0x000055555541cb04 in ?? ()
#9 0x0000555555419eea in ?? ()
#10 0x0000555555412751 in ?? ()
#11 0x000055555541979b in ?? ()
#12 0x000055555540edc0 in ?? ()
#13 0x00007ffff6634e08 in __libc_start_call_main (main=main@entry=0x55555540ed05, argc=argc@entry=1, argv=argv@entry=0x7fffffffda28)
at ../sysdeps/nptl/libc_start_call_main.h:58
#14 0x00007ffff6634ecc in __libc_start_main_impl (main=0x55555540ed05, argc=1, argv=0x7fffffffda28, init=<optimized out>,
fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffda18) at ../csu/libc-start.c:360
#15 0x000055555540eefa in ?? ()
those logs make it very much appear like a pipewire bug, some internal data consistency is failing. maybe it does not like that multiple clients are created from different threads?
tested on two different distros with the same issue. Must be pipewire-jack.
I tested different versions, the last version that doesn't have the segfault error is 0.7
Is there any recent news on this issue? Are there any workarounds available besides downgrading Pipewire?
I tested MOD Desktop on pipewire 1.4.1 with Manjaro Linux. ~~And I find there is no JACK/Pipewire entry on MOD Desktop.~~
~~I had hoped that pipewire would support MOD Desktop in a future release...~~
Works well on Manjaro with Pipewire1.4.1
I have a gdb to share. I tried this in Fedora 41 x86_64. Might be a good idea to produce a statically linked binary, IMHO.
renich@desktop:~/Downloads/plugins/mod-desktop-0.0.12-linux-x86_64/mod-desktop$ ldd mod-desktop
linux-vdso.so.1 (0x00007f4b03a58000)
libasound.so.2 => /lib64/libasound.so.2 (0x00007f4b036d3000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f4b03a4d000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f4b03a48000)
libQt5Widgets.so.5 => /lib64/libQt5Widgets.so.5 (0x00007f4b02e00000)
libQt5Gui.so.5 => /lib64/libQt5Gui.so.5 (0x00007f4b02600000)
libQt5Core.so.5 => /lib64/libQt5Core.so.5 (0x00007f4b02000000)
libm.so.6 => /lib64/libm.so.6 (0x00007f4b035ed000)
libc.so.6 => /lib64/libc.so.6 (0x00007f4b01e0d000)
/lib64/ld-linux-x86-64.so.2 (0x00007f4b03a5a000)
libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f4b01a00000)
libGL.so.1 => /lib64/libGL.so.1 (0x00007f4b03579000)
libpng16.so.16 => /lib64/libpng16.so.16 (0x00007f4b0353e000)
libz.so.1 => /lib64/libz.so.1 (0x00007f4b0351a000)
libharfbuzz.so.0 => /lib64/libharfbuzz.so.0 (0x00007f4b02ce4000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f4b02cb5000)
libsystemd.so.0 => /lib64/libsystemd.so.0 (0x00007f4b01d1a000)
libdouble-conversion.so.3 => /lib64/libdouble-conversion.so.3 (0x00007f4b03503000)
libicui18n.so.74 => /lib64/libicui18n.so.74 (0x00007f4b01600000)
libicuuc.so.74 => /lib64/libicuuc.so.74 (0x00007f4b0140b000)
libpcre2-16.so.0 => /lib64/libpcre2-16.so.0 (0x00007f4b01c87000)
libzstd.so.1 => /lib64/libzstd.so.1 (0x00007f4b0193c000)
libglib-2.0.so.0 => /lib64/libglib-2.0.so.0 (0x00007f4b012bc000)
libGLX.so.0 => /lib64/libGLX.so.0 (0x00007f4b02c84000)
libX11.so.6 => /lib64/libX11.so.6 (0x00007f4b01177000)
libXext.so.6 => /lib64/libXext.so.6 (0x00007f4b02c70000)
libGLdispatch.so.0 => /lib64/libGLdispatch.so.0 (0x00007f4b02587000)
libfreetype.so.6 => /lib64/libfreetype.so.6 (0x00007f4b010ac000)
libgraphite2.so.3 => /lib64/libgraphite2.so.3 (0x00007f4b02c50000)
libcap.so.2 => /lib64/libcap.so.2 (0x00007f4b01c7a000)
libicudata.so.74 => /lib64/libicudata.so.74 (0x00007f4aff200000)
libpcre2-8.so.0 => /lib64/libpcre2-8.so.0 (0x00007f4b0100c000)
libxcb.so.1 => /lib64/libxcb.so.1 (0x00007f4b00fe0000)
libbz2.so.1 => /lib64/libbz2.so.1 (0x00007f4b01c66000)
libbrotlidec.so.1 => /lib64/libbrotlidec.so.1 (0x00007f4b00fd2000)
libXau.so.6 => /lib64/libXau.so.6 (0x00007f4b034f5000)
libbrotlicommon.so.1 => /lib64/libbrotlicommon.so.1 (0x00007f4b00faf000)
renich@desktop:~/Downloads/plugins/mod-desktop-0.0.12-linux-x86_64/mod-desktop$ gdb ./mod-desktop
GNU gdb (Fedora Linux) 16.2-1.fc41
Copyright (C) 2024 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from ./mod-desktop...
This GDB supports auto-downloading debuginfo from the following URLs:
<https://debuginfod.fedoraproject.org/>
Enable debuginfod for this session? (y or [n]) y
Debuginfod has been enabled.
To make this setting permanent, add 'set debuginfod enabled on' to .gdbinit.
(No debugging symbols found in ./mod-desktop)
(gdb) run
Starting program: /home/renich/Downloads/plugins/mod-desktop-0.0.12-linux-x86_64/mod-desktop/mod-desktop
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
MOD Desktop DEBUG: jacklib syms 0x7ffff39b9fd0 0x7ffff39bea60 | 257 | using pipewire with filename '/usr/lib64/pipewire-0.3/jack/libjack.so.0'
[New Thread 0x7fffe534d6c0 (LWP 100247)]
QSocketNotifier: Can only be used with threads started with QThread
[New Thread 0x7fffdf73d6c0 (LWP 100249)]
[New Thread 0x7fffd6dff6c0 (LWP 100250)]
[New Thread 0x7fffdef3c6c0 (LWP 100251)]
[New Thread 0x7fffde6f16c0 (LWP 100252)]
[New Thread 0x7fffdd0de6c0 (LWP 100253)]
[New Thread 0x7fffd7fff6c0 (LWP 100254)]
[New Thread 0x7fffd77fe6c0 (LWP 100255)]
[New Thread 0x7fffd65fe6c0 (LWP 100256)]
--------------------------------------------------------
/usr/lib64/pipewire-0.3/jack/libjack.so.0 loaded successfully!
[New Thread 0x7fffd5dfd6c0 (LWP 100257)]
Thread 1 "mod-desktop" received signal SIGSEGV, Segmentation fault.
loop_queue_invoke (object=0x5555556e0f60, func=0x7fffdc4f3180 <do_rtkit_setup>, seq=0, data=0x0, size=0, block=false, user_data=0x7fffdc114940) at ../spa/plugins/support/loop.c:308
308 in_thread = (impl->thread == 0 || pthread_equal(impl->thread, pthread_self()));
(gdb) quit
A debugging session is active.
Inferior 1 [process 100243] will be killed.
Quit anyway? (y or n) y
I tested MOD Desktop on pipewire 1.4.1 with Manjaro Linux. And I find there is no JACK/Pipewire entry on MOD Desktop.
I had hoped that pipewire would support MOD Desktop in a future release...
it was fixed with pipewire 1.4.1 version, try running with pw-jack:
pw-jack /opt/mod-desktop-0.0.12-linux-x86_64/mod-desktop.run
Sadly, for now, Fedora 41 has v1.2.7.
I tried your recommendation @drvrtzv and it didn't work:
$ pw-jack ./mod-desktop
MOD Desktop DEBUG: jacklib syms 0x7f11c95c5fd0 0x7f11c95caa60 | 257 | using pipewire with filename '/usr/lib64/pipewire-0.3/jack/libjack.so.0'
QSocketNotifier: Can only be used with threads started with QThread
--------------------------------------------------------
/usr/lib64/pipewire-0.3/jack/libjack.so.0 loaded successfully!
Segmentation fault (core dumped)
Sadly, for now, Fedora 41 has v1.2.7.
I tried your recommendation @drvrtzv and it didn't work:
$ pw-jack ./mod-desktop MOD Desktop DEBUG: jacklib syms 0x7f11c95c5fd0 0x7f11c95caa60 | 257 | using pipewire with filename '/usr/lib64/pipewire-0.3/jack/libjack.so.0' QSocketNotifier: Can only be used with threads started with QThread
/usr/lib64/pipewire-0.3/jack/libjack.so.0 loaded successfully! Segmentation fault (core dumped)
you need to update fedora to 42 pre-release version which has pipewire 1.4.1
tumbleweed now has Pipewire 1.4.1 and mod-desktop launches without error.