module-simple-protocol-tcp crashes in spa_list_remove()
Version: master (d1f521af)
Distribution: Arch Linux
Desktop Environment: GNOME 40.4.0
Description of Problem:
I use an Android app called SimpleProtocolPlayer NG to stream my computer's audio on my phone. After streaming for a couple of minutes, if I switch to a different app (e.g. Youtube) and start playing a video there, then pipewire-pulse
crashes altogether on my machine:
Thread 2 (Thread 0x7f6ba9951640 (LWP 997)):
#0 0x00007f6baa40392e in epoll_wait () from /usr/lib/libc.so.6
No symbol table info available.
#1 0x00007f6baa5debc9 in impl_pollfd_wait (object=<optimized out>, pfd=<optimized out>, ev=0x7f6ba9950bd0, n_ev=<optimized out>, timeout=<optimized out>) at ../pipewire/spa/plugins/support/system.c:155
ep = 0x7f6ba9950a20
i = <optimized out>
nfds = <optimized out>
#2 0x00007f6baa5d7ba4 in loop_iterate (object=0x5619535a0798, timeout=-1) at ../pipewire/spa/plugins/support/loop.c:316
_f = <optimized out>
_res = -95
_o = <optimized out>
impl = 0x5619535a0798
loop = 0x5619535a07b0
ep = {{events = 1, data = 0x5619535a88b0}, {events = 0, data = 0x0} <repeats 31 times>}
i = <optimized out>
nfds = <optimized out>
#3 0x00007f6baa533e17 in do_loop (user_data=0x5619535a0640) at ../pipewire/src/pipewire/data-loop.c:80
_f = <optimized out>
_res = -95
_o = <optimized out>
__clframe = {__cancel_routine = <optimized out>, __cancel_arg = <optimized out>, __do_it = <optimized out>, __cancel_type = <optimized out>}
this = 0x5619535a0640
res = <optimized out>
__func__ = "do_loop"
#4 0x00007f6baa4da259 in start_thread () from /usr/lib/libpthread.so.0
No symbol table info available.
#5 0x00007f6baa4035e3 in clone () from /usr/lib/libc.so.6
No symbol table info available.
Thread 1 (Thread 0x7f6baa2e2200 (LWP 995)):
#0 spa_list_remove (elem=0x561953753c80) at ../pipewire/spa/include/spa/utils/list.h:72
No locals.
#1 client_free (client=0x561953753c80) at ../pipewire/src/modules/module-protocol-simple.c:161
impl = <optimized out>
__func__ = "client_free"
#2 0x00007f6baa56e499 in process_work_queue (data=0x5619535dc020, count=<optimized out>) at ../pipewire/src/pipewire/work-queue.c:86
this = 0x5619535dc020
item = 0x5619536e1050
tmp = 0x5619535dc010
__func__ = "process_work_queue"
#3 0x00007f6baa5d2e3a in source_event_func (source=0x5619535dc060) at ../pipewire/spa/plugins/support/loop.c:488
impl = 0x5619535dc060
count = 2
res = <optimized out>
__func__ = "source_event_func"
#4 0x00007f6baa5d7c3b in loop_iterate (object=0x561953596478, timeout=<optimized out>) at ../pipewire/spa/plugins/support/loop.c:333
s = <optimized out>
impl = 0x561953596478
loop = 0x561953596490
ep = {{events = 24, data = 0x561953626d10}, {events = 1, data = 0x5619535dc060}, {events = 1, data = 0x5619535f66a0}, {events = 1, data = 0x56195359e590}, {events = 1, data = 0x5619536e63e0}, {events = 2, data = 0x7f6baa4c5a00 <main_arena>}, {events = 2857701904, data = 0x0}, {events = 2, data = 0x0}, {events = 0, data = 0x0}, {events = 124, data = 0x5b0000006e}, {events = 8, data = 0x0}, {events = 14, data = 0x7f6baa4c5a00 <main_arena>}, {events = 2857891685, data = 0x0}, {events = 0, data = 0x7f6baa3904e1 <malloc+449>}, {events = 0, data = 0x7f6baa57f765}, {events = 14, data = 0x5619535e01d0}, {events = 1, data = 0x0}, {events = 2857891685, data = 0x7f6baa5564f6 <do_replace+198>}, {events = 0, data = 0x5619535d0300}, {events = 2857130496, data = 0x5619535e01d0}, {events = 1398670096, data = 0x5619535deef0}, {events = 1, data = 0x5619535deff0}, {events = 1398652368, data = 0x56195359e9c8}, {events = 0, data = 0x0}, {events = 0, data = 0x0}, {events = 2857853463, data = 0x8b76d37231b36900}, {events = 1398400880, data = 0x56195359e770}, {events = 1398670112, data = 0x5619535deff0}, {events = 1398402960, data = 0x56195359e770}, {events = 2857852297, data = 0x7f6baa5516d0 <pw_impl_metadata_register+176>}, {events = 1398400880, data = 0x5619535d05d0}, {events = 1398665200, data = 0x7f6baa52bad8 <pw_context_new+3608>}}
i = 1
nfds = <optimized out>
#5 0x00007f6baa54256b in pw_main_loop_run (loop=loop@entry=0x561953596330) at ../pipewire/src/pipewire/main-loop.c:154
_f = <optimized out>
_res = -95
_o = <optimized out>
res = 0
__func__ = "pw_main_loop_run"
#6 0x0000561951fac29f in main (argc=<optimized out>, argv=<optimized out>) at ../pipewire/src/daemon/pipewire.c:123
context = 0x56195359e770
loop = 0x561953596330
properties = 0x0
c = <optimized out>
res = 0
path = "/usr/bin/pipewire-pulse.conf\000\000\000\000\210\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000S\345td\004\000\000\000P\003\000\000\000\000\000\000P\003\000\000\000\000\000\000P\003\000\000\000\000\000\000P", '\000' <repeats 16 times>, "\064\\\252k\177\000\000\200D_\252k\177\000\000 Z\031\000\000\000\000\000\340\063\\\252k\177\000\000\027\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\210\070\\\252k\177\000\000\000\000\000\000\000\000\000\000\024\000\000\000\000\000\000\000lA_\252k\177\000\000\000\262\302w\375\177\000\000\000\200a\252k\177\000\000\000\262\302w\375\177\000\000"...
config_name = <optimized out>
long_options = {{name = 0x561951fad075 "help", has_arg = 0, flag = 0x0, val = 104}, {name = 0x561951fad07a "version", has_arg = 0, flag = 0x0, val = 86}, {name = 0x561951fad082 "config", has_arg = 1, flag = 0x0, val = 99}, {name = 0x0, has_arg = 0, flag = 0x0, val = 0}}
__func__ = "main"
How Reproducible: Always
Steps to Reproduce:
- Load the
module-simple-protol-tcp
module:pactl load-module module-simple-protocol-tcp port=12345 record=true
- Open SimpleProtocolPlayer NG on your phone
- Stream for a couple of minutes
- Switch to any app that can play video/audio (e.g. Youtube)
- Reproduce any audio/video on this app
-
pipewire-pulse
should crash on your computer now
Actual Results:
pipewire-pulse
crashes, but the systemd service automatically restarts itself.
Expected Results:
No crash.
Additional Info Eg. pw-dump -N > file
(As Attachment Please): pw-dump.txt