Having PulseAudio Volume Control open (`pavucontrol`) with "Show volume meters" enabled causes `pipewire-pulse` service to crash
Steps to reproduce
- Verify
pavucontrol
is not running. - Start the computer or run
systemctl --user restart pipewire-pulse pipewire
. - Verify the current
pipewire-pulse
status isrunning
withsystemctl --user status pipewire-pulse
- Run
pavucontrol
. - If the "Show volume meters" setting is disabled in PulseAudio Volume Control, enable it.
- Check the status of
pipewire-pulse
again withsystemctl --user status pipewire-pulse
.
Expected behavior
The systemd pipewire-pulse.service
status remains running
.
Observed behavior
The systemd pipewire-pulse.service
status becomes failed
. No audio can be heard from PulseAudio client applications.
Output of systemctl --user status --lines=50 pipewire-pulse
× pipewire-pulse.service - PipeWire PulseAudio
Loaded: loaded (/usr/lib/systemd/user/pipewire-pulse.service; disabled; preset: enabled)
Active: failed (Result: core-dump) since Sat 2023-07-01 19:12:21 PDT; 1h 27min ago
Duration: 625ms
TriggeredBy: × pipewire-pulse.socket
Process: 11998 ExecStart=/usr/bin/pipewire-pulse (code=dumped, signal=SEGV)
Main PID: 11998 (code=dumped, signal=SEGV)
CPU: 46ms
Jul 01 19:12:21 alex-pc systemd[1751]: pipewire-pulse.service: Main process exited, code=dumped, status=11/SEGV
Jul 01 19:12:21 alex-pc systemd[1751]: pipewire-pulse.service: Failed with result 'core-dump'.
Jul 01 19:12:21 alex-pc systemd[1751]: pipewire-pulse.service: Scheduled restart job, restart counter is at 5.
Jul 01 19:12:21 alex-pc systemd[1751]: Stopped PipeWire PulseAudio.
Jul 01 19:12:21 alex-pc systemd[1751]: pipewire-pulse.service: Start request repeated too quickly.
Jul 01 19:12:21 alex-pc systemd[1751]: pipewire-pulse.service: Failed with result 'core-dump'.
Jul 01 19:12:21 alex-pc systemd[1751]: Failed to start PipeWire PulseAudio.
Full backtrace extracted from output of coredumpctl gdb [process id]
with bt full
entered
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
Core was generated by `/usr/bin/pipewire-pulse'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x00007ff51784d9b7 in _mm_andnot_ps (__B=..., __A=...) at /usr/lib/gcc/x86_64-pc-linux-gnu/13.1.1/include/xmmintrin.h:254
254 return __builtin_ia32_andnps (__A, __B);
[Current thread is 1 (Thread 0x7ff5180826c0 (LWP 12000))]
(gdb) bt full
#0 0x00007ff51784d9b7 in _mm_andnot_ps (__B=..., __A=...) at /usr/lib/gcc/x86_64-pc-linux-gnu/13.1.1/include/xmmintrin.h:254
n = <optimized out>
in = {<optimized out>, <optimized out>, <optimized out>, <optimized out>}
ma = {1.14088554e+33, 4.70911493e+33, 8.7824836e+32, 7.09570584e+22}
mask = {-0, -0, -0, -0}
#1 peaks_abs_max_sse (peaks=<optimized out>, src=0x7ff518579fdc, n_samples=4294966963, max=<optimized out>) at ../pipewire/spa/plugins/audioconvert/peaks-ops-sse.c:90
n = <optimized out>
in = {<optimized out>, <optimized out>, <optimized out>, <optimized out>}
ma = {1.14088554e+33, 4.70911493e+33, 8.7824836e+32, 7.09570584e+22}
mask = {-0, -0, -0, -0}
#2 0x00007ff517832a8a in resample_peaks_process (r=0x5635b091ca28, src=0x7ff518081940, in_len=0x7ff5180810fc, dst=0x5635b091cb20, out_len=0x7ff5180810f8)
at ../pipewire/spa/plugins/audioconvert/resample-peaks.c:44
s = 0x7ff518579040
d = 0x7ff5175f4020
m = <optimized out>
pd = 0x5635b0881c00
c = 0
i = <optimized out>
o = 1
end = <optimized out>
i_count = 0
o_count = 1
#3 0x00007ff51783dc45 in impl_node_process (object=<optimized out>) at ../pipewire/spa/plugins/audioconvert/audioconvert.c:2940
in_len = 1024
out_len = 50
src_datas = {0x7ff518579040, 0x0 <repeats 36 times>, 0x7ff51923427a <epoll_wait+106>, 0x0, 0x100000000, 0x7ff518081aa0, 0xffffffff00000020, 0x0, 0x7ff519434c59 <impl_pollfd_wait+121>, 0xb0901d2800000001, 0x5635, 0x0 <repeats 11 times>, 0x7ff519434b23 <impl_pollfd_add+51>, 0x0, 0x1919222b71, 0x5635b096c658, 0xbdd7efbcebb51c00, 0x7ff518081b70, 0x7ff519423207 <loop_add_source+71>, 0x5635b06efd00}
in_datas = <optimized out>
dst_datas = {0x5635b0a5c5a0, 0x0 <repeats 64 times>}
remap_src_datas = {0x0 <repeats 65 times>}
remap_dst_datas = {0x0 <repeats 65 times>}
out_datas = 0x5635b091cb20
dst_remap = <optimized out>
i = <optimized out>
j = <optimized out>
n_src_datas = <optimized out>
n_dst_datas = <optimized out>
n_mon_datas = <optimized out>
remap = <optimized out>
n_samples = <optimized out>
max_in = <optimized out>
n_out = 50
max_out = 50
quant_samples = <optimized out>
port = <optimized out>
ctrlport = <optimized out>
buf = <optimized out>
out_bufs = {0x5635b09216e8, 0x0 <repeats 64 times>}
bd = <optimized out>
dir = <optimized out>
tmp = <optimized out>
res = <optimized out>
in_passthrough = <optimized out>
mix_passthrough = <optimized out>
resample_passthrough = <optimized out>
out_passthrough = <optimized out>
in_avail = <optimized out>
flush_in = true
flush_out = true
draining = <optimized out>
in_empty = <optimized out>
io = <optimized out>
ctrlio = <optimized out>
ctrl = <optimized out>
__func__ = "impl_node_process"
#4 0x00007ff517817dc6 in impl_node_process (object=0x5635b0907f18) at ../pipewire/spa/plugins/audioconvert/audioadapter.c:1497
_f = <optimized out>
_res = <optimized out>
_n = <optimized out>
this = 0x5635b0907f18
status = <optimized out>
fstatus = <optimized out>
retry = <optimized out>
__func__ = "impl_node_process"
#5 0x00007ff519375669 in process_node (data=0x5635b0901710) at ../pipewire/src/pipewire/impl-node.c:1217
_f = <optimized out>
_res = <optimized out>
_n = <optimized out>
this = 0x5635b0901710
a = 0x7ff518f64000
status = <optimized out>
p = <optimized out>
data_system = 0x5635b06f2fb0
nsec = <optimized out>
cmd = 1
this = 0x5635b0901710
__func__ = "node_on_fd_events"
#6 node_on_fd_events (source=<optimized out>) at ../pipewire/src/pipewire/impl-node.c:1289
cmd = 1
this = 0x5635b0901710
__func__ = "node_on_fd_events"
#7 0x00007ff5194275b6 in loop_iterate (object=0x5635b06f3048, timeout=<optimized out>) at ../pipewire/spa/plugins/support/loop.c:483
s = <optimized out>
impl = 0x5635b06f3048
ep = {{events = 1, data = 0x5635b0901d28}, {events = 0, data = 0x0} <repeats 31 times>}
e = <optimized out>
i = 0
nfds = 1
#8 0x00007ff519357892 in do_loop (user_data=0x5635b06f2ee0) at ../pipewire/src/pipewire/data-loop.c:65
__clframe = {__cancel_routine = <optimized out>, __cancel_arg = <optimized out>, __do_it = <optimized out>, __cancel_type = <optimized out>}
this = 0x5635b06f2ee0
res = <optimized out>
cb = <optimized out>
m = <optimized out>
data = <optimized out>
iterate = <optimized out>
__func__ = "do_loop"
#9 0x00007ff5191b044b in start_thread (arg=<optimized out>) at pthread_create.c:444
ret = <optimized out>
pd = <optimized out>
unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140690664915312, 3042552264352246699, -120, 11, 140733411438560, 140690638512128, -3038978420961268821, -3038976351447897173}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
not_first_call = <optimized out>
#10 0x00007ff519233d64 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:100
Edited by Alex Folland