savonet/liquidsoap

Segmentation fault on Bookworm after upgrade

srs4511351 opened this issue · 72 comments

Describe the bug
After a recent package upgrade, liquidsoap terminates with Segmentation fault. It worked before the upgrades.

To Reproduce
Upgrade to the latest packages, then run any liquidsoap command

dietpi@DietPi:~$ liquidsoap --version
Segmentation fault

Expected behavior
I should see version information.

Version details
liquidsoap/stable,now 2.1.3-2 arm64

  • OS: DietPi Debian GNU/Linux 12 (bookworm)
  • Version: DietPi v8.23.3

Install method
Installed with apt

Common issues
Can't decode or encode in some audio format? Check if you have installed the correct dependencies

The package dependencies are listed below. The packages with versions listed were upgraded.
adduser
curl Patched
libcamomile-ocaml-data
ocaml-base
sox
libao4
libasound2 libasound2 arm64 1.2.8-1+rpt1
libavcodec59 ibavcodec59 arm64 8:5.1.3-1+rpt4
libavdevice59 libavdevice59 arm64 8:5.1.3-1+rpt4
libavfilter8 libavfilter8 arm64 8:5.1.3-1+rpt4
libavformat59 libavformat59 arm64 8:5.1.3-1+rpt4
libavutil57 libavutil57 arm64 8:5.1.3-1+rpt4
libc6 libc6-dev arm64 2.36-9+rpt2+deb12u3
libcurl3-gnutls
libexif12
libfaad2
libflac12
libfreetype6
libgcc-s1
libgd3
libgif7
libglib2.0-0 libglib2.0-0:arm64 (2.74.6-2) (probably not upgraded)
libgstreamer-plugins-base1.0-0
libgstreamer1.0-0
libjack-jackd2-0 (>= 1.9.10+20150825) | libjack-0.125
libjpeg62-turbo
liblo7
libmad0
libmagic1
libmp3lame0
libogg0
libopus0
libpcre3
libpng16-16
libportaudio2
libpulse0 libpulse0 arm64 16.1+dfsg1-2+rpt1
libsamplerate0
libshine3
libsoundtouch1
libspeex1
libssl3
libstdc++6
libswresample4 libswresample4 arm64 8:5.1.3-1+rpt4
libswscale6 libswscale6 arm64 8:5.1.3-1+rpt4
libtag1v5
libtheora0
libtiff6
libvorbis0a
libvorbisenc2
libvorbisfile3
libx11-6
libxpm4

toots commented

Hi,

Thanks for reporting. Have you every used gdb?

% gdb /path/to/liquidsoap
> run --version
...crashes...
> thread apply all bt

Here is the output from the terminal

Starting program: /usr/bin/liquidsoap --version
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/aarch64-linux-gnu/libthread_db.so.1".
[New Thread 0x7fe64fd4c0 (LWP 2600)]
[New Thread 0x7fe5ced4c0 (LWP 2601)]
[New Thread 0x7fe14dd4c0 (LWP 2602)]

Thread 1 "liquidsoap" received signal SIGSEGV, Segmentation fault.
0x0000007ff3f4b710 in ?? () from /lib/aarch64-linux-gnu/libc.so.6
(gdb) thread apply all bt

Thread 4 (Thread 0x7fe14dd4c0 (LWP 2602) "liquidsoap"):
#0  0x0000007ff3f8088c in sched_yield () at /lib/aarch64-linux-gnu/libc.so.6
#1  0x0000007fe8cef1b8 in  () at /lib/aarch64-linux-gnu/libopenblas.so.0
#2  0x0000007ff3f2ee18 in  () at /lib/aarch64-linux-gnu/libc.so.6
#3  0x0000007ff3f97e9c in  () at /lib/aarch64-linux-gnu/libc.so.6

Thread 3 (Thread 0x7fe5ced4c0 (LWP 2601) "liquidsoap"):
#0  0x0000007ff3f8088c in sched_yield () at /lib/aarch64-linux-gnu/libc.so.6
#1  0x0000007fe8cef1b8 in  () at /lib/aarch64-linux-gnu/libopenblas.so.0
#2  0x0000007ff3f2ee18 in  () at /lib/aarch64-linux-gnu/libc.so.6
#3  0x0000007ff3f97e9c in  () at /lib/aarch64-linux-gnu/libc.so.6

Thread 2 (Thread 0x7fe64fd4c0 (LWP 2600) "liquidsoap"):
#0  0x0000007ff3f8088c in sched_yield () at /lib/aarch64-linux-gnu/libc.so.6
#1  0x0000007fe8cef1b8 in  () at /lib/aarch64-linux-gnu/libopenblas.so.0
#2  0x0000007ff3f2ee18 in  () at /lib/aarch64-linux-gnu/libc.so.6
#3  0x0000007ff3f97e9c in  () at /lib/aarch64-linux-gnu/libc.so.6

Thread 1 (Thread 0x7fe650e040 (LWP 2592) "liquidsoap"):
#0  0x0000007ff3f4b710 in  () at /lib/aarch64-linux-gnu/libc.so.6
#1  0x0000005556354548 in caml_copy_string ()
#2  0x00000055562fb9a0 in ocaml_avfilter_alloc_pads ()
--Type <RET> for more, q to quit, c to continue without paging--c
#3  0x00000055562fbb7c in ocaml_avfilter_get_all_filters ()
#4  0x0000005556371fa4 in caml_c_call ()
#5  0x000000555614fb74 in camlAvfilter__entry ()
#6  0x0000005555d20654 in caml_program ()
#7  0x0000005556372014 in caml_start_program ()
#8  0x000000555634dc5c in caml_startup_common ()
#9  0x000000555634dcd0 in caml_main ()
#10 0x0000005555d1f390 in main ()
(gdb) 

I hope this is good.

----Steve

toots commented

Woof thank. How did you install? It looks like something is wrong with the ffmpeg binding. Maybe recompile it. Also, is there a change you might have more than one copy of the ffmpeg libraries intalled on the system?

Only ffmpeg/stable,now 8:5.1.3-1+rpt4 arm64 [installed]
I installed with apt. It worked afterward.
It only failed after the upgrades. This happens on DietPi Bookworm and Raspberry Pi OS Bookworm. There is another post to that effect on the Raspberry Pi OS forum.
These are somewhat recent updates.

It also fails on
liquidsoap-e1f7023_2.2.2-debian-bookworm-1_arm64.deb
I also tried liquidsoap_2.2.1-debian-bookworm-1_arm64.deb

----Steve

Should I try to downgrade ffmpeg?
It was upgraded, but I didn't see in in the part of the list I looked at, so I missed it.
ffmpeg arm64 8:5.1.3-1+rpt4 [1795 kB]

I installed liquidsoap 2.1.3-2 arm64 on a new DietPi Bookworm OS with apt-get using the supplied package.
It did not install, suggest or recommend ffmpeg. ffmpeg is not installed.
I still get the Segmentation fault.

Here is the gdb output from this installation:

Reading symbols from /usr/bin/liquidsoap...
(No debugging symbols found in /usr/bin/liquidsoap)
(gdb) run --version
Starting program: /usr/bin/liquidsoap --version
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/aarch64-linux-gnu/libthread_db.so.1".

Program received signal SIGSEGV, Segmentation fault.
0x0000007ff3f6b710 in ?? () from /lib/aarch64-linux-gnu/libc.so.6
(gdb) thread apply all bt

Thread 1 (Thread 0x7ff7c53040 (LWP 4159) "liquidsoap"):
#0  0x0000007ff3f6b710 in ?? () from /lib/aarch64-linux-gnu/libc.so.6
#1  0x0000005556354548 in caml_copy_string ()
#2  0x00000055562fb9a0 in ocaml_avfilter_alloc_pads ()
#3  0x00000055562fbb7c in ocaml_avfilter_get_all_filters ()
#4  0x0000005556371fa4 in caml_c_call ()
#5  0x000000555614fb74 in camlAvfilter__entry ()
#6  0x0000005555d20654 in caml_program ()
#7  0x0000005556372014 in caml_start_program ()
#8  0x000000555634dc5c in caml_startup_common ()
#9  0x000000555634dcd0 in caml_main ()
#10 0x0000005555d1f390 in main ()

----Steve

toots commented

Thanks for these details. Our builds have switched to the debian multimedia ffmpeg packages to have builtin fdkaac. I suspect the segfault could be due to a ABI difference between the two.

Would you be able to install the ffmpeg package from https://deb-multimedia.org/ and try again?

Is there a particular version I should try for Debian Bookworm?
Sometimes the package dependencies require specific versions.

Does liqiudsoap require ffmpeg?
When I install the package, it does not install ffmpeg. It does not suggest or recommend ffmpeg.

On https://deb-multimedia.org/ I found ffmpeg (10:6.0-dmo6) - arm64 - Stable/bullseye
ffmpeg_4.4.4-dmo0+deb11u1_arm64.deb
I will try this one.

The package dependency versions are compatible with my Bullseye system.
The one listed for Bullseye uses newer dependencies.

Edit: there are no packages on https://deb-multimedia.org/ that work with my packages. ffmpeg_4.4.4-dmo0+deb11u1_arm64 is in theory compatible, but one of the required packages has dependency problems.

With a Bookworm installed from an image from https://raspi.debian.net/tested-images/
These packages work:
liquidsoap 2.1.3-2 arm64
ffmpeg 7:5.1.3-1 arm64

DietPi Bookworm had
liquidsoap 2.1.3-2 arm64 (works on the Debian system above)
and
ffmpeg 8:5.1.3-1+rpt4 arm64
It faults with these packages.
I downgraded ffmpeg to:
ffmpeg 7:5.1.3-1 arm64
It still faults, with the same 2 packages as the Debian system.

On one DietPi system, I removed the ffmpeg package and installed it from source.
It still faults.

It looks to me like it's something other that ffmpeg.
liquidsoap faults on a system that has never had ffmpeg installed.
The same versions work on another system.
Installing ffmpeg from source does not work.
Another user reports the same problem on the Raspberry Pi forum
https://forums.raspberrypi.com/search.php?keywords=liquidsoap&sid=8ee93e3d44f03092738ed8e898e33156
There will be more.

The problem clearly happens after the latest large batch of package upgrades.

I could try installing liquidsoap from source, but that would be a big task.

toots commented

I was using ffmpeg as an easy way to talk about dependencies. In fact, yes, ffmpeg is not a dependency of liquidsoap but the various shared libraries that comes with it (libavformat, libavcodec, etc) are.

I'm gonna have to have a look at the packages themselves. The versions have different debian epoch (7 in 7:5.1.3-1 vs. 8 in 8:5.1.3-1+rpt4) which potentially indicates a different package.

Our goal with the binary packages we distribute is that they work with the standard packages of the regular distribution, here debian/bookworm.

If the derived distribution has custom packages that do not work with our binary build, I'm afraid we won't have enough development time to handle situations like that, in which case I would recommend building the binary yourself, indeed.

I removed ffmpeg from the debian.net system and liquidsoap did run.
There are indeed big changes in the package versions. apt is saying:
Repository 'http://deb.debian.org/debian bookworm InRelease' changed its 'Version' value from '12.1' to '12.2'
Please let me know whether or not you have time to fix things. If not. I will attempt to build liquidsoap myself.

----Steve

Hi @srs4511351,
So you are basically using a mix of different repositories?

  1. Could you post a comprehensive list of the sources you use?
    • cat /etc/apt/sources.list /etc/apt/sources.list.d/*.list /etc/apt/sources.list.d/*.sources > sources
    • cat /etc/apt/preferences /etc/apt/preferences.d/* > preferences
      The result is stored in the sources and preferences files.
  2. Could you post a list of installed packages?
    • dpkg -l > packages
    • apt list ?obsolete > obsolete
      The result will be stored in the packages and obsolete files.

I am using the default sources that came with the OS.
Repository 'http://deb.debian.org/debian bookworm InRelease' changed its 'Version' value from '12.1' to '12.2'
Means that they changed repositories to a newer version.

I renamed the files to *.txt as files without an extension are not supported.

sources.txt
preferences.txt
packages.txt
obsolete.txt

toots commented

Hi @srs4511351. It's possible that the 2.1.3 build is outdate w.r.t. the latest ABI shipped by debian bookworm.

One thing you could try is install the latest build from https://github.com/savonet/liquidsoap/releases/tag/rolling-release-v2.2.x and see it this one works.

Here's the one I tried.
sudo dpkg -i liquidsoap-3dc336b_2.2.2-debian-bookworm-1_arm64.deb

It installed with no dependency complaints.

dietpi@DietPi:~/Downloads$ /usr/bin/liquidsoap --version
Segmentation fault

@toots,

@srs4511351,
I'm curious if it's possible to use raspberry without deb https://archive.raspberrypi.org/debian/ bookworm main.

My idea is to:

  1. Downgrade the versions of the libraries by pinning the deb.debian.org with priority 1000.
  2. Keep liquidsoap from deb.debian.org and test if it crashes.
  3. Try liquidsoap from the release artifacts.
  4. Try deb https://www.deb-multimedia.org bookworm main non-free with liquidsoap from release artifacts.

The backup plan is to compile from opam.

I think that deb https://archive.raspberrypi.org/debian/ bookworm main contains firmware, Raspberry Pi utilities, etc.
I could remove it from /etc/apt/sources.list.d/raspi.list if the existing firmware remains, but there would be no upgrades.

I do not know how to pin the deb.debian.org with priority 1000.
I can add deb https://www.deb-multimedia.org bookworm main non-free. Do I just add it to /etc/apt/sources.list, or do I need to remove the other lines in the file?

Then sudo apt update and sudo apt upgrade ?

I hope this is just a test. A permanent solution would be more transparent to the user.
Remember, it worked before the recent set of upgrades, so a downgrade may fix it.

I have a system installed from debian.net where liquidsoap works if you want to compare to that.

@srs4511351, if tampering with packages makes the system unbootable, do you have a solution to restore the current state of the system?

Yes, I have several other installations I can just swap in by changing the SD card.

I did a quick try...
renamed /etc/apt/sources.list.d/raspi.list
apt update/upgrade

The following packages will be upgraded:
libspeechd2 speech-dispatcher speech-dispatcher-audio-plugins
speech-dispatcher-espeak

liquidsoap
Segmentation fault

I added this to /etc/apt/preferences.d/dietpi-lxde
Pin: origin deb.debian.org
Pin-Priority: 1000

I added this to /etc/apt/sources.list
deb https://www.deb-multimedia.org bookworm main non-free

sudo apt update

Get:5 https://www.deb-multimedia.org bookworm InRelease [18.5 kB]
Err:5 https://www.deb-multimedia.org bookworm InRelease
The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 5C808C2B65558117
Reading package lists... Done
W: GPG error: https://www.deb-multimedia.org bookworm InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 5C808C2B65558117
E: The repository 'https://www.deb-multimedia.org bookworm InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.

  1. /etc/apt/preferences.d/debian.pref
    Package: *  
    Pin: origin deb.debian.org
    Pin-Priority: 1000
    
  2. /etc/apt/sources.list
    deb https://deb.debian.org/debian/ bookworm main contrib non-free non-free-firmware
    deb https://deb.debian.org/debian/ bookworm-updates main contrib non-free non-free-firmware
    deb https://deb.debian.org/debian-security/ bookworm-security main contrib non-free non-free-firmware
    deb https://deb.debian.org/debian/ bookworm-backports main contrib non-free non-free-firmware
    
  3. apt-get update
  4. apt-get dist-upgrade

So did this in effect remove the archive.raspberrypi.org/debian packages and use the debian ones?
Some were upgraded and MANY were downgraded.

liquidsoap no longer faults. I assume that this is restored to how it was before the recent upgrades.
If it is due to the raspberrypi.org packages, I would like for you to work with them to fix this properly.

This is the state of current Debian without any changes introduced by a raspberry repo.
From this state I would like to continue testing with the liquidsoap from release artifacts and later deb-multimedia.

OK, what do we do next?

  1. Download and install liquidsoap from the latest release artifact.
    2.2.1 will also work.
    Test it thoroughly to see if it works for you.
  2. Add deb-multimedia.
    wget https://www.deb-multimedia.org/pool/main/d/deb-multimedia-keyring/deb-multimedia-keyring_2016.8.1_all.deb
    echo '9faa6f6cba80aeb69c9bac139b74a3d61596d4486e2458c2c65efe9e21ff3c7d  deb-multimedia-keyring_2016.8.1_all.deb' | sha256sum -c -
    apt-get install ./deb-multimedia-keyring_2016.8.1_all.deb
    echo 'deb https://www.deb-multimedia.org bookworm main non-free' > /etc/apt/sources.list.d/deb-multimedia.list
    rm /etc/apt/preferences.d/debian.pref
    apt-get update
    apt-get dist-upgrade
    Test liquidsoap.

This is working for my application. It's op25, police scanner, used for compression and normalization.
I am hearing it on the same computer as the P25 scanner.

The raspberypi.org source is still disabled.

Have you tested deb-multimedia?

The raspberypi.org source is still disabled.

I'm thinking about the smoothest way to enable it without breaking everything else.

Yes, it is working after your instructions containing
echo 'deb https://www.deb-multimedia.org bookworm main non-free' > /etc/apt/sources.list.d/deb-multimedia.list

How do I know if it is the one from deb-multimedia?
They all seem to be the same version...

liquidsoap --version
Liquidsoap 2.1.3
Copyright (c) 2003-2022 Savonet team
Liquidsoap is open-source software, released under GNU General Public License.
See http://liquidsoap.info for more information.

How do I know if it is the one from deb-multimedia?

dpkg --list | grep libavcodec
It should be some of libavcodec-4-dev, libavcodec-5-dev, libavcodec-dev, libavcodec58, libavcodec59, libavcodec60.

For example, there will be libavcodec59, then you check apt-cache policy libavcodec59.

dpkg --list | grep libavcodec
ii libavcodec-dev:arm64 10:6.0-dmo6 arm64 Library to encode decode multimedia streams - devel files
ii libavcodec59:arm64 10:5.1.3-dmo5 arm64 Library to encode decode multimedia streams - runtime files
ii libavcodec60:arm64 10:6.0-dmo6 arm64 Library to encode decode multimedia streams - runtime files

apt-cache policy libavcodec59
libavcodec59:
Installed: 10:5.1.3-dmo5
Candidate: 10:5.1.3-dmo5
Version table:
*** 10:5.1.3-dmo5 500
500 https://www.deb-multimedia.org bookworm/main arm64 Packages
100 /var/lib/dpkg/status
7:5.1.3-1 500
500 https://deb.debian.org/debian bookworm/main arm64 Packages

More than one version is installed
apt list -a libavcodec* | grep installed
libavcodec-dev/stable,now 10:6.0-dmo6 arm64 [installed]
libavcodec59/stable,now 10:5.1.3-dmo5 arm64 [installed,automatic]
libavcodec60/stable,now 10:6.0-dmo6 arm64 [installed,automatic]

Does liquidsoap work with and without deb-multimedia?

If the answer is yes, then here's the first step of the plan:

apt-get purge --autoremove liquidsoap
mv /etc/apt/sources.list.d/deb-multimedia.list{,.backup}
apt-get update
apt list ?obsolete

I removed liquidsoap and installed it again.
There was a line that said: Get:1 https://deb.debian.org/debian bookworm/main arm64 liquidsoap arm64 2.1.3-2
That isn't the one from deb-multimedia...

apt-cache policy liquidsoap
liquidsoap:
Installed: 2.1.3-2
Candidate: 2.1.3-2
Version table:
*** 2.1.3-2 500
500 https://deb.debian.org/debian bookworm/main arm64 Packages
100 /var/lib/dpkg/status

liquidsoap-3dc336b_2.2.2-debian-bookworm-1_arm64.deb does not work on my system.
It has errors:

./op25.liq

INFO: Loading Sdl_image, Target = linux
INFO: Loading Sdl_ttf, Target = linux
At ./op25.liq, line 61, char 0-0:

Error 9: Failure: Early computation of source content-type detected for source iir_filter!
Raised at Stdlib.failwith in file "stdlib.ml", line 29, characters 17-33
Called from Source.operator#content_type in file "src/core/source.ml", line 407, characters 14-190
Called from Source.operator#audio_channels in file "src/core/source.ml", line 420, characters 53-70
Called from Iir_filter.iir.(fun) in file "src/core/operators/iir_filter.ml", line 71, characters 21-40
Called from CamlinternalOO.iter_f in file "camlinternalOO.ml", line 371, characters 12-17
Called from CamlinternalOO.run_initializers_opt in file "camlinternalOO.ml", line 381, characters 24-40
Called from Lang_source.add_operator.f in file "src/core/lang_source.ml", line 431, characters 39-44
Called from Liquidsoap_lang__Evaluation.apply.f in file "src/lang/evaluation.ml", line 174, characters 8-12
Called from Liquidsoap_lang__Evaluation.eval_term in file "src/lang/evaluation.ml", line 341, characters 10-43
Called from Liquidsoap_lang__Evaluation.eval in file "src/lang/evaluation.ml", line 353, characters 10-38
Called from Liquidsoap_lang__Evaluation.eval_toplevel in file "src/lang/evaluation.ml", line 488, characters 38-46
Called from Liquidsoap_lang__Startup.time in file "src/lang/startup.ml", line 30, characters 12-16
Called from Stdlib__Fun.protect in file "fun.ml", line 33, characters 8-15
Re-raised at Stdlib__Fun.protect in file "fun.ml", line 38, characters 6-52
Called from Liquidsoap_lang__Runtime.type_and_run in file "src/lang/runtime.ml", line 30, characters 4-612
Called from Liquidsoap_lang__Runtime.report in file "src/lang/runtime.ml" (inlined), line 215, characters 12-23
Called from Liquidsoap_lang__Runtime.from_lexbuf in file "src/lang/runtime.ml", line 229, characters 2-159

Sorry, it's just the first step, the idea is to slowly introduce packages from raspberry.
My idea is to get rid of the packages from other sources and restore the original state, so it's possible to install packages in small groups.

apt-get purge --autoremove liquidsoap
mv /etc/apt/sources.list.d/deb-multimedia.list{,.backup}
apt-get update
apt list ?obsolete

Please paste the list of packages from the last command into this snippet. There's no need to install liquidsoap ahead of time.

My point is that I made is that I may never have tried the package from deb-multimedia

The latest package from https://github.com/savonet/liquidsoap/releases/tag/rolling-release-v2.2.x
fails with my script. With the other package there was a deprecation message I think about the set command.

i’m in bed now. I will pick this up tomorrow.

apt list ?obsolete
Listing... Done

deb-multimedia-keyring/now 2016.8.1 all [installed,local]
libavcodec60/now 10:6.0-dmo6 arm64 [installed,local]
libavdevice60/now 10:6.0-dmo6 arm64 [installed,local]
libavfilter9/now 10:6.0-dmo6 arm64 [installed,local]
libavformat60/now 10:6.0-dmo6 arm64 [installed,local]
libavutil58/now 10:6.0-dmo6 arm64 [installed,local]
libdavs2-16/now 1.7-dmo1 arm64 [installed,local]
libilbc3/now 3.0.4-dmo1 arm64 [installed,local]
libkvazaar7/now 1:2.2.0-dmo1 arm64 [installed,local]
libpostproc57/now 10:6.0-dmo6 arm64 [installed,local]
libraspberrypi-bin/now 1:2+git20231018~131943+3c97f76-1 arm64 [installed,local]
libraspberrypi0/now 1:2+git20231018~131943+3c97f76-1 arm64 [installed,local]
libswscale7/now 10:6.0-dmo6 arm64 [installed,local]
libunibreak5/now 5.1-0.0 arm64 [installed,local]
libvidstab1.2/now 2:1.1.1-dmo1 arm64 [installed,local]
libvmaf1/now 2.3.1-dmo2 arm64 [installed,local]
libxavs2-13/now 1:1.4-dmo1 arm64 [installed,local]
raspberrypi-archive-keyring/now 2021.1.1+rpt1 all [installed,local]
raspberrypi-bootloader/now 1:1.20230405-1 arm64 [installed,local]
raspberrypi-kernel/now 1:1.20230405-1 arm64 [installed,local]
raspberrypi-sys-mods/now 2:20230510-dietpi2 all [installed,local]
rpi-eeprom/now 20.0-2 all [installed,local]
sparksdr/now 2.0.966 arm64 [installed,local]
N: Ignoring file 'deb-multimedia.list.backup' in directory '/etc/apt/sources.list.d/' as it has an invalid filename extension

Manually installed packages

deb-multimedia-keyring/now 2016.8.1 all [installed,local]
sparksdr/now 2.0.966 arm64 [installed,local]

Packages from raspberrypi repo

libraspberrypi-bin/now 1:2+git20231018~131943+3c97f76-1 arm64 [installed,local]
libraspberrypi0/now 1:2+git20231018~131943+3c97f76-1 arm64 [installed,local]
raspberrypi-archive-keyring/now 2021.1.1+rpt1 all [installed,local]
raspberrypi-bootloader/now 1:1.20230405-1 arm64 [installed,local]
raspberrypi-kernel/now 1:1.20230405-1 arm64 [installed,local]
raspberrypi-sys-mods/now 2:20230510-dietpi2 all [installed,local]
rpi-eeprom/now 20.0-2 all [installed,local]

Packages from deb-multimedia repo

libavcodec60/now 10:6.0-dmo6 arm64 [installed,local]
libavdevice60/now 10:6.0-dmo6 arm64 [installed,local]
libavfilter9/now 10:6.0-dmo6 arm64 [installed,local]
libavformat60/now 10:6.0-dmo6 arm64 [installed,local]
libavutil58/now 10:6.0-dmo6 arm64 [installed,local]
libdavs2-16/now 1.7-dmo1 arm64 [installed,local]
libilbc3/now 3.0.4-dmo1 arm64 [installed,local]
libkvazaar7/now 1:2.2.0-dmo1 arm64 [installed,local]
libpostproc57/now 10:6.0-dmo6 arm64 [installed,local]
libswscale7/now 10:6.0-dmo6 arm64 [installed,local]
libunibreak5/now 5.1-0.0 arm64 [installed,local]
libvidstab1.2/now 2:1.1.1-dmo1 arm64 [installed,local]
libvmaf1/now 2.3.1-dmo2 arm64 [installed,local]
libxavs2-13/now 1:1.4-dmo1 arm64 [installed,local]

Step 2:

  1. /etc/apt/preferences.d/debian.pref
    Package: *  
    Pin: origin deb.debian.org
    Pin-Priority: 1000
    
  2. apt-get update
    apt-get dist-upgrade
    apt list ?obsolete
    All packages from the dmo group should be gone.

...
apt list ?obsolete

Listing... Done
deb-multimedia-keyring/now 2016.8.1 all [installed,local]
libavutil58/now 10:6.0-dmo6 arm64 [installed,local]
libdavs2-16/now 1.7-dmo1 arm64 [installed,local]
libilbc3/now 3.0.4-dmo1 arm64 [installed,local]
libkvazaar7/now 1:2.2.0-dmo1 arm64 [installed,local]
libpostproc57/now 10:6.0-dmo6 arm64 [installed,local]
libraspberrypi-bin/now 1:2+git20231018~131943+3c97f76-1 arm64 [installed,local]
libraspberrypi0/now 1:2+git20231018~131943+3c97f76-1 arm64 [installed,local]
libswscale7/now 10:6.0-dmo6 arm64 [installed,local]
libunibreak5/now 5.1-0.0 arm64 [installed,local]
libvidstab1.2/now 2:1.1.1-dmo1 arm64 [installed,local]
libvmaf1/now 2.3.1-dmo2 arm64 [installed,local]
libxavs2-13/now 1:1.4-dmo1 arm64 [installed,local]
raspberrypi-archive-keyring/now 2021.1.1+rpt1 all [installed,local]
raspberrypi-bootloader/now 1:1.20230405-1 arm64 [installed,local]
raspberrypi-kernel/now 1:1.20230405-1 arm64 [installed,local]
raspberrypi-sys-mods/now 2:20230510-dietpi2 all [installed,local]
rpi-eeprom/now 20.0-2 all [installed,local]
sparksdr/now 2.0.966 arm64 [installed,local]
N: Ignoring file 'deb-multimedia.list.backup' in directory '/etc/apt/sources.list.d/' as it has an invalid filename extension

Some packages are still there...

  1. apt list ?garbage
  2. apt-get purge --auto-remove --dry-run libavutil58 | grep -v ^Purg

apt list ?garbage

Listing... Done
libaribb24-0/stable,now 1.0.3-2 arm64 [installed,auto-removable]
libavutil58/now 10:6.0-dmo6 arm64 [installed,local]
libdavs2-16/now 1.7-dmo1 arm64 [installed,local]
libilbc3/now 3.0.4-dmo1 arm64 [installed,local]
libkvazaar7/now 1:2.2.0-dmo1 arm64 [installed,local]
libopenh264-7/stable,now 2.3.1+dfsg-3 arm64 [installed,auto-removable]
libpostproc57/now 10:6.0-dmo6 arm64 [installed,local]
libswscale7/now 10:6.0-dmo6 arm64 [installed,local]
libunibreak5/now 5.1-0.0 arm64 [installed,local]
libvidstab1.2/now 2:1.1.1-dmo1 arm64 [installed,local]
libvmaf1/now 2.3.1-dmo2 arm64 [installed,local]
libvo-amrwbenc0/stable,now 0.1.3-2 arm64 [installed,auto-removable]
libxavs2-13/now 1:1.4-dmo1 arm64 [installed,local]
N: Ignoring file 'deb-multimedia.list.backup' in directory '/etc/apt/sources.list.d/' as it has an invalid filename extension

sudo apt-get purge --auto-remove --dry-run libavutil58 | grep -v ^Purg

Reading package lists...
Building dependency tree...
Reading state information...
The following packages will be REMOVED:
  libaribb24-0* libavutil58* libdavs2-16* libilbc3* libkvazaar7*
  libopenh264-7* libpostproc57* libswscale7* libunibreak5* libvidstab1.2*
  libvmaf1* libvo-amrwbenc0* libxavs2-13*
0 upgraded, 0 newly installed, 13 to remove and 0 not upgraded.

To get rid of that packages you should execute apt-get purge --auto-remove.

OK.
Now, nothing listed with apt list ?garbage

After that you can reinstall liquidsoap.
apt-get install --no-install-recommends liquidsoap
Check that liquidsoap works as expected.

The following NEW packages will be installed:
libcamomile-ocaml-data liblo7 libsoundtouch1 libtag1v5 libtag1v5-vanilla
liquidsoap ocaml-base

It works and I can hear audio from it.

OK, looks fine.

  1. rm /etc/apt/preferences.d/debian.pref
  2. echo 'deb https://archive.raspberrypi.org/debian/ bookworm main' > /etc/apt/sources.list.d/raspberrypi.list
    apt-get update
    
    Do not upgrade any of the packages.
  3. apt list ?upgradable
  4. apt list ?obsolete

apt list ?upgradable

Listing... Done
N: Ignoring file 'deb-multimedia.list.backup' in directory '/etc/apt/sources.list.d/' as it has an invalid filename extension

apt list ?obsolete

Listing... Done
deb-multimedia-keyring/now 2016.8.1 all [installed,local]
libraspberrypi-bin/now 1:2+git20231018~131943+3c97f76-1 arm64 [installed,local]
libraspberrypi0/now 1:2+git20231018~131943+3c97f76-1 arm64 [installed,local]
raspberrypi-archive-keyring/now 2021.1.1+rpt1 all [installed,local]
raspberrypi-bootloader/now 1:1.20230405-1 arm64 [installed,local]
raspberrypi-kernel/now 1:1.20230405-1 arm64 [installed,local]
raspberrypi-sys-mods/now 2:20230510-dietpi2 all [installed,local]
rpi-eeprom/now 20.0-2 all [installed,local]
sparksdr/now 2.0.966 arm64 [installed,local]
N: Ignoring file 'deb-multimedia.list.backup' in directory '/etc/apt/sources.list.d/' as it has an invalid filename extension

Looks strange, maybe something went wrong.
All raspberry packages are obsolete, looks like raspberry repository is missing.

  1. echo 'deb https://archive.raspberrypi.org/debian/ bookworm main' > /etc/apt/sources.list.d/raspberrypi.list
    apt-get update

Did you do this step?

I did that step, which seems to be two commands, which is how the command line performed it.
/etc/apt/sources.list.d/raspberrypi.list is empty.
However, there was a backup file of the original /etc/apt/sources.list.d/raspi.list, which I have now restored.

apt list ?upgradable

Listing... Done
alsa-utils/stable 1.2.8-1+rpt1 arm64 [upgradable from: 1.2.8-1]
console-setup-linux/stable 1.221rpt1 all [upgradable from: 1.221]
console-setup/stable 1.221rpt1 all [upgradable from: 1.221]
ffmpeg/stable 8:5.1.3-1+rpt4 arm64 [upgradable from: 7:5.1.3-1]
firmware-atheros/stable 1:20230210-5+rpt1 all [upgradable from: 20230210-5]
firmware-brcm80211/stable 1:20230210-5+rpt1 all [upgradable from: 20230210-5]
firmware-iwlwifi/stable 1:20230210-5+rpt1 all [upgradable from: 20230210-5]
firmware-misc-nonfree/stable 1:20230210-5+rpt1 all [upgradable from: 20230210-5]
firmware-realtek/stable 1:20230210-5+rpt1 all [upgradable from: 20230210-5]
gsettings-desktop-schemas/stable 43.0-1+rpt1 all [upgradable from: 43.0-1]
keyboard-configuration/stable 1.221rpt1 all [upgradable from: 1.221]
libasound2-data/stable 1.2.8-1+rpt1 all [upgradable from: 1.2.8-1]
libasound2-dev/stable 1.2.8-1+rpt1 arm64 [upgradable from: 1.2.8-1+b1]
libasound2/stable 1.2.8-1+rpt1 arm64 [upgradable from: 1.2.8-1+b1]
libatopology2/stable 1.2.8-1+rpt1 arm64 [upgradable from: 1.2.8-1+b1]
libavcodec-dev/stable 8:5.1.3-1+rpt4 arm64 [upgradable from: 7:5.1.3-1]
libavcodec59/stable 8:5.1.3-1+rpt4 arm64 [upgradable from: 7:5.1.3-1]
libavdevice59/stable 8:5.1.3-1+rpt4 arm64 [upgradable from: 7:5.1.3-1]
libavfilter8/stable 8:5.1.3-1+rpt4 arm64 [upgradable from: 7:5.1.3-1]
libavformat-dev/stable 8:5.1.3-1+rpt4 arm64 [upgradable from: 7:5.1.3-1]
libavformat59/stable 8:5.1.3-1+rpt4 arm64 [upgradable from: 7:5.1.3-1]
libavutil-dev/stable 8:5.1.3-1+rpt4 arm64 [upgradable from: 7:5.1.3-1]
libavutil57/stable 8:5.1.3-1+rpt4 arm64 [upgradable from: 7:5.1.3-1]
libc-bin/stable 2.36-9+rpt2+deb12u3 arm64 [upgradable from: 2.36-9+deb12u3]
libc-dev-bin/stable 2.36-9+rpt2+deb12u3 arm64 [upgradable from: 2.36-9+deb12u3]
libc-l10n/stable 2.36-9+rpt2+deb12u3 all [upgradable from: 2.36-9+deb12u3]
libc6-dev/stable 2.36-9+rpt2+deb12u3 arm64 [upgradable from: 2.36-9+deb12u3]
libc6/stable 2.36-9+rpt2+deb12u3 arm64 [upgradable from: 2.36-9+deb12u3]
libcairo-gobject2/stable 1.16.0-7+rpt1 arm64 [upgradable from: 1.16.0-7]
libcairo-script-interpreter2/stable 1.16.0-7+rpt1 arm64 [upgradable from: 1.16.0-7]
libcairo2-dev/stable 1.16.0-7+rpt1 arm64 [upgradable from: 1.16.0-7]
libcairo2/stable 1.16.0-7+rpt1 arm64 [upgradable from: 1.16.0-7]
libegl-mesa0/stable 23.2.1-0+rpt2 arm64 [upgradable from: 22.3.6-1+deb12u1]
libegl1-mesa-dev/stable 23.2.1-0+rpt2 arm64 [upgradable from: 22.3.6-1+deb12u1]
libgbm1/stable 23.2.1-0+rpt2 arm64 [upgradable from: 22.3.6-1+deb12u1]
libgl1-mesa-dev/stable 23.2.1-0+rpt2 arm64 [upgradable from: 22.3.6-1+deb12u1]
libgl1-mesa-dri/stable 23.2.1-0+rpt2 arm64 [upgradable from: 22.3.6-1+deb12u1]
libglapi-mesa/stable 23.2.1-0+rpt2 arm64 [upgradable from: 22.3.6-1+deb12u1]
libglx-mesa0/stable 23.2.1-0+rpt2 arm64 [upgradable from: 22.3.6-1+deb12u1]
liblightdm-gobject-1-0/stable 1.26.0-8+rpt3 arm64 [upgradable from: 1.26.0-8]
libpam-modules-bin/stable 1.5.2-6+rpt2+deb12u1 arm64 [upgradable from: 1.5.2-6+deb12u1]
libpam-modules/stable 1.5.2-6+rpt2+deb12u1 arm64 [upgradable from: 1.5.2-6+deb12u1]
libpam-runtime/stable 1.5.2-6+rpt2+deb12u1 all [upgradable from: 1.5.2-6+deb12u1]
libpam0g/stable 1.5.2-6+rpt2+deb12u1 arm64 [upgradable from: 1.5.2-6+deb12u1]
libpixman-1-0/stable 0.42.2-1+rpt1 arm64 [upgradable from: 0.42.2-1]
libpixman-1-dev/stable 0.42.2-1+rpt1 arm64 [upgradable from: 0.42.2-1]
libpostproc56/stable 8:5.1.3-1+rpt4 arm64 [upgradable from: 7:5.1.3-1]
libpulse-dev/stable 16.1+dfsg1-2+rpt1 arm64 [upgradable from: 16.1+dfsg1-2+b1]
libpulse-mainloop-glib0/stable 16.1+dfsg1-2+rpt1 arm64 [upgradable from: 16.1+dfsg1-2+b1]
libpulse0/stable 16.1+dfsg1-2+rpt1 arm64 [upgradable from: 16.1+dfsg1-2+b1]
libpulsedsp/stable 16.1+dfsg1-2+rpt1 arm64 [upgradable from: 16.1+dfsg1-2+b1]
libswresample-dev/stable 8:5.1.3-1+rpt4 arm64 [upgradable from: 7:5.1.3-1]
libswresample4/stable 8:5.1.3-1+rpt4 arm64 [upgradable from: 7:5.1.3-1]
libswscale-dev/stable 8:5.1.3-1+rpt4 arm64 [upgradable from: 7:5.1.3-1]
libswscale6/stable 8:5.1.3-1+rpt4 arm64 [upgradable from: 7:5.1.3-1]
lightdm/stable 1.26.0-8+rpt3 arm64 [upgradable from: 1.26.0-8]
linux-libc-dev/stable 1:6.1.54-1+rpt2 arm64 [upgradable from: 6.5.3-1~bpo12+1]
locales/stable 2.36-9+rpt2+deb12u3 all [upgradable from: 2.36-9+deb12u3]
pulseaudio-equalizer/stable 16.1+dfsg1-2+rpt1 arm64 [upgradable from: 16.1+dfsg1-2+b1]
pulseaudio-module-gsettings/stable 16.1+dfsg1-2+rpt1 arm64 [upgradable from: 16.1+dfsg1-2+b1]
pulseaudio-module-zeroconf/stable 16.1+dfsg1-2+rpt1 arm64 [upgradable from: 16.1+dfsg1-2+b1]
pulseaudio-utils/stable 16.1+dfsg1-2+rpt1 arm64 [upgradable from: 16.1+dfsg1-2+b1]
pulseaudio/stable 16.1+dfsg1-2+rpt1 arm64 [upgradable from: 16.1+dfsg1-2+b1]
python3-pip-whl/stable 23.0.1+dfsg-1+rpt1 all [upgradable from: 23.0.1+dfsg-1]
python3-pip/stable 23.0.1+dfsg-1+rpt1 all [upgradable from: 23.0.1+dfsg-1]
xserver-common/stable 2:21.1.7-3+rpt1 all [upgradable from: 2:21.1.7-3+deb12u2]
xserver-xorg-core/stable 2:21.1.7-3+rpt1 arm64 [upgradable from: 2:21.1.7-3+deb12u2]
N: Ignoring file 'deb-multimedia.list.backup' in directory '/etc/apt/sources.list.d/' as it has an invalid filename extension

apt list ?obsolete

Listing... Done
deb-multimedia-keyring/now 2016.8.1 all [installed,local]
sparksdr/now 2.0.966 arm64 [installed,local]
N: Ignoring file 'deb-multimedia.list.backup' in directory '/etc/apt/sources.list.d/' as it has an invalid filename extension

Oh, sorry. There should be semicolon.

echo 'deb https://archive.raspberrypi.org/debian/ bookworm main' > /etc/apt/sources.list.d/raspberrypi.list;
apt-get update

Did it work this time? the only difference is that I restored the original /etc/apt/sources.list.d/raspi.list istead of creating /etc/apt/sources.list.d/raspberrypi.list

Yes, so far everything is working as expected.

I think it's safe to upgrade the following packages.

apt-get install --only-upgrade console-setup-linux console-setup firmware-atheros firmware-brcm80211 firmware-iwlwifi firmware-misc-nonfree firmware-realtek gsettings-desktop-schemas keyboard-configuration libc-bin libc-dev-bin libc-l10n libc6-dev libc6 libcairo-gobject2 libcairo-script-interpreter2 libcairo2-dev libcairo2 liblightdm-gobject-1-0 libpam-modules-bin libpam-modules libpam-runtime libpam0g lightdm linux-libc-dev locales python3-pip-whl python3-pip xserver-common xserver-xorg-core

Check if liquidsoap runs correctly after these changes.
Also post apt list ?upgradable after that.

It works.

apt list ?upgradable
Listing... Done
alsa-utils/stable 1.2.8-1+rpt1 arm64 [upgradable from: 1.2.8-1]
ffmpeg/stable 8:5.1.3-1+rpt4 arm64 [upgradable from: 7:5.1.3-1]
libasound2-data/stable 1.2.8-1+rpt1 all [upgradable from: 1.2.8-1]
libasound2-dev/stable 1.2.8-1+rpt1 arm64 [upgradable from: 1.2.8-1+b1]
libasound2/stable 1.2.8-1+rpt1 arm64 [upgradable from: 1.2.8-1+b1]
libatopology2/stable 1.2.8-1+rpt1 arm64 [upgradable from: 1.2.8-1+b1]
libavcodec-dev/stable 8:5.1.3-1+rpt4 arm64 [upgradable from: 7:5.1.3-1]
libavcodec59/stable 8:5.1.3-1+rpt4 arm64 [upgradable from: 7:5.1.3-1]
libavdevice59/stable 8:5.1.3-1+rpt4 arm64 [upgradable from: 7:5.1.3-1]
libavfilter8/stable 8:5.1.3-1+rpt4 arm64 [upgradable from: 7:5.1.3-1]
libavformat-dev/stable 8:5.1.3-1+rpt4 arm64 [upgradable from: 7:5.1.3-1]
libavformat59/stable 8:5.1.3-1+rpt4 arm64 [upgradable from: 7:5.1.3-1]
libavutil-dev/stable 8:5.1.3-1+rpt4 arm64 [upgradable from: 7:5.1.3-1]
libavutil57/stable 8:5.1.3-1+rpt4 arm64 [upgradable from: 7:5.1.3-1]
libegl-mesa0/stable 23.2.1-0+rpt2 arm64 [upgradable from: 22.3.6-1+deb12u1]
libegl1-mesa-dev/stable 23.2.1-0+rpt2 arm64 [upgradable from: 22.3.6-1+deb12u1]
libgbm1/stable 23.2.1-0+rpt2 arm64 [upgradable from: 22.3.6-1+deb12u1]
libgl1-mesa-dev/stable 23.2.1-0+rpt2 arm64 [upgradable from: 22.3.6-1+deb12u1]
libgl1-mesa-dri/stable 23.2.1-0+rpt2 arm64 [upgradable from: 22.3.6-1+deb12u1]
libglapi-mesa/stable 23.2.1-0+rpt2 arm64 [upgradable from: 22.3.6-1+deb12u1]
libglx-mesa0/stable 23.2.1-0+rpt2 arm64 [upgradable from: 22.3.6-1+deb12u1]
libpixman-1-0/stable 0.42.2-1+rpt1 arm64 [upgradable from: 0.42.2-1]
libpixman-1-dev/stable 0.42.2-1+rpt1 arm64 [upgradable from: 0.42.2-1]
libpostproc56/stable 8:5.1.3-1+rpt4 arm64 [upgradable from: 7:5.1.3-1]
libpulse-dev/stable 16.1+dfsg1-2+rpt1 arm64 [upgradable from: 16.1+dfsg1-2+b1]
libpulse-mainloop-glib0/stable 16.1+dfsg1-2+rpt1 arm64 [upgradable from: 16.1+dfsg1-2+b1]
libpulse0/stable 16.1+dfsg1-2+rpt1 arm64 [upgradable from: 16.1+dfsg1-2+b1]
libpulsedsp/stable 16.1+dfsg1-2+rpt1 arm64 [upgradable from: 16.1+dfsg1-2+b1]
libswresample-dev/stable 8:5.1.3-1+rpt4 arm64 [upgradable from: 7:5.1.3-1]
libswresample4/stable 8:5.1.3-1+rpt4 arm64 [upgradable from: 7:5.1.3-1]
libswscale-dev/stable 8:5.1.3-1+rpt4 arm64 [upgradable from: 7:5.1.3-1]
libswscale6/stable 8:5.1.3-1+rpt4 arm64 [upgradable from: 7:5.1.3-1]
pulseaudio-equalizer/stable 16.1+dfsg1-2+rpt1 arm64 [upgradable from: 16.1+dfsg1-2+b1]
pulseaudio-module-gsettings/stable 16.1+dfsg1-2+rpt1 arm64 [upgradable from: 16.1+dfsg1-2+b1]
pulseaudio-module-zeroconf/stable 16.1+dfsg1-2+rpt1 arm64 [upgradable from: 16.1+dfsg1-2+b1]
pulseaudio-utils/stable 16.1+dfsg1-2+rpt1 arm64 [upgradable from: 16.1+dfsg1-2+b1]
pulseaudio/stable 16.1+dfsg1-2+rpt1 arm64 [upgradable from: 16.1+dfsg1-2+b1]
N: Ignoring file 'deb-multimedia.list.backup' in directory '/etc/apt/sources.list.d/' as it has an invalid filename extension

Fine.
Let's update

  1. graphics
    apt-get install --only-upgrade libegl-mesa0 libegl1-mesa-dev libgbm1 libgl1-mesa-dev libgl1-mesa-dri libglapi-mesa libglx-mesa0 libpixman-1-0 libpixman-1-dev
  2. alsa
    apt-get install --only-upgrade alsa-utils libasound2-data libasound2-dev libasound2 libatopology2
  3. pulseaudio
    apt-get install --only-upgrade libpulse-dev libpulse-mainloop-glib0 libpulse0 libpulsedsp pulseaudio-equalizer pulseaudio-module-gsettings pulseaudio-module-zeroconf pulseaudio-utils pulseaudio

Check that liquidsoap is working after each step. Don't proceed to the next step if it crashes.

And then apt list ?upgradable.

liquidsoap still works.

apt list ?upgradable

Listing... Done
ffmpeg/stable 8:5.1.3-1+rpt4 arm64 [upgradable from: 7:5.1.3-1]
libavcodec-dev/stable 8:5.1.3-1+rpt4 arm64 [upgradable from: 7:5.1.3-1]
libavcodec59/stable 8:5.1.3-1+rpt4 arm64 [upgradable from: 7:5.1.3-1]
libavdevice59/stable 8:5.1.3-1+rpt4 arm64 [upgradable from: 7:5.1.3-1]
libavfilter8/stable 8:5.1.3-1+rpt4 arm64 [upgradable from: 7:5.1.3-1]
libavformat-dev/stable 8:5.1.3-1+rpt4 arm64 [upgradable from: 7:5.1.3-1]
libavformat59/stable 8:5.1.3-1+rpt4 arm64 [upgradable from: 7:5.1.3-1]
libavutil-dev/stable 8:5.1.3-1+rpt4 arm64 [upgradable from: 7:5.1.3-1]
libavutil57/stable 8:5.1.3-1+rpt4 arm64 [upgradable from: 7:5.1.3-1]
libpostproc56/stable 8:5.1.3-1+rpt4 arm64 [upgradable from: 7:5.1.3-1]
libpulse-dev/stable 16.1+dfsg1-2+rpt1 arm64 [upgradable from: 16.1+dfsg1-2+b1]
libpulse-mainloop-glib0/stable 16.1+dfsg1-2+rpt1 arm64 [upgradable from: 16.1+dfsg1-2+b1]
libpulse0/stable 16.1+dfsg1-2+rpt1 arm64 [upgradable from: 16.1+dfsg1-2+b1]
libpulsedsp/stable 16.1+dfsg1-2+rpt1 arm64 [upgradable from: 16.1+dfsg1-2+b1]
libswresample-dev/stable 8:5.1.3-1+rpt4 arm64 [upgradable from: 7:5.1.3-1]
libswresample4/stable 8:5.1.3-1+rpt4 arm64 [upgradable from: 7:5.1.3-1]
libswscale-dev/stable 8:5.1.3-1+rpt4 arm64 [upgradable from: 7:5.1.3-1]
libswscale6/stable 8:5.1.3-1+rpt4 arm64 [upgradable from: 7:5.1.3-1]
pulseaudio-equalizer/stable 16.1+dfsg1-2+rpt1 arm64 [upgradable from: 16.1+dfsg1-2+b1]
pulseaudio-module-gsettings/stable 16.1+dfsg1-2+rpt1 arm64 [upgradable from: 16.1+dfsg1-2+b1]
pulseaudio-module-zeroconf/stable 16.1+dfsg1-2+rpt1 arm64 [upgradable from: 16.1+dfsg1-2+b1]
pulseaudio-utils/stable 16.1+dfsg1-2+rpt1 arm64 [upgradable from: 16.1+dfsg1-2+b1]
pulseaudio/stable 16.1+dfsg1-2+rpt1 arm64 [upgradable from: 16.1+dfsg1-2+b1]
N: Ignoring file 'deb-multimedia.list.backup' in directory '/etc/apt/sources.list.d/' as it has an invalid filename extension

And what about pulse?

apt-get install --only-upgrade libpulse-dev libpulse-mainloop-glib0 libpulse0 libpulsedsp pulseaudio-equalizer pulseaudio-module-gsettings pulseaudio-module-zeroconf pulseaudio-utils pulseaudio

I forgot to add sudo...
It still works.

apt list ?upgradable

Listing... Done
ffmpeg/stable 8:5.1.3-1+rpt4 arm64 [upgradable from: 7:5.1.3-1]
libavcodec-dev/stable 8:5.1.3-1+rpt4 arm64 [upgradable from: 7:5.1.3-1]
libavcodec59/stable 8:5.1.3-1+rpt4 arm64 [upgradable from: 7:5.1.3-1]
libavdevice59/stable 8:5.1.3-1+rpt4 arm64 [upgradable from: 7:5.1.3-1]
libavfilter8/stable 8:5.1.3-1+rpt4 arm64 [upgradable from: 7:5.1.3-1]
libavformat-dev/stable 8:5.1.3-1+rpt4 arm64 [upgradable from: 7:5.1.3-1]
libavformat59/stable 8:5.1.3-1+rpt4 arm64 [upgradable from: 7:5.1.3-1]
libavutil-dev/stable 8:5.1.3-1+rpt4 arm64 [upgradable from: 7:5.1.3-1]
libavutil57/stable 8:5.1.3-1+rpt4 arm64 [upgradable from: 7:5.1.3-1]
libpostproc56/stable 8:5.1.3-1+rpt4 arm64 [upgradable from: 7:5.1.3-1]
libswresample-dev/stable 8:5.1.3-1+rpt4 arm64 [upgradable from: 7:5.1.3-1]
libswresample4/stable 8:5.1.3-1+rpt4 arm64 [upgradable from: 7:5.1.3-1]
libswscale-dev/stable 8:5.1.3-1+rpt4 arm64 [upgradable from: 7:5.1.3-1]
libswscale6/stable 8:5.1.3-1+rpt4 arm64 [upgradable from: 7:5.1.3-1]
N: Ignoring file 'deb-multimedia.list.backup' in directory '/etc/apt/sources.list.d/' as it has an invalid filename extension

OK, and the last one is ffmpeg.

  1. Let's try to upgrade.
    Run apt-get dist-upgrade.
  2. Check the liquidsoap.
  3. To downgrade it back to the default version use the following settings
    /etc/apt/preferences.d/ffmpeg.pref
    Package: ffmpeg libavcodec-dev libavcodec59 libavdevice59 libavfilter8 libavformat-dev libavformat59 libavutil-dev libavutil57 libpostproc56 libswresample-dev libswresample4 libswscale-dev libswscale6
    Pin: origin deb.debian.org
    Pin-Priority: 1000
    
    And then downgrade it as usual by using apt-get dist-upgrade.
  4. I think if I pin it with a higher priority it will prevent any updates.
    /etc/apt/preferences.d/ffmpeg.pref
    Package: ffmpeg libavcodec-dev libavcodec59 libavdevice59 libavfilter8 libavformat-dev libavformat59 libavutil-dev libavutil57 libpostproc56 libswresample-dev libswresample4 libswscale-dev libswscale6
    Pin: origin deb.debian.org
    Pin-Priority: 600
    
    Get the policy for ffmpeg apt-cache policy ffmpeg and check if it's apt list ?upgradable.

sudo apt-get dist-upgrade
liquidsoap Segmentation fault

edit /etc/apt/preferences.d/ffmpeg.pref
sudo apt-get dist-upgrade
liquidsoap works

sudo apt-cache policy ffmpeg...

ffmpeg:
  Installed: 7:5.1.3-1
  Candidate: 7:5.1.3-1
  Version table:
     8:5.1.3-1+rpt4 500
        500 https://archive.raspberrypi.org/debian bookworm/main arm64 Packages
 *** 7:5.1.3-1 600
        500 https://deb.debian.org/debian bookworm/main arm64 Packages
        100 /var/lib/dpkg/status
N: Ignoring file 'deb-multimedia.list.backup' in directory '/etc/apt/sources.list.d/' as it has an invalid filename extension

apt list ?upgradable

Listing... Done
N: Ignoring file 'deb-multimedia.list.backup' in directory '/etc/apt/sources.list.d/' as it has an invalid filename extension

So basically this is it, you can leave the system in this semi-upgraded state.
Just a final check.

mv /etc/apt/sources.list.d/deb-multimedia.list{.backup,};
apt-get update;
apt-cache policy ffmpeg;

The ultimate solution in this whole case would be to build liquidsoap from source.
On the plus side, this allows you to use custom dependencies and custom liquisoap versions.
But the downside is the requirement to maintain the ocaml itself and its packages. You also have to maintain compatibility with the system packages and rebuild the ocaml packages after any major changes.

The alternative solution would be to use a container from https://hub.docker.com/r/savonet/liquidsoap or build one yourself.
It works fine out of the box if you have no special hardware requirements.

Wouldn’t it be easier to get Raspberry Pi to use compatible packages? Or maybe just the last pin to keep it from using the Raspberry Pi packages? It would have to be done before any of them are installed.
Otherwise I may as well do without liquidsoap.
Remember, others are having this problem and there will be more.

I will try your checks in the morning.

sudo apt-cache policy ffmpeg;

ffmpeg:
  Installed: 7:5.1.3-1
  Candidate: 7:5.1.3-1
  Version table:
     10:6.0-dmo6 500
        500 https://www.deb-multimedia.org bookworm/main arm64 Packages
     8:5.1.3-1+rpt4 500
        500 https://archive.raspberrypi.org/debian bookworm/main arm64 Packages
 *** 7:5.1.3-1 600
        500 https://deb.debian.org/debian bookworm/main arm64 Packages
        100 /var/lib/dpkg/status

I think the PATCH for ffmpeg in the raspberry pi repository makes it incompatible with the liquidsoap from the release artifacts and the bookworm repository.

Perhaps @toots will revisit this issue and suggest a better solution.

For now, my solutions to this problem are

  1. Use ffmpeg from debian or deb-multimedia.
    But you will lose the benefits of the patch, probably some hardware acceleration features.
  2. Install liquidsoap from opam.
    But you will have to maintain your ocaml installation.
  3. Use containers.
    But it'll be a problem if you plan to use some system/hardware features.

You can comment out the contents of the deb-multimedia.list.
Or if you'd like to clean up the remnants of deb-multimedia, then

  1. rm /etc/apt/sources.list.d/deb-multimedia.list;
    apt-get purge -y deb-multimedia-keyring;
  2. Find and rm deb-multimedia-keyring_2016.8.1_all.deb.

Same issue here, tested with :

  • liquidsoap_2.1.4-debian-bookworm-1_arm64.deb
  • liquidsoap_2.2.2-debian-bookworm-1_arm64.deb
  • liquidsoap-7da2632_2.2.3-debian-bookworm-1_arm64.deb

and ffmpeg versions :

  • 5.1.4-0+rpt1+deb12u1
  • 5.1.4-0+deb12u1
  • 5.1.3-1

On a Raspberry Pi 4B (arm64) with Debian 12.2 (Bookworm).

# liquidsoap --version
Erreur de segmentation

Hi @toots I hope this will help :

# gdb /usr/bin/liquidsoap
[…]
Reading symbols from /usr/bin/liquidsoap...
Reading symbols from /usr/lib/debug/.build-id/b1/322399decbc8199db4fa2e389a4998f45944ee.debug...
(gdb) run --version
Starting program: /usr/bin/liquidsoap --version
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/aarch64-linux-gnu/libthread_db.so.1".

Program received signal SIGSEGV, Segmentation fault.
__GI___strlen_asimd () at ../sysdeps/aarch64/multiarch/strlen_asimd.S:96
96	../sysdeps/aarch64/multiarch/strlen_asimd.S: No such file or directory.
(gdb) thread apply all bt

Thread 1 (Thread 0x7ff7a04040 (LWP 365162) "liquidsoap"):
#0  __GI___strlen_asimd () at ../sysdeps/aarch64/multiarch/strlen_asimd.S:96
#1  0x000000555719ff48 in caml_copy_string (s=0x0) at alloc.c:120
#2  0x000000555715f5c0 in ocaml_avfilter_alloc_pads (pads=0x7ff6002cd0, pad_count=2, name=0x7ff5e18c50 "unsand") at avfilter_stubs.c:46
#3  0x000000555715f764 in ocaml_avfilter_get_all_filters (unit=<optimized out>) at avfilter_stubs.c:112
#4  0x00000055571b9864 in caml_c_call ()
#5  0x0000005556bc5524 in camlAvfilter__entry () at avfilter/avfilter.ml:166
#6  0x00000055567c2e64 in caml_program ()
#7  0x00000055571b98d4 in caml_start_program ()
#8  0x0000005557199900 in caml_startup_common (argv=0x55577e1bf8, pooling=<optimized out>, pooling@entry=0) at startup_nat.c:160
#9  0x0000005557199990 in caml_startup_exn (argv=<optimized out>) at startup_nat.c:167
#10 caml_startup (argv=<optimized out>) at startup_nat.c:172
#11 caml_main (argv=<optimized out>) at startup_nat.c:179
#12 0x00000055567bf710 in main (argc=<optimized out>, argv=<optimized out>) at main.c:37
(gdb)

Thread 1 (Thread 0x7ff7a04040 (LWP 365162) "liquidsoap"):
#0  __GI___strlen_asimd () at ../sysdeps/aarch64/multiarch/strlen_asimd.S:96
#1  0x000000555719ff48 in caml_copy_string (s=0x0) at alloc.c:120
#2  0x000000555715f5c0 in ocaml_avfilter_alloc_pads (pads=0x7ff6002cd0, pad_count=2, name=0x7ff5e18c50 "unsand") at avfilter_stubs.c:46
#3  0x000000555715f764 in ocaml_avfilter_get_all_filters (unit=<optimized out>) at avfilter_stubs.c:112
#4  0x00000055571b9864 in caml_c_call ()
#5  0x0000005556bc5524 in camlAvfilter__entry () at avfilter/avfilter.ml:166
#6  0x00000055567c2e64 in caml_program ()
#7  0x00000055571b98d4 in caml_start_program ()
#8  0x0000005557199900 in caml_startup_common (argv=0x55577e1bf8, pooling=<optimized out>, pooling@entry=0) at startup_nat.c:160
#9  0x0000005557199990 in caml_startup_exn (argv=<optimized out>) at startup_nat.c:167
#10 caml_startup (argv=<optimized out>) at startup_nat.c:172
#11 caml_main (argv=<optimized out>) at startup_nat.c:179
#12 0x00000055567bf710 in main (argc=<optimized out>, argv=<optimized out>) at main.c:37
(gdb)

Thread 1 (Thread 0x7ff7a04040 (LWP 365162) "liquidsoap"):
#0  __GI___strlen_asimd () at ../sysdeps/aarch64/multiarch/strlen_asimd.S:96
#1  0x000000555719ff48 in caml_copy_string (s=0x0) at alloc.c:120
#2  0x000000555715f5c0 in ocaml_avfilter_alloc_pads (pads=0x7ff6002cd0, pad_count=2, name=0x7ff5e18c50 "unsand") at avfilter_stubs.c:46
#3  0x000000555715f764 in ocaml_avfilter_get_all_filters (unit=<optimized out>) at avfilter_stubs.c:112
#4  0x00000055571b9864 in caml_c_call ()
#5  0x0000005556bc5524 in camlAvfilter__entry () at avfilter/avfilter.ml:166
#6  0x00000055567c2e64 in caml_program ()
#7  0x00000055571b98d4 in caml_start_program ()
#8  0x0000005557199900 in caml_startup_common (argv=0x55577e1bf8, pooling=<optimized out>, pooling@entry=0) at startup_nat.c:160
#9  0x0000005557199990 in caml_startup_exn (argv=<optimized out>) at startup_nat.c:167
#10 caml_startup (argv=<optimized out>) at startup_nat.c:172
#11 caml_main (argv=<optimized out>) at startup_nat.c:179
#12 0x00000055567bf710 in main (argc=<optimized out>, argv=<optimized out>) at main.c:37
(gdb)

Thread 1 (Thread 0x7ff7a04040 (LWP 365162) "liquidsoap"):
#0  __GI___strlen_asimd () at ../sysdeps/aarch64/multiarch/strlen_asimd.S:96
#1  0x000000555719ff48 in caml_copy_string (s=0x0) at alloc.c:120
#2  0x000000555715f5c0 in ocaml_avfilter_alloc_pads (pads=0x7ff6002cd0, pad_count=2, name=0x7ff5e18c50 "unsand") at avfilter_stubs.c:46
#3  0x000000555715f764 in ocaml_avfilter_get_all_filters (unit=<optimized out>) at avfilter_stubs.c:112
#4  0x00000055571b9864 in caml_c_call ()
#5  0x0000005556bc5524 in camlAvfilter__entry () at avfilter/avfilter.ml:166
#6  0x00000055567c2e64 in caml_program ()
#7  0x00000055571b98d4 in caml_start_program ()
#8  0x0000005557199900 in caml_startup_common (argv=0x55577e1bf8, pooling=<optimized out>, pooling@entry=0) at startup_nat.c:160
#9  0x0000005557199990 in caml_startup_exn (argv=<optimized out>) at startup_nat.c:167
#10 caml_startup (argv=<optimized out>) at startup_nat.c:172
#11 caml_main (argv=<optimized out>) at startup_nat.c:179
#12 0x00000055567bf710 in main (argc=<optimized out>, argv=<optimized out>) at main.c:37
(gdb) 

Feel free to send me versions to test 😉

I finally understand the workaround, I was just downgrading ffmpeg but not the other dependencies.

So I just downgrade ffmpeg and it's dependencies to the Debian version:

apt install ffmpeg=7:5.1.3-1
apt install libavcodec-dev=7:5.1.3-1 libavutil-dev=7:5.1.3-1 libswresample-dev=7:5.1.3-1 libswresample4=7:5.1.3-1 libavdevice-dev=7:5.1.3-1 libavfilter-dev=7:5.1.3-1 libavformat-dev=7:5.1.3-1 libswscale-dev=7:5.1.3-1 libavdevice59=7:5.1.3-1 libavfilter8=7:5.1.3-1 libpostproc-dev=7:5.1.3-1 libpostproc56=7:5.1.3-1 libavutil57=7:5.1.3-1 libswscale6=7:5.1.3-1 libavformat59=7:5.1.3-1 libavcodec59=7:5.1.3-1

Install Liquidsoap 2.2.2 dependencies:

apt install libao4 libfaad2 libfdk-aac2 liblo7 libmad0 libsdl2-image-2.0-0 libsdl2-ttf-2.0-0 libsoundtouch1 libtag1v5

And install it:

dpkg -i liquidsoap_2.2.2-debian-bookworm-1_arm64.deb

And it works!

Thanks @vitoyucepi

I have found that on systems which do not yet have the ffmpeg suite installed, you can prevent the installation form the raspberry pi repository and liquidsoap will work. Raspberry Pi OS may have ffmpeg installed in the distributed image.

/etc/apt/preferences.d/ffmpeg.pref

Package: ffmpeg libavcodec-dev libavcodec59 libavdevice59 libavfilter8 libavformat-dev libavformat59 libavutil-dev libavutil57 libpostproc56 libswresample-dev libswresample4 libswscale-dev libswscale6
Pin: origin deb.debian.org
Pin-Priority: 600

If you look where this is presented above, it also shows how to downgrade it also. I haven't tried is on another system yet.

Edit: The procedure with ffmpeg.pref` previously presented fixes a Raspberry Pi OS system that already had the ffmpeg suite installed.

----Steve

What can we do to resolve the root cause of this issue?
This issue removes out of the box apt installation of liquidsoap on raspberry pi's using bookworm.
@toots do you suggest we log this with ffmpeg support?

Beside the workaround, how can we get this fixed?

Hi @MediaMeasure,
There are a few ways to solve this problem.

  1. You can build the liquidsoap from opam yourself.
    This solution could be problematic for a person not familiar with opam and linux.
  2. You can use containers.
    This one has a lot of advantages, but for me the main culprit would be hardware acceleration and input/output device interaction.
  3. There will be a special package for rpi.
    This solution requires additional attention from the liquidsoap development team.

For anyone coming here looking for a solution, here's a workaround I came up with that combines and tweaks the suggestions above. It's not a good permanent solution, but it should work for now.

This process will work even if you've already installed liquidsoap and are getting the segfault.

Tested on a fresh install of RaspberryOS 12.5 with liquidsoap 2.1.3-2.

Create the /etc/apt/preferences.d/ffmpeg.pref file with the following contents:

Package: ffmpeg libavcodec-dev libavcodec59 libavdevice59 libavfilter8 libavformat-dev libavformat59 libavutil-dev libavutil57 libpostproc56 libswresample-dev libswresample4 libswscale-dev libswscale6
Pin: origin deb.debian.org
Pin-Priority: 1001

(This tells apt to only get these packages from the Debian repos, not the archive.raspberrypi.com repos. The priority of 1001 tells apt that we want it to downgrade packages, if needed.)

Run apt to downgrade (or install) the problematic packages:

apt install ffmpeg libswresample4 libavdevice59 libavfilter8 libpostproc56 libavutil57 libswscale6 libavformat59 libavcodec59

That's it. liquidsoap should run without segfaulting and you can run updates as normal.