Pipewire-Jack Segmentation Fault
Opened this issue · 12 comments
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.