stack smashing detected with large filter-chain
- PipeWire version (
pipewire --version
):
pipewire
Compiled with libpipewire 0.3.63
Linked with libpipewire 0.3.63
(installed from arch-package ´pipewire-git´
-
Distribution and distribution version (
PRETTY_NAME
from/etc/os-release
): "Arch Linux" -
Desktop Environment: "Gnome"
-
Kernel version (
uname -r
): 6.1.1-arch1-1
Description of Problem:
possible stack overflow when loading module-filter-chain with complex (large) configuration.
I have constructed a filter chain in Pipewire to map a standard 5.1 sink configuration onto my physical 5.2 speaker arrangement, applying various LADSPA filters in the process to do post-processing.
While gradually adding more and more LADSPA filters to the filter chain, this works exactly as expected up to a certain point. After that, adding an additional filter to the chain causes the virtual sink to disappear from pavucontrol. Any attempt to start a pipewire tool from the command line after that (pw-cli, pw-dot, ...) fails with
[D][00815.507668] pw.core | [ core.c: 294 pw_core_export()] 0x55e094742600: export:PipeWire:Interface:Node proxy:0x55e09480c7c0
*** stack smashing detected ***: terminated
Thoughts:
The LADSPA filters I have in use are rather complex and in total expose a vast amount of control inputs (thousands!). This is particularly true for the "para-equalizer_x32_mono" from the LSP project, which alone have some 400 control I/Os each. I suspect some list property inside pipewire is overwhelmed by the amount of control IOs available for this single node.
How Reproducible:
always! The configuration file attachedclient.conf has 7 of these filters configured in the section "per-channel parametric equalizers" (One equalizer per physical speaker). Uncommenting and using only one of them works reliably. Uncommenting two or more of them fails reliably.
Steps to Reproduce:
- install LADSPA filters from Linux Studio Plugins (http://lsp-plug.in)
- optional: install LADSPA Butterworth X-Over filter from Steve Harris (http://plugin.org.uk) -- used in below configuration, but not really part of the problem I believe
- load a filter chain with a large amount of controls, for example the one from the configuration linked above
Actual Results:
Filter chain not showing up in pavucontrol, various pipewire tools triggering the stack overrun canary on execution.
Expected Results:
Filter chain showing up in pavucontrol and being operational
Additional Info (as attachments):
-
pw-dump > pw-dump.log
: pw-dump.log