Bug 1222081

Summary: Jamulus crashes since some time (no package update)
Product: [openSUSE] openSUSE Tumbleweed Reporter: Joachim Banzhaf <joachim.banzhaf>
Component: SoundAssignee: Takashi Iwai <tiwai>
Status: NEW --- QA Contact: E-mail List <qa-bugs>
Severity: Normal    
Priority: P5 - None CC: joachim.banzhaf
Version: Current   
Target Milestone: ---   
Hardware: x86-64   
OS: Linux   
Whiteboard:
Found By: --- Services Priority:
Business Priority: Blocker: ---
Marketing QA Status: --- IT Deployment: ---

Description Joachim Banzhaf 2024-03-27 15:40:46 UTC
Hi,

since approximately start of march 2024 jamulus provided by the opensuse tumbleweed distro crashes when run on my servers and notebooks. The pipewire soundsystem was updated in that timeframe but not the jamulus package. 
So I guess pipewire (or maybe sth else) came with new shared libs that are not compatible with the current jamulus build.

Fix for me was to do a self compile (git as of today):
```
sudo zypper in qt6-base-common-devel qt6-network-devel qt6-widgets-devel qt6-xml-devel qt6-concurrent-devel qt6-multimedia-devel qt6-tools-linguist
cd
git clone https://github.com/jamulussoftware/jamulus.git
cd jamulus
qmake6
make -j8
sudo make install
```

To update the services to use the self compiled version I did
```
sudo sed -i s@/usr/bin/Jamulus@/usr/local/bin/Jamulus@ /etc/systemd/system/jamulus-*.service
sudo systemctl daemon-reload
```

Please check and update the package, thank you!
Comment 1 Joachim Banzhaf 2024-03-27 15:47:42 UTC
Maybe this is relevant:


Libs used by distro version:

joachim@caba1:~> ldd /usr/bin/Jamulus
	linux-vdso.so.1 (0x00007ffc375ce000)
	libopus.so.0 => /lib64/libopus.so.0 (0x00007fdff5d7b000)
	libjack.so.0 => /usr/lib64/pipewire-0.3/jack/libjack.so.0 (0x00007fdff5d3c000)
	libQt5Widgets.so.5 => /lib64/libQt5Widgets.so.5 (0x00007fdff5600000)
	libQt5Multimedia.so.5 => /lib64/libQt5Multimedia.so.5 (0x00007fdff54f9000)
	libQt5Gui.so.5 => /lib64/libQt5Gui.so.5 (0x00007fdff4c00000)
	libQt5Network.so.5 => /lib64/libQt5Network.so.5 (0x00007fdff5343000)
	libQt5Xml.so.5 => /lib64/libQt5Xml.so.5 (0x00007fdff5cf4000)
	libQt5Core.so.5 => /lib64/libQt5Core.so.5 (0x00007fdff4600000)
	libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007fdff4200000)
	libm.so.6 => /lib64/libm.so.6 (0x00007fdff4519000)
	libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fdff44ec000)
	libc.so.6 => /lib64/libc.so.6 (0x00007fdff3e00000)
	libpipewire-0.3.so.0 => /lib64/libpipewire-0.3.so.0 (0x00007fdff411b000)
	/lib64/ld-linux-x86-64.so.2 (0x00007fdff608f000)
	libpulse.so.0 => /lib64/libpulse.so.0 (0x00007fdff4497000)
	libGL.so.1 => /lib64/libGL.so.1 (0x00007fdff408e000)
	libpng16.so.16 => /lib64/glibc-hwcaps/x86-64-v3/libpng16.so.16.43.0 (0x00007fdff4041000)
	libz.so.1 => /lib64/glibc-hwcaps/x86-64-v3/libz.so.1.3.1 (0x00007fdff4be6000)
	libharfbuzz.so.0 => /lib64/libharfbuzz.so.0 (0x00007fdff3cf2000)
	libproxy.so.1 => /lib64/libproxy.so.1 (0x00007fdff533e000)
	libssl.so.3 => /lib64/glibc-hwcaps/x86-64-v3/libssl.so.3.1.4 (0x00007fdff3c51000)
	libcrypto.so.3 => /lib64/glibc-hwcaps/x86-64-v3/libcrypto.so.3.1.4 (0x00007fdff3600000)
	libsystemd.so.0 => /lib64/libsystemd.so.0 (0x00007fdff3b6f000)
	libdouble-conversion.so.3 => /lib64/libdouble-conversion.so.3 (0x00007fdff4487000)
	libicui18n.so.73 => /lib64/libicui18n.so.73 (0x00007fdff3200000)
	libicuuc.so.73 => /lib64/libicuuc.so.73 (0x00007fdff2e00000)
	libpcre2-16.so.0 => /lib64/libpcre2-16.so.0 (0x00007fdff3ad0000)
	libzstd.so.1 => /lib64/glibc-hwcaps/x86-64-v3/libzstd.so.1.5.5 (0x00007fdff3553000)
	libglib-2.0.so.0 => /lib64/libglib-2.0.so.0 (0x00007fdff30b5000)
	libpulsecommon-17.0.so => /usr/lib64/pulseaudio/libpulsecommon-17.0.so (0x00007fdff302d000)
	libdbus-1.so.3 => /lib64/libdbus-1.so.3 (0x00007fdff2dad000)
	libGLX.so.0 => /lib64/libGLX.so.0 (0x00007fdff400f000)
	libGLdispatch.so.0 => /lib64/libGLdispatch.so.0 (0x00007fdff2cf6000)
	libfreetype.so.6 => /lib64/libfreetype.so.6 (0x00007fdff2c38000)
	libgraphite2.so.3 => /lib64/libgraphite2.so.3 (0x00007fdff4466000)
	libpxbackend-1.0.so => /usr/lib64/libproxy/libpxbackend-1.0.so (0x00007fdff4458000)
	libgobject-2.0.so.0 => /lib64/libgobject-2.0.so.0 (0x00007fdff2bd4000)
	libcap.so.2 => /lib64/libcap.so.2 (0x00007fdff4bd8000)
	libgcrypt.so.20 => /lib64/glibc-hwcaps/x86-64-v3/libgcrypt.so.20.4.3 (0x00007fdff2a89000)
	liblz4.so.1 => /lib64/glibc-hwcaps/x86-64-v3/liblz4.so.1.9.4 (0x00007fdff3009000)
	liblzma.so.5 => /lib64/glibc-hwcaps/x86-64-v3/liblzma.so.5.6.1 (0x00007fdff2a47000)
	libicudata.so.73 => /lib64/libicudata.so.73 (0x00007fdff400a000)
	libpcre2-8.so.0 => /lib64/libpcre2-8.so.0 (0x00007fdff299b000)
	libsndfile.so.1 => /lib64/libsndfile.so.1 (0x00007fdff2915000)
	libxcb.so.1 => /lib64/libxcb.so.1 (0x00007fdff28e9000)
	libX11.so.6 => /lib64/libX11.so.6 (0x00007fdff27a3000)
	libbz2.so.1 => /lib64/glibc-hwcaps/x86-64-v3/libbz2.so.1.0.6 (0x00007fdff278a000)
	libbrotlidec.so.1 => /lib64/glibc-hwcaps/x86-64-v3/libbrotlidec.so.1.1.0 (0x00007fdff277c000)
	libcurl.so.4 => /lib64/libcurl.so.4 (0x00007fdff26bd000)
	libgio-2.0.so.0 => /lib64/libgio-2.0.so.0 (0x00007fdff24cf000)
	libduktape.so.207 => /lib64/libduktape.so.207 (0x00007fdff2484000)
	libffi.so.8 => /lib64/libffi.so.8 (0x00007fdff2479000)
	libgpg-error.so.0 => /lib64/libgpg-error.so.0 (0x00007fdff2453000)
	libogg.so.0 => /lib64/libogg.so.0 (0x00007fdff2449000)
	libvorbisenc.so.2 => /lib64/glibc-hwcaps/x86-64-v3/libvorbisenc.so.2.0.12 (0x00007fdff239e000)
	libFLAC.so.12 => /lib64/glibc-hwcaps/x86-64-v3/libFLAC.so.12.1.0 (0x00007fdff233b000)
	libspeex.so.1 => /lib64/libspeex.so.1 (0x00007fdff231f000)
	libvorbis.so.0 => /lib64/glibc-hwcaps/x86-64-v3/libvorbis.so.0.4.9 (0x00007fdff22f1000)
	libXau.so.6 => /lib64/libXau.so.6 (0x00007fdff3ac9000)
	libbrotlicommon.so.1 => /lib64/glibc-hwcaps/x86-64-v3/libbrotlicommon.so.1.1.0 (0x00007fdff22ce000)
	libnghttp2.so.14 => /lib64/libnghttp2.so.14 (0x00007fdff22a2000)
	libidn2.so.0 => /lib64/libidn2.so.0 (0x00007fdff2280000)
	libssh.so.4 => /lib64/libssh.so.4 (0x00007fdff220f000)
	libpsl.so.5 => /lib64/libpsl.so.5 (0x00007fdff21fb000)
	libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x00007fdff21a7000)
	libldap.so.2 => /lib64/libldap.so.2 (0x00007fdff2145000)
	liblber.so.2 => /lib64/liblber.so.2 (0x00007fdff2134000)
	libgmodule-2.0.so.0 => /lib64/libgmodule-2.0.so.0 (0x00007fdff212d000)
	libmount.so.1 => /lib64/libmount.so.1 (0x00007fdff20e1000)
	libselinux.so.1 => /lib64/libselinux.so.1 (0x00007fdff20b3000)
	libunistring.so.5 => /lib64/libunistring.so.5 (0x00007fdff1efe000)
	libkrb5.so.3 => /lib64/libkrb5.so.3 (0x00007fdff1e2f000)
	libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x00007fdff1e17000)
	libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00007fdff1e11000)
	libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x00007fdff1e02000)
	libsasl2.so.3 => /lib64/libsasl2.so.3 (0x00007fdff1de3000)
	libblkid.so.1 => /lib64/libblkid.so.1 (0x00007fdff1da8000)
	libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00007fdff1da1000)
	libresolv.so.2 => /lib64/libresolv.so.2 (0x00007fdff1d90000)


Libs used by self compiled version 

joachim@caba1:~> ldd /usr/local/bin/Jamulus
	linux-vdso.so.1 (0x00007ffc9f0c2000)
	libjack.so.0 => /usr/lib64/pipewire-0.3/jack/libjack.so.0 (0x00007f796f72e000)
	libQt6Widgets.so.6 => /usr/lib64/libQt6Widgets.so.6 (0x00007f796ee00000)
	libQt6Multimedia.so.6 => /usr/lib64/libQt6Multimedia.so.6 (0x00007f796f639000)
	libQt6Gui.so.6 => /usr/lib64/libQt6Gui.so.6 (0x00007f796e400000)
	libQt6Network.so.6 => /usr/lib64/libQt6Network.so.6 (0x00007f796e267000)
	libQt6Xml.so.6 => /usr/lib64/libQt6Xml.so.6 (0x00007f796f60f000)
	libQt6Core.so.6 => /usr/lib64/libQt6Core.so.6 (0x00007f796dc00000)
	libGL.so.1 => /usr/lib64/libGL.so.1 (0x00007f796f582000)
	libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f796d800000)
	libm.so.6 => /usr/lib64/libm.so.6 (0x00007f796ed19000)
	libgcc_s.so.1 => /usr/lib64/libgcc_s.so.1 (0x00007f796ecec000)
	libc.so.6 => /usr/lib64/libc.so.6 (0x00007f796d400000)
	libpipewire-0.3.so.0 => /lib64/libpipewire-0.3.so.0 (0x00007f796db1b000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f796f78d000)
	libpulse.so.0 => /lib64/libpulse.so.0 (0x00007f796ec97000)
	libEGL.so.1 => /usr/lib64/libEGL.so.1 (0x00007f796ec85000)
	libfontconfig.so.1 => /usr/lib64/libfontconfig.so.1 (0x00007f796e218000)
	libX11.so.6 => /usr/lib64/libX11.so.6 (0x00007f796d6ba000)
	libglib-2.0.so.0 => /usr/lib64/libglib-2.0.so.0 (0x00007f796d2b5000)
	libQt6DBus.so.6 => /usr/lib64/libQt6DBus.so.6 (0x00007f796da61000)
	libxkbcommon.so.0 => /usr/lib64/libxkbcommon.so.0 (0x00007f796d670000)
	libGLX.so.0 => /usr/lib64/libGLX.so.0 (0x00007f796d63e000)
	libOpenGL.so.0 => /usr/lib64/libOpenGL.so.0 (0x00007f796d611000)
	libpng16.so.16 => /usr/lib64/glibc-hwcaps/x86-64-v3/libpng16.so.16 (0x00007f796d268000)
	libharfbuzz.so.0 => /usr/lib64/libharfbuzz.so.0 (0x00007f796d15a000)
	libfreetype.so.6 => /usr/lib64/libfreetype.so.6 (0x00007f796d09c000)
	libz.so.1 => /usr/lib64/glibc-hwcaps/x86-64-v3/libz.so.1 (0x00007f796d082000)
	libzstd.so.1 => /usr/lib64/glibc-hwcaps/x86-64-v3/libzstd.so.1 (0x00007f796cfd5000)
	libgssapi_krb5.so.2 => /usr/lib64/libgssapi_krb5.so.2 (0x00007f796cf81000)
	libbrotlidec.so.1 => /usr/lib64/glibc-hwcaps/x86-64-v3/libbrotlidec.so.1 (0x00007f796cf73000)
	libproxy.so.1 => /usr/lib64/libproxy.so.1 (0x00007f796ec80000)
	libcrypto.so.3 => /usr/lib64/glibc-hwcaps/x86-64-v3/libcrypto.so.3 (0x00007f796ca00000)
	libicui18n.so.73 => /usr/lib64/libicui18n.so.73 (0x00007f796c600000)
	libicuuc.so.73 => /usr/lib64/libicuuc.so.73 (0x00007f796c200000)
	libsystemd.so.0 => /usr/lib64/libsystemd.so.0 (0x00007f796c51e000)
	libdouble-conversion.so.3 => /usr/lib64/libdouble-conversion.so.3 (0x00007f796cf63000)
	libb2.so.1 => /usr/lib64/libb2.so.1 (0x00007f796e20f000)
	libpcre2-16.so.0 => /usr/lib64/libpcre2-16.so.0 (0x00007f796c961000)
	libGLdispatch.so.0 => /lib64/libGLdispatch.so.0 (0x00007f796c467000)
	libpulsecommon-17.0.so => /usr/lib64/pulseaudio/libpulsecommon-17.0.so (0x00007f796cedb000)
	libdbus-1.so.3 => /lib64/libdbus-1.so.3 (0x00007f796c414000)
	libexpat.so.1 => /lib64/libexpat.so.1 (0x00007f796c1d4000)
	libxcb.so.1 => /lib64/libxcb.so.1 (0x00007f796c1a8000)
	libpcre2-8.so.0 => /lib64/libpcre2-8.so.0 (0x00007f796c0fc000)
	libgraphite2.so.3 => /lib64/libgraphite2.so.3 (0x00007f796c0db000)
	libbz2.so.1 => /lib64/glibc-hwcaps/x86-64-v3/libbz2.so.1.0.6 (0x00007f796c0c2000)
	libkrb5.so.3 => /lib64/libkrb5.so.3 (0x00007f796bff3000)
	libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x00007f796bfdb000)
	libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00007f796da5b000)
	libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x00007f796cecc000)
	libbrotlicommon.so.1 => /lib64/glibc-hwcaps/x86-64-v3/libbrotlicommon.so.1.1.0 (0x00007f796bfb8000)
	libpxbackend-1.0.so => /usr/lib64/libproxy/libpxbackend-1.0.so (0x00007f796c953000)
	libgobject-2.0.so.0 => /lib64/libgobject-2.0.so.0 (0x00007f796bf54000)
	libicudata.so.73 => /lib64/libicudata.so.73 (0x00007f796da58000)
	libcap.so.2 => /lib64/libcap.so.2 (0x00007f796d605000)
	libgcrypt.so.20 => /lib64/glibc-hwcaps/x86-64-v3/libgcrypt.so.20.4.3 (0x00007f796be09000)
	liblz4.so.1 => /lib64/glibc-hwcaps/x86-64-v3/liblz4.so.1.9.4 (0x00007f796bde5000)
	liblzma.so.5 => /lib64/glibc-hwcaps/x86-64-v3/liblzma.so.5.6.1 (0x00007f796bda3000)
	libgomp.so.1 => /lib64/libgomp.so.1 (0x00007f796bd4d000)
	libsndfile.so.1 => /lib64/libsndfile.so.1 (0x00007f796bcc7000)
	libXau.so.6 => /lib64/libXau.so.6 (0x00007f796c94e000)
	libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00007f796c40d000)
	libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f796bcb6000)
	libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f796bc88000)
	libcurl.so.4 => /lib64/libcurl.so.4 (0x00007f796bbc9000)
	libgio-2.0.so.0 => /lib64/libgio-2.0.so.0 (0x00007f796b9db000)
	libduktape.so.207 => /lib64/libduktape.so.207 (0x00007f796b990000)
	libffi.so.8 => /lib64/libffi.so.8 (0x00007f796b985000)
	libgpg-error.so.0 => /lib64/libgpg-error.so.0 (0x00007f796b95f000)
	libogg.so.0 => /lib64/libogg.so.0 (0x00007f796b955000)
	libvorbisenc.so.2 => /lib64/glibc-hwcaps/x86-64-v3/libvorbisenc.so.2.0.12 (0x00007f796b8aa000)
	libFLAC.so.12 => /lib64/glibc-hwcaps/x86-64-v3/libFLAC.so.12.1.0 (0x00007f796b847000)
	libspeex.so.1 => /lib64/libspeex.so.1 (0x00007f796b82b000)
	libopus.so.0 => /lib64/libopus.so.0 (0x00007f796b7c4000)
	libvorbis.so.0 => /lib64/glibc-hwcaps/x86-64-v3/libvorbis.so.0.4.9 (0x00007f796b796000)
	libnghttp2.so.14 => /lib64/libnghttp2.so.14 (0x00007f796b76a000)
	libidn2.so.0 => /lib64/libidn2.so.0 (0x00007f796b748000)
	libssh.so.4 => /lib64/libssh.so.4 (0x00007f796b6d7000)
	libpsl.so.5 => /lib64/libpsl.so.5 (0x00007f796b6c3000)
	libssl.so.3 => /lib64/glibc-hwcaps/x86-64-v3/libssl.so.3.1.4 (0x00007f796b622000)
	libldap.so.2 => /lib64/libldap.so.2 (0x00007f796b5c0000)
	liblber.so.2 => /lib64/liblber.so.2 (0x00007f796b5af000)
	libgmodule-2.0.so.0 => /lib64/libgmodule-2.0.so.0 (0x00007f796b5a8000)
	libmount.so.1 => /lib64/libmount.so.1 (0x00007f796b55a000)
	libunistring.so.5 => /lib64/libunistring.so.5 (0x00007f796b3a5000)
	libsasl2.so.3 => /lib64/libsasl2.so.3 (0x00007f796b386000)
	libblkid.so.1 => /lib64/libblkid.so.1 (0x00007f796b34b000)


* Note 1: self compiled uses QT6 while rpm uses QT5
* Note 2: both use directory /usr/lib64/pipewire-0.3 although pipewire is at 1.0.4
Comment 2 Joachim Banzhaf 2024-03-27 15:54:28 UTC
This is how a crash looks like. Last line appears at the moment I press the button to connect to a server

joachim@caba1:~> /usr/bin/Jamulus
- allocated port number: 22134
Connecting to JACK "default" instance (use the JACK_DEFAULT_SERVER environment variable to change this).
DRI3 not available
Segmentation fault (core dumped)
Comment 3 Takashi Iwai 2024-03-27 16:09:15 UTC
Could you try to get the stack trace?  Either invoking from gdb or gathering the core file.  Without that info, it's hard to track what's going on.
Comment 4 Joachim Banzhaf 2024-03-27 16:31:53 UTC
Thread 9 "pw-data-loop" received signal SIGSEGV, Segmentation fault.

...

(gdb) backtrace
#0  0x00007ffff7f48f86 in  () at /lib64/libopus.so.0
#1  0x00007ffff7f4ac6d in  () at /lib64/libopus.so.0
#2  0x00007ffff7f51882 in opus_custom_encode () at /lib64/libopus.so.0
#3  0x000055555561077e in CClient::ProcessAudioDataIntern(CVector<short>&)
    (this=0x7ffffffab7d0, vecsStereoSndCrd=<optimized out>) at src/client.cpp:1263
#4  0x0000555555611493 in CClient::ProcessSndCrdAudioData(CVector<short>&)
    (vecsStereoSndCrd=..., this=0x7ffffffab7d0) at src/client.cpp:1158
#5  CClient::ProcessSndCrdAudioData(CVector<short>&) (vecsStereoSndCrd=..., this=0x7ffffffab7d0)
    at src/client.cpp:1143
#6  CClient::AudioCallback(CVector<short>&, void*) (psData=..., arg=0x7ffffffab7d0) at src/client.cpp:1132
#7  0x00005555555a34d4 in CSoundBase::ProcessCallback(CVector<short>&) (psData=..., this=0x7ffffffac1e0)
    at src/sound/jack/../soundbase.h:151
#8  CSound::process(unsigned int, void*) (nframes=1024, arg=0x7ffffffac1e0) at src/sound/jack/sound.cpp:257
#9  0x00007ffff7f125d6 in  () at /usr/lib64/pipewire-0.3/jack/libjack.so.0
#10 0x00007ffff3f1e08e in  () at /usr/lib64/spa-0.2/support/libspa-support.so
#11 0x00007ffff6562db4 in  () at /lib64/libpipewire-0.3.so.0
#12 0x00007ffff5e92bb2 in start_thread () at /lib64/libc.so.6
#13 0x00007ffff5f1400c in clone3 () at /lib64/libc.so.6
Comment 5 Takashi Iwai 2024-04-02 11:53:55 UTC
Thanks.  It looks like the code path via JACK callback.  Can it be some inconsistency with opus?

You can try downgrading the pipewire packages from OBS TW history repo
  http://download.opensuse.org/history/

If this works, it's concluded as a regression there.
Comment 6 Joachim Banzhaf 2024-04-03 13:12:01 UTC
I'm not near the PCs to test this week.
Not sure if the 1 month history is enough once I could do the downgrade, but if it helps fixing, I can try.
Anyways, I'd rather try a new build of the unchanged jamulus if there is a build server/rpm for that? I mean, a simple recompile already fixed it for me, so probably not worth the time to play detective.
Comment 7 Joachim Banzhaf 2024-04-18 20:02:49 UTC
I didn’t find time to test older versions but made the update to 3.10.0-1.3 when it appeared. It still crashes so I continue using the working self compiled version for now.
Comment 8 Joachim Banzhaf 2024-04-19 16:09:31 UTC
also updated to latest libopus today -> libopus0-1.5.2-1.1.x86_64

No change: distro Jamulus crashes on connect to server while self compiled works fine.