Pipewire uses 100% CPU core after resume from suspend
After my PC resumes from suspend, pipewire uses one CPU core 100% without playing back anything. Applications which want to use its functionality (Chromium or Easy Effects) hang. Restarting it with systemd is also not possible, the command just waits until it times out.
GDB backtrace:
Thread 3 (Thread 0x7f678d4006c0 (LWP 10588) "pw-data-loop"):
#0 0x00007f678f114486 in epoll_wait (epfd=10, events=events@entry=0x7f678d3ffa30, maxevents=32, timeout=-1) at ../sysdeps/unix/sysv/linux/epoll_wait.c:30
#1 0x00007f678f2f61a4 in impl_pollfd_wait (object=<optimized out>, pfd=<optimized out>, ev=0x7f678d3ffc00, n_ev=<optimized out>, timeout=<optimized out>) at ../spa/plugins/support/system.c:137
#2 0x00007f678f2e873d in loop_iterate (object=object@entry=0x560f08a265b8, timeout=timeout@entry=-1) at ../spa/plugins/support/loop.c:471
#3 0x00007f678f3a5134 in do_loop (user_data=0x560f08a26450) at ../src/pipewire/data-loop.c:65
#4 0x00007f678f092bb2 in start_thread (arg=<optimized out>) at pthread_create.c:447
#5 0x00007f678f113df4 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:100
Thread 2 (Thread 0x7f678e8006c0 (LWP 10587) "module-rt"):
#0 0x00007f678f114486 in epoll_wait (epfd=15, events=events@entry=0x7f678e7ffab0, maxevents=32, timeout=-1) at ../sysdeps/unix/sysv/linux/epoll_wait.c:30
#1 0x00007f678f2f61a4 in impl_pollfd_wait (object=<optimized out>, pfd=<optimized out>, ev=0x7f678e7ffc80, n_ev=<optimized out>, timeout=<optimized out>) at ../spa/plugins/support/system.c:137
#2 0x00007f678f2e873d in loop_iterate (object=0x560f08a3b6a8, timeout=-1) at ../spa/plugins/support/loop.c:471
#3 0x00007f678f3ee8f5 in do_loop (user_data=0x560f08a3b490) at ../src/pipewire/thread-loop.c:295
#4 0x00007f678f092bb2 in start_thread (arg=<optimized out>) at pthread_create.c:447
#5 0x00007f678f113df4 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:100
Thread 1 (Thread 0x7f678f35bb80 (LWP 10583) "pipewire"):
#0 0x00007f678cb7628b in spa_alsa_pause (state=0x560f08bc09d8) at ../spa/plugins/alsa/alsa-pcm.c:3568
#1 spa_alsa_pause (state=0x560f08cbdfc8) at ../spa/plugins/alsa/alsa-pcm.c:3577
#2 0x00007f678cb60a1e in spa_alsa_pause (state=<optimized out>) at ../spa/plugins/alsa/alsa-pcm.c:3568
#3 impl_node_send_command (object=<optimized out>, command=<optimized out>) at ../spa/plugins/alsa/alsa-pcm-sink.c:334
#4 0x00007f678d59fc18 in impl_node_send_command (object=0x560f08c4dc38, command=0x7ffe137339c0) at ../spa/plugins/audioconvert/audioadapter.c:950
#5 0x00007f678f3c9bf7 in suspend_node (this=this@entry=0x560f08c373c0) at ../src/pipewire/impl-node.c:448
#6 0x00007f678f3ca048 in node_send_command (object=<optimized out>, command=0x560f08b8cf50) at ../src/pipewire/impl-node.c:598
#7 0x00007f678e8f8980 in node_demarshal_send_command (object=<optimized out>, msg=<optimized out>) at ../src/modules/module-protocol-native/protocol-native.c:1348
#8 0x00007f678e8e757d in process_messages (data=0x560f08b264e8) at ../src/modules/module-protocol-native.c:387
#9 0x00007f678e8e7a69 in connection_data (data=0x560f08b264e8, fd=<optimized out>, mask=1) at ../src/modules/module-protocol-native.c:458
#10 0x00007f678f2e87f6 in loop_iterate (object=0x560f08a19068, timeout=<optimized out>) at ../spa/plugins/support/loop.c:496
#11 0x00007f678f3c2e24 in pw_main_loop_run (loop=loop@entry=0x560f08a18f10) at ../src/pipewire/main-loop.c:128
#12 0x0000560f0815d468 in main (argc=<optimized out>, argv=<optimized out>) at ../src/daemon/pipewire.c:111
Full backtrace:
Thread 3 (Thread 0x7f678d4006c0 (LWP 10588) "pw-data-loop"):
#0 0x00007f678f114486 in epoll_wait (epfd=10, events=events@entry=0x7f678d3ffa30, maxevents=32, timeout=-1) at ../sysdeps/unix/sysv/linux/epoll_wait.c:30
sc_ret = -4
sc_cancel_oldtype = 0
sc_ret = <optimized out>
#1 0x00007f678f2f61a4 in impl_pollfd_wait (object=<optimized out>, pfd=<optimized out>, ev=0x7f678d3ffc00, n_ev=<optimized out>, timeout=<optimized out>) at ../spa/plugins/support/system.c:137
ep = 0x7f678d3ffa30
i = <optimized out>
nfds = <optimized out>
#2 0x00007f678f2e873d in loop_iterate (object=object@entry=0x560f08a265b8, timeout=timeout@entry=-1) at ../spa/plugins/support/loop.c:471
_f = <optimized out>
_res = -95
_o = <optimized out>
impl = 0x560f08a265b8
ep = {{events = 1, data = 0x560f08a2e700}, {events = 1, data = 0x560f08dcad90}, {events = 1, data = 0x560f08b2dc10}, {events = 0, data = 0x0}, {events = 0, data = 0x0}, {events = 0, data = 0x0}, {events = 0, data = 0x0}, {events = 0, data = 0x0}, {events = 0, data = 0x0}, {events = 0, data = 0x0}, {events = 822083584, data = 0x6d3a9afe56002f00}, {events = 0, data = 0x7f678d3ffcf0}, {events = 2361397248, data = 0x7f678d3ffe90}, {events = 0, data = 0x7ffe13733a50}, {events = 2361393152, data = 0x7f678f08653d <__vsnprintf_internal+127>}, {events = 2369781392, data = 0x7f678d3ffeac}, {events = 2369781427, data = 0x0}, {events = 2, data = 0x0}, {events = 0, data = 0x0}, {events = 0, data = 0x0}, {events = 0, data = 0x0}, {events = 0, data = 0x0}, {events = 0, data = 0x0}, {events = 0, data = 0x0}, {events = 0, data = 0x0}, {events = 0, data = 0x6d3a9afe56002f00}, {events = 8388608, data = 0x7f678f05fc26 <__GI___snprintf+152>}, {events = 32, data = 0x7f678d3ffe90}, {events = 2369781200, data = 0x6d3a9afe56002f00}, {events = 0, data = 0x0}, {events = 0, data = 0x295c}, {events = 2369783488, data = 0x7f678d4006c0}}
e = <optimized out>
i = <optimized out>
nfds = <optimized out>
#3 0x00007f678f3a5134 in do_loop (user_data=0x560f08a26450) at ../src/pipewire/data-loop.c:65
__cancel_buf = {__cancel_jmp_buf = {{__cancel_jmp_buf = {140082760550064, 8382402389232629446, -120, 0, 140729224739408, 140082719752192, -8459065287711869242, -8459069639901137210}, __mask_was_saved = 0}}, __pad = {0x7f678d3ffef0, 0x0, 0x7f678f2d9365 <custom_start+53>, 0x7f678d400cdc}}
__cancel_routine = 0x7f678f3a4ff0 <thread_cleanup>
__cancel_arg = 0x560f08a26450
__not_first_call = <optimized out>
this = 0x560f08a26450
res = <optimized out>
cb = <optimized out>
m = <optimized out>
data = <optimized out>
iterate = <optimized out>
__func__ = "do_loop"
#4 0x00007f678f092bb2 in start_thread (arg=<optimized out>) at pthread_create.c:447
ret = <optimized out>
pd = <optimized out>
out = <optimized out>
unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140082728142528, 8382402389232629446, -120, 0, 140729224739408, 140082719752192, -8459065287690897722, -8459070039645178170}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
not_first_call = <optimized out>
#5 0x00007f678f113df4 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:100
No locals.
Thread 2 (Thread 0x7f678e8006c0 (LWP 10587) "module-rt"):
#0 0x00007f678f114486 in epoll_wait (epfd=15, events=events@entry=0x7f678e7ffab0, maxevents=32, timeout=-1) at ../sysdeps/unix/sysv/linux/epoll_wait.c:30
sc_ret = -4
sc_cancel_oldtype = 0
sc_ret = <optimized out>
#1 0x00007f678f2f61a4 in impl_pollfd_wait (object=<optimized out>, pfd=<optimized out>, ev=0x7f678e7ffc80, n_ev=<optimized out>, timeout=<optimized out>) at ../spa/plugins/support/system.c:137
ep = 0x7f678e7ffab0
i = <optimized out>
nfds = <optimized out>
#2 0x00007f678f2e873d in loop_iterate (object=0x560f08a3b6a8, timeout=-1) at ../spa/plugins/support/loop.c:471
_f = <optimized out>
_res = -95
_o = <optimized out>
impl = 0x560f08a3b6a8
ep = {{events = 1, data = 0x560f08a437f0}, {events = 0, data = 0x0}, {events = 822083584, data = 0x6d3a9afe56002f00}, {events = 0, data = 0x7f678e7ffcf0}, {events = 2382368768, data = 0x7f678e7ffe90}, {events = 0, data = 0x7ffe137324d0}, {events = 2382364672, data = 0x7f678f08653d <__vsnprintf_internal+127>}, {events = 2390752912, data = 0x7f678e7ffeac}, {events = 2390752947, data = 0x0}, {events = 2, data = 0x0}, {events = 0, data = 0x0}, {events = 0, data = 0x0}, {events = 0, data = 0x0}, {events = 0, data = 0x0}, {events = 0, data = 0x0}, {events = 0, data = 0x0}, {events = 0, data = 0x0}, {events = 0, data = 0x6d3a9afe56002f00}, {events = 8388608, data = 0x7f678f05fc26 <__GI___snprintf+152>}, {events = 32, data = 0x7f678e7ffe90}, {events = 2390752720, data = 0x6d3a9afe56002f00}, {events = 0, data = 0x0}, {events = 0, data = 0x295b}, {events = 2390755008, data = 0x7f678e8006c0}, {events = 0, data = 0x0}, {events = 0, data = 0x0}, {events = 0, data = 0x0}, {events = 0, data = 0x0}, {events = 0, data = 0x560f08a3b50c}, {events = 0, data = 0x560f08a3b490}, {events = 0, data = 0xffffffffffffff88}, {events = 0, data = 0x7ffe137324d0}}
e = <optimized out>
i = <optimized out>
nfds = <optimized out>
#3 0x00007f678f3ee8f5 in do_loop (user_data=0x560f08a3b490) at ../src/pipewire/thread-loop.c:295
_f = <optimized out>
_res = <optimized out>
_o = <optimized out>
this = 0x560f08a3b490
res = <optimized out>
__func__ = "do_loop"
#4 0x00007f678f092bb2 in start_thread (arg=<optimized out>) at pthread_create.c:447
ret = <optimized out>
pd = <optimized out>
out = <optimized out>
unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140082749114048, 8382402389232629446, -120, 0, 140729224733904, 140082740723712, -8459068036469967162, -8459070039645178170}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
not_first_call = <optimized out>
#5 0x00007f678f113df4 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:100
No locals.
Thread 1 (Thread 0x7f678f35bb80 (LWP 10583) "pipewire"):
#0 0x00007f678cb7628b in spa_alsa_pause (state=0x560f08bc09d8) at ../spa/plugins/alsa/alsa-pcm.c:3568
follower = <optimized out>
__func__ = <optimized out>
_l = <optimized out>
_if = <optimized out>
_f = <optimized out>
_res = <optimized out>
_f = <optimized out>
_res = <optimized out>
_res = <optimized out>
_o = <optimized out>
_f = <optimized out>
#1 spa_alsa_pause (state=0x560f08cbdfc8) at ../spa/plugins/alsa/alsa-pcm.c:3577
follower = 0x560f08bc09d8
__func__ = <optimized out>
#2 0x00007f678cb60a1e in spa_alsa_pause (state=<optimized out>) at ../spa/plugins/alsa/alsa-pcm.c:3568
follower = <optimized out>
__func__ = <optimized out>
_l = <optimized out>
_if = <optimized out>
_f = <optimized out>
_res = <optimized out>
_f = <optimized out>
_res = <optimized out>
_res = <optimized out>
_o = <optimized out>
_f = <optimized out>
#3 impl_node_send_command (object=<optimized out>, command=<optimized out>) at ../spa/plugins/alsa/alsa-pcm-sink.c:334
this = <optimized out>
res = <optimized out>
__func__ = "impl_node_send_command"
#4 0x00007f678d59fc18 in impl_node_send_command (object=0x560f08c4dc38, command=0x7ffe137339c0) at ../spa/plugins/audioconvert/audioadapter.c:950
_f = <optimized out>
_res = -95
_n = <optimized out>
this = 0x560f08c4dc38
res = 0
__func__ = "impl_node_send_command"
#5 0x00007f678f3c9bf7 in suspend_node (this=this@entry=0x560f08c373c0) at ../src/pipewire/impl-node.c:448
_f = <optimized out>
_res = -95
_n = <optimized out>
res = 0
p = <optimized out>
__func__ = "suspend_node"
#6 0x00007f678f3ca048 in node_send_command (object=<optimized out>, command=0x560f08b8cf50) at ../src/pipewire/impl-node.c:598
data = <optimized out>
node = <optimized out>
id = 0
__func__ = "node_send_command"
#7 0x00007f678e8f8980 in node_demarshal_send_command (object=<optimized out>, msg=<optimized out>) at ../src/modules/module-protocol-native/protocol-native.c:1348
_f = <optimized out>
_res = true
_list = 0x560f08c312c8
_s = 0x560f08c312c8
_cursor = {link = {next = 0x560f08c312c8, prev = 0x560f08c31328}, cb = {funcs = 0x0, data = 0x0}, removed = 0x0, priv = 0x0}
_ci = <optimized out>
_count = 0
resource = <optimized out>
prs = {data = 0x560f08b8cf48, size = 24, _padding = 0, state = {offset = 24, flags = 0, frame = 0x0}}
command = 0x560f08b8cf50
#8 0x00007f678e8e757d in process_messages (data=0x560f08b264e8) at ../src/modules/module-protocol-native.c:387
demarshal = 0x7f678e912080 <pw_protocol_native_node_method_demarshal.lto_priv>
_err = <optimized out>
marshal = <optimized out>
permissions = <optimized out>
required = <optimized out>
conn = 0x560f08b35fe0
client = 0x560f08b26340
context = 0x560f08a21320
msg = 0x560f08b27b08
resource = 0x560f08c31250
res = <optimized out>
__func__ = "process_messages"
#9 0x00007f678e8e7a69 in connection_data (data=0x560f08b264e8, fd=<optimized out>, mask=1) at ../src/modules/module-protocol-native.c:458
this = 0x560f08b264e8
client = 0x560f08b26340
res = <optimized out>
#10 0x00007f678f2e87f6 in loop_iterate (object=0x560f08a19068, timeout=<optimized out>) at ../spa/plugins/support/loop.c:496
s = <optimized out>
impl = 0x560f08a19068
ep = {{events = 1, data = 0x560f08b27a90}, {events = 4, data = 0x560f08be3a20}, {events = 4, data = 0x560f08b84e50}, {events = 4, data = 0x560f08d0a4a0}, {events = 4, data = 0x560f08b27a90}, {events = 1, data = 0x560f08b4a5f0}, {events = 4, data = 0x560f08b9d870}, {events = 4, data = 0x560f08b3d770}, {events = 1, data = 0x560f08a2e830}, {events = 1, data = 0x560f08a465f0}, {events = 1, data = 0x560f08a64600}, {events = 1, data = 0x560f08a51690}, {events = 1, data = 0x560f08a2e830}, {events = 2, data = 0x7f678f3d680b <do_replace+395>}, {events = 2401172160, data = 0x560f08aa99a0}, {events = 2403315181, data = 0x20}, {events = 144, data = 0x560f08aa91d0}, {events = 2403315167, data = 0x10}, {events = 2371878960, data = 0x560f08a21620}, {events = 0, data = 0x0}, {events = 0, data = 0x0}, {events = 0, data = 0x6d3a9afe56002f00}, {events = 144839456, data = 0x560f08aa92c0}, {events = 144839456, data = 0x10}, {events = 2403299366, data = 0xa}, {events = 2403299167, data = 0x7f678f3d48cd <pw_impl_metadata_register+237>}, {events = 2403299366, data = 0x560f08aa9120}, {events = 144839456, data = 0x7f678f3a991d <pw_context_new+4221>}, {events = 144839456, data = 0x560f08a21800}, {events = 135659592, data = 0x560f08a18f40}, {events = 144839488, data = 0x7f678f3f6d3c}, {events = 144840280, data = 0x7ffe13733d7f}}
e = <optimized out>
i = 0
nfds = 1
#11 0x00007f678f3c2e24 in pw_main_loop_run (loop=loop@entry=0x560f08a18f10) at ../src/pipewire/main-loop.c:128
_f = <optimized out>
_res = <optimized out>
_o = <optimized out>
res = 0
__func__ = "pw_main_loop_run"
#12 0x0000560f0815d468 in main (argc=<optimized out>, argv=<optimized out>) at ../src/daemon/pipewire.c:111
context = 0x560f08a21320
loop = 0x560f08a18f10
properties = 0x0
c = <optimized out>
res = 0
path = "/usr/bin/pipewire.conf\000\000\240\003\000\000\000\000\000\000\240\003\000\000\000\000\000\000\240\003\000\000\000\000\000\000D\000\000\000\000\000\000\000D\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\a\000\000\000\004\000\000\000`\254\036\000\000\000\000\000`\274\036\000\000\000\000\000`\274\036\000\000\000\000\000\020\000\000\000\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\000\000\000\000\000\000P\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000P\345td\004\000\000\000\374\260\033\000\000\000\000\000"...
config_name = <optimized out>
level = <optimized out>
long_options = {{name = 0x560f0815e08e "help", has_arg = 0, flag = 0x0, val = 104}, {name = 0x560f0815e093 "version", has_arg = 0, flag = 0x0, val = 86}, {name = 0x560f0815e09b "config", has_arg = 1, flag = 0x0, val = 99}, {name = 0x560f0815e0a2 "verbose", has_arg = 0, flag = 0x0, val = 118}, {name = 0x0, has_arg = 0, flag = 0x0, val = 0}}
__func__ = "main"
If I can do anything else to help to further debug this, let me know.
Version: 1.0.5