SIGABRT in equalizer when loading saved state with different channel count
If I load the pulse-equalizer module with 4 channels, and then restart pulseaudio and load it again with 2 channels, I get a memory allocation problem:
E: [pulseaudio] xmalloc.c: Assertion 'size > 0' failed at pulse/xmalloc.c:60, function pa_xmalloc(). Aborting.
zsh: abort pulseaudio --log-level=error
I can fix it with:
rm -f ~/.config/pulse/equalizer-state.tdb
Here is a script to reproduce
pulseaudio --start
>&2 echo loading equalizer with 4 channels
pactl load-module module-alsa-sink sink_name=hw1 device=hw:3
pactl load-module module-alsa-sink sink_name=hw2 device=hw:4
pactl load-module module-combine-sink slaves=hw1,hw2 sink_name=combined channel_map=front-left,front-right,rear-left,rear-right
pactl load-module module-equalizer-sink sink_master=combined sink_name=eq
pulseaudio -k
>&2 echo loading equalizer with 2 channels
pulseaudio --start --log-target=file:$HOME/.pulse-debug.out
pactl load-module module-alsa-sink sink_name=hw1 device=hw:3
pactl load-module module-combine-sink slaves=hw1 sink_name=combined # channel_map=front-left,front-right,rear-left,rear-right
pactl load-module module-equalizer-sink sink_master=combined sink_name=eq
And the output:
$ rm -f ~/.config/pulse/equalizer-state.tdb
$ ./test-pulse-eq-fail
loading equalizer with 4 channels
23
24
25
26
loading equalizer with 2 channels
23
24
Connection failure: Connection terminated
[1]$
[130]$ tail .pulse-debug.out
E: [pulseaudio] module.c: Failed to load module "module-alsa-sink" (argument: "device=default"): initialization failed.
E: [pulseaudio] module.c: Failed to load module "module-alsa-source" (argument: "device=default"): initialization failed.
E: [pulseaudio] bluez5-util.c: GetManagedObjects() failed: org.freedesktop.systemd1.NoSuchUnit: Unit dbus-org.bluez.service not found.
W: [pulseaudio] module-combine-sink.c: No slave sinks specified.
W: [pulseaudio] module-equalizer-sink.c: module-equalizer-sink is currently unsupported, and can sometimes cause PulseAudio crashes, increased latency or audible artifacts.
W: [pulseaudio] module-equalizer-sink.c: If you're facing audio problems, try unloading this module as a potential workaround.
E: [pulseaudio] xmalloc.c: Assertion 'size > 0' failed at pulse/xmalloc.c:60, function pa_xmalloc(). Aborting.