mod-desktop icon indicating copy to clipboard operation
mod-desktop copied to clipboard

Pipewire-Jack Segmentation Fault

Open ghost opened this issue 1 year ago • 20 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.

ghost avatar Jun 30 '24 10:06 ghost

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.

xpufx avatar Jul 08 '24 17:07 xpufx

Exact same error as @naregderlevonian. It happens since I updated to pipewire 1.2.0.

Riebeck-one avatar Jul 10 '24 07:07 Riebeck-one

Same issue on Debian testing.

igorlakic avatar Jul 16 '24 16:07 igorlakic

Same here for me with the stand-alone app, but VST plugin seems to be working fine (it has its own bugs though).

magillos avatar Jul 21 '24 15:07 magillos

Same with pipewire-1.2.2 on Manjaro Linux.

Inqb8tr-jp avatar Aug 08 '24 04:08 Inqb8tr-jp

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.

jotuel avatar Sep 25 '24 11:09 jotuel

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...

falkTX avatar Sep 25 '24 12:09 falkTX

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]

magillos avatar Oct 05 '24 18:10 magillos

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 ?? ()

AngelBePro avatar Oct 27 '24 11:10 AngelBePro

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 ?? ()

CarloCattano avatar Nov 10 '24 08:11 CarloCattano

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?

falkTX avatar Nov 10 '24 09:11 falkTX

tested on two different distros with the same issue. Must be pipewire-jack.

nasedase avatar Dec 05 '24 09:12 nasedase

I tested different versions, the last version that doesn't have the segfault error is 0.7

nasedase avatar Jan 19 '25 02:01 nasedase

Is there any recent news on this issue? Are there any workarounds available besides downgrading Pipewire?

ghost avatar Mar 05 '25 19:03 ghost

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

Inqb8tr-jp avatar Mar 18 '25 10:03 Inqb8tr-jp

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

renich avatar Mar 23 '25 04:03 renich

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

drvrtzv avatar Mar 23 '25 05:03 drvrtzv

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)

renich avatar Mar 23 '25 11:03 renich

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

drvrtzv avatar Mar 23 '25 15:03 drvrtzv

tumbleweed now has Pipewire 1.4.1 and mod-desktop launches without error.

xpufx avatar Apr 21 '25 11:04 xpufx