Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Register
  • Sign in
  • pipewire pipewire
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 608
    • Issues 608
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 25
    • Merge requests 25
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Container Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar

Due to an influx of spam, we have had to impose restrictions on new accounts. Please see this wiki page for instructions on how to get full permissions. Sorry for the inconvenience.

  • PipeWirePipeWire
  • pipewirepipewire
  • Issues
  • #2933
Closed
Open
Issue created Jan 05, 2023 by Jost-Philip@Jost-Philip

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:

  1. install LADSPA filters from Linux Studio Plugins (http://lsp-plug.in)
  2. 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
  3. 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
Assignee
Assign to
Time tracking