Skip to content

segfault in pipewire when using ladspa plugin #644

@xobs

Description

@xobs

I'm experiencing a segfault in pipewire when using the ladspa plugin:

(gdb) run
Starting program: /usr/bin/pipewire -c filter-chain.conf
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
[New Thread 0x7fffe9b9b6c0 (LWP 66372)]
[New Thread 0x7fffe922d6c0 (LWP 66373)]
2025-06-15T03:54:17.032Z | DEBUG |  df::tract | Loading model DeepFilterNet3_ll_onnx.tar.gz

Thread 3 "data-loop.0" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffe922d6c0 (LWP 66373)]
ladspa::ffi::connect_port (instance=0x0, port_num=0, data_location=0x7fffe88f10c0) at src/ffi.rs:236
236             let port = handle.descriptor.ports[port_num as usize];
(gdb) p handle
$2 = (*mut ladspa::ffi::Handle) 0x0
(gdb) list
231                                port_num: c_ulong,
232                                data_location: *mut ladspa_h::Data) {
233         unsafe {
234             let handle: &mut Handle = mem::transmute(instance);
235
236             let port = handle.descriptor.ports[port_num as usize];
237
238             // Create appropriate pointers to port data. Mutable locations are wrapped in refcells.
239             let data = match port.desc {
240                 super::PortDescriptor::AudioInput => {
(gdb) bt
#0  ladspa::ffi::connect_port (instance=0x0, port_num=0, data_location=0x7fffe88f10c0) at src/ffi.rs:236
#1  0x00007fffe8a01f71 in impl_process (object=0x5555555a7c98, in=<optimized out>, out=0x7fffe922c270, n_samples=1024)
    at ../spa/plugins/filter-graph/filter-graph.c:250
#2  0x00007ffff7c7c8b3 in spa_filter_graph_process (object=<optimized out>, in=0x7fffe922c670, out=0x7fffe922c270, n_samples=1024)
    at ../spa/include/spa/filter-graph/filter-graph.h:137
#3  playback_process (d=0x5555555babb0) at ../src/modules/module-filter-chain.c:932
#4  0x00007ffff7f4d619 in call_process (impl=0x55555564c280) at ../src/pipewire/stream.c:450
#5  call_process (impl=0x55555564c280) at ../src/pipewire/stream.c:443
#6  impl_node_process_output (object=0x55555564c280) at ../src/pipewire/stream.c:1127
#7  0x00007fffe8944243 in spa_node_process_fast (object=<optimized out>) at ../spa/include/spa/node/node.h:756
#8  impl_node_process (object=0x55555567ac78) at ../spa/plugins/audioconvert/audioadapter.c:1817
#9  0x00007ffff7f28097 in spa_node_process_fast (object=<optimized out>) at ../spa/include/spa/node/node.h:756
#10 process_node.isra.0 (data=data@entry=0x5555556a4750, nsec=nsec@entry=17845689604530) at ../src/pipewire/impl-node.c:1498
#11 0x00007ffff7f28526 in node_on_fd_events (source=<optimized out>) at ../src/pipewire/impl-node.c:1575
#12 0x00007ffff7c9e7c6 in loop_iterate (object=<optimized out>, timeout=<optimized out>) at ../spa/plugins/support/loop.c:726
#13 0x00007ffff7ef7741 in do_loop (user_data=0x5555555658b0) at ../src/pipewire/data-loop.c:67
#14 0x00007ffff7d5c1d4 in start_thread (arg=<optimized out>) at pthread_create.c:448
#15 0x00007ffff7ddecec in __GI___clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78
(gdb) 

You can see that it's entered the plugin due to the log message getting printed, but somehow the instance being returned is NULL.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions