Crash in pipewire-pulse
I just experienced a random crash out of the blue today and am posting the crash dump here for analysis.
coredumpctl gdb /usr/bin/pipewire
PID: 6503 (pipewire-pulse)
UID: 1000 (saivert)
GID: 1000 (saivert)
Signal: 11 (SEGV)
Timestamp: Sun 2023-09-10 10:45:01 CEST (4min 45s ago)
Command Line: /usr/bin/pipewire-pulse
Executable: /usr/bin/pipewire
Control Group: /user.slice/user-1000.slice/user@1000.service/session.slice/pipewire-pulse.service
Unit: user@1000.service
User Unit: pipewire-pulse.service
Slice: user-1000.slice
Owner UID: 1000 (saivert)
Boot ID: 2442c1939a1f4abeb6a6541ffa736aa9
Machine ID: 1cfb1b6d3c3c4479af84316e39bda99a
Hostname: fedora
Storage: /var/lib/systemd/coredump/core.pipewire-pulse.1000.2442c1939a1f4abeb6a6541ffa736aa9.6503.1694335501000000.zst (present)
Size on Disk: 30.7M
Package: pipewire/0.3.78-1.fc38
build-id: 034593ccc5658d964c6c38d09623a0946c4817a7
Message: Process 6503 (pipewire-pulse) of user 1000 dumped core.
Module libspa-audiomixer.so from rpm pipewire-0.3.78-1.fc38.x86_64
Module libspa-audioconvert.so from rpm pipewire-0.3.78-1.fc38.x86_64
Module libpipewire-module-fallback-sink.so from rpm pipewire-0.3.78-1.fc38.x86_64
Module libblkid.so.1 from rpm util-linux-2.38.1-4.fc38.x86_64
Module libpcre2-8.so.0 from rpm pcre2-10.42-1.fc38.1.x86_64
Module libffi.so.8 from rpm libffi-3.4.4-2.fc38.x86_64
Module libselinux.so.1 from rpm libselinux-3.5-1.fc38.x86_64
Module libmount.so.1 from rpm util-linux-2.38.1-4.fc38.x86_64
Module libz.so.1 from rpm zlib-1.2.13-3.fc38.x86_64
Module libgmodule-2.0.so.0 from rpm glib2-2.76.4-3.fc38.x86_64
Module libglib-2.0.so.0 from rpm glib2-2.76.4-3.fc38.x86_64
Module libgobject-2.0.so.0 from rpm glib2-2.76.4-3.fc38.x86_64
Module libgio-2.0.so.0 from rpm glib2-2.76.4-3.fc38.x86_64
Module libavahi-client.so.3 from rpm avahi-0.8-22.fc38.x86_64
Module libavahi-common.so.3 from rpm avahi-0.8-22.fc38.x86_64
Module libpipewire-module-protocol-pulse.so from rpm pipewire-0.3.78-1.fc38.x86_64
Module libpipewire-module-metadata.so from rpm pipewire-0.3.78-1.fc38.x86_64
Module libpipewire-module-adapter.so from rpm pipewire-0.3.78-1.fc38.x86_64
Module libpipewire-module-client-node.so from rpm pipewire-0.3.78-1.fc38.x86_64
Module libpipewire-module-protocol-native.so from rpm pipewire-0.3.78-1.fc38.x86_64
Module libpipewire-module-rt.so from rpm pipewire-0.3.78-1.fc38.x86_64
Module libdbus-1.so.3 from rpm dbus-1.14.8-1.fc38.x86_64
Module libspa-dbus.so from rpm pipewire-0.3.78-1.fc38.x86_64
Module liblz4.so.1 from rpm lz4-1.9.4-2.fc38.x86_64
Module libzstd.so.1 from rpm zstd-1.5.5-1.fc38.x86_64
Module liblzma.so.5 from rpm xz-5.4.1-1.fc38.x86_64
Module libcap.so.2 from rpm libcap-2.48-6.fc38.x86_64
Module libsystemd.so.0 from rpm systemd-253.7-1.fc38.x86_64
Module libspa-journal.so from rpm pipewire-0.3.78-1.fc38.x86_64
Module libspa-support.so from rpm pipewire-0.3.78-1.fc38.x86_64
Module libpipewire-0.3.so.0 from rpm pipewire-0.3.78-1.fc38.x86_64
Module pipewire from rpm pipewire-0.3.78-1.fc38.x86_64
Stack trace of thread 6510:
#0 0x00007fa59c6a3745 impl_node_process.lto_priv.1 (libspa-audiomixer.so + 0xc745)
#1 0x00007fa5ab950a4a node_on_fd_events.lto_priv.0 (libpipewire-0.3.so.0 + 0x65a4a)
#2 0x00007fa5ab6cdce6 loop_iterate (libspa-support.so + 0x8ce6)
#3 0x00007fa5ab932e83 do_loop (libpipewire-0.3.so.0 + 0x47e83)
#4 0x00007fa5ab799907 start_thread (libc.so.6 + 0x8c907)
#5 0x00007fa5ab81f774 __clone (libc.so.6 + 0x112774)
Stack trace of thread 6505:
#0 0x00007fa5ab81fc72 epoll_wait (libc.so.6 + 0x112c72)
#1 0x00007fa5ab6db768 impl_pollfd_wait (libspa-support.so + 0x16768)
#2 0x00007fa5ab6cdc29 loop_iterate (libspa-support.so + 0x8c29)
#3 0x00007fa5ab976007 do_loop (libpipewire-0.3.so.0 + 0x8b007)
#4 0x00007fa5ab799907 start_thread (libc.so.6 + 0x8c907)
#5 0x00007fa5ab81f774 __clone (libc.so.6 + 0x112774)
Stack trace of thread 6503:
#0 0x00007fa5ab80e0fa read (libc.so.6 + 0x1010fa)
#1 0x00007fa5ab6db207 impl_eventfd_read (libspa-support.so + 0x16207)
#2 0x00007fa5ab6ce8fa loop_invoke (libspa-support.so + 0x98fa)
#3 0x00007fa5ab953982 node_deactivate.lto_priv.0 (libpipewire-0.3.so.0 + 0x68982)
#4 0x00007fa5ab9572c0 idle_node.lto_priv.0 (libpipewire-0.3.so.0 + 0x6c2c0)
#5 0x00007fa5ab9621c8 pw_impl_node_set_state (libpipewire-0.3.so.0 + 0x771c8)
#6 0x00007fa59d54b952 client_node_command (libpipewire-module-client-node.so + 0x11952)
#7 0x00007fa59d55af34 client_node_demarshal_command.lto_priv.0 (libpipewire-module-client-node.so + 0x20f34)
#8 0x00007fa597fcaa91 process_remote (libpipewire-module-protocol-native.so + 0x15a91)
#9 0x00007fa597fcb278 on_remote_data (libpipewire-module-protocol-native.so + 0x16278)
#10 0x00007fa5ab6cdce6 loop_iterate (libspa-support.so + 0x8ce6)
#11 0x00007fa5ab95155b pw_main_loop_run (libpipewire-0.3.so.0 + 0x6655b)
#12 0x000055759111a606 main (pipewire + 0x1606)
#13 0x00007fa5ab734b4a __libc_start_call_main (libc.so.6 + 0x27b4a)
#14 0x00007fa5ab734c0b __libc_start_main@@GLIBC_2.34 (libc.so.6 + 0x27c0b)
#15 0x000055759111a7a5 _start (pipewire + 0x17a5)
ELF object binary architecture: AMD x86-64
GNU gdb (GDB) Fedora Linux 13.2-3.fc38
Copyright (C) 2023 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /usr/bin/pipewire...
This GDB supports auto-downloading debuginfo from the following URLs:
<https://debuginfod.fedoraproject.org/>
Enable debuginfod for this session? (y or [n]) y
Debuginfod has been enabled.
To make this setting permanent, add 'set debuginfod enabled on' to .gdbinit.
Reading symbols from /home/saivert/.cache/debuginfod_client/034593ccc5658d964c6c38d09623a0946c4817a7/debuginfo...
warning: Can't open file /memfd:pipewire-memfd:flags=0x0000000f,type=2,size=65664 (deleted) during file-backed mapping note processing
warning: Can't open file /memfd:pipewire-memfd:flags=0x0000000f,type=2,size=2312 (deleted) during file-backed mapping note processing
warning: Can't open file /memfd:pipewire-memfd:flags=0x0000000f,type=2,size=4096 (deleted) during file-backed mapping note processing
[New LWP 6510]
[New LWP 6505]
[New LWP 6503]
--Type <RET> for more, q to quit, c to continue without paging--c
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Core was generated by `/usr/bin/pipewire-pulse'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 impl_node_process (object=0x557596163928) at ../spa/plugins/audiomixer/mixer-dsp.c:721
721 inio->status = SPA_STATUS_NEED_DATA;
[Current thread is 1 (Thread 0x7fa59cf8a6c0 (LWP 6510))]
(gdb) bt
#0 impl_node_process (object=0x557596163928) at ../spa/plugins/audiomixer/mixer-dsp.c:721
#1 0x00007fa5ab950a4a in process_node (data=0x5575960e8470) at ../src/pipewire/impl-node.c:1234
#2 node_on_fd_events (source=<optimized out>) at ../src/pipewire/impl-node.c:1310
#3 0x00007fa5ab6cdce6 in loop_iterate (object=0x5575916b3328, timeout=<optimized out>) at ../spa/plugins/support/loop.c:483
#4 0x00007fa5ab932e83 in do_loop (user_data=0x5575916b31c0) at ../src/pipewire/data-loop.c:65
#5 0x00007fa5ab799907 in start_thread (arg=<optimized out>) at pthread_create.c:444
#6 0x00007fa5ab81f774 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:100
(gdb) bt full
#0 impl_node_process (object=0x557596163928) at ../spa/plugins/audiomixer/mixer-dsp.c:721
inport = <optimized out>
inb = <optimized out>
bd = 0x557593b59b88
offs = <optimized out>
inio = 0x7fa59d49c000
this = 0x557596163928
outport = 0x557596164b00
outio = 0x557594dbcae0
n_buffers = 1
i = 0
maxsize = <optimized out>
buffers = 0x557596165c80
outb = <optimized out>
datas = 0x557596166c80
__func__ = "impl_node_process"
#1 0x00007fa5ab950a4a in process_node (data=0x5575960e8470) at ../src/pipewire/impl-node.c:1234
_f = <optimized out>
_n = <optimized out>
this = 0x5575960e8470
a = 0x7fa59d49e000
status = <optimized out>
p = 0x557594dbc560
data_system = 0x5575916b3290
nsec = <optimized out>
cmd = 1
this = 0x5575960e8470
__func__ = "node_on_fd_events"
#2 node_on_fd_events (source=<optimized out>) at ../src/pipewire/impl-node.c:1310
cmd = 1
this = 0x5575960e8470
__func__ = "node_on_fd_events"
#3 0x00007fa5ab6cdce6 in loop_iterate (object=0x5575916b3328, timeout=<optimized out>) at ../spa/plugins/support/loop.c:483
--Type <RET> for more, q to quit, c to continue without paging--q
Quit
(gdb) list
716
717 if (!SPA_FLAG_IS_SET(bd->chunk->flags, SPA_CHUNK_FLAG_EMPTY)) {
718 datas[n_buffers] = SPA_PTROFF(bd->data, offs, void);
719 buffers[n_buffers++] = inb;
720 }
721 inio->status = SPA_STATUS_NEED_DATA;
722 }
723
724 outb = dequeue_buffer(this, outport);
725 if (SPA_UNLIKELY(outb == NULL)) {
(gdb)