When module-filter-apply tries to find a matching source-output for a given sink-input and a stream with the same role exists on the monitor source of the filter, module-filter apply falsely assumes that the source belongs to another instance of the filter and tries to access source->output_from_master->source, which leads to a segmentation fault. This patch fixes the issue by ignoring the stream if the source is the monitor source of the filter. Bug link: https://bugs.freedesktop.org/show_bug.cgi?id=104958 --- src/modules/module-filter-apply.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/modules/module-filter-apply.c b/src/modules/module-filter-apply.c index 783d85ed..163d52a2 100644 --- a/src/modules/module-filter-apply.c +++ b/src/modules/module-filter-apply.c @@ -259,6 +259,12 @@ static bool find_paired_master(struct userdata *u, struct filter *filter, pa_obj if (pa_streq(g, group)) { if (pa_streq(module_name, so->source->module->name)) { + /* Make sure we are not routing to the monitor source + * of the same filter */ + if (so->source->monitor_of) { + pa_xfree(g); + continue; + } /* Make sure we're not routing to another instance of * the same filter. */ filter->source_master = so->source->output_from_master->source; -- 2.14.1