[Bug 2043517] [NEW] gnome-shell on non-active VT busy-loops through libwayland-server.so (sometimes)
Launchpad Bug Tracker
2043517 at bugs.launchpad.net
Fri Nov 22 16:19:04 UTC 2024
You have been subscribed to a public bug by Alessandro Astone (aleasto):
[ Impact ]
gnome-shell running on an inactive VT will sometimes start using 100% CPU.
When that happens, the Xwayland child process is seen using 40% CPU.
[ Test Plan ]
1. Log in to GNOME Wayland
2. Open a terminal window
3. Terminate Xwayland if it was automatically started:
$ pkill -SIGTERM Xwayland
4. Run the following command:
$ sleep 5; xlsclients
5. Within 5 seconds, switch TTY with Ctrl+Alt+F3
6. Log-in to the terminal
7. Run:
$ top -p $(pidof gnome-shell)
8. Verify that gnome-shell is using close to 0% CPU, for at least 5 seconds.
9. Return to GNOME by switching TTY with Ctrl+Alt+F2
10. Verify that the `xlsclients` command has terminated
[ Where problems could occur ]
Xwayland is used to run X11 applications in a Wayland desktop.
If Xwayland is malfunctioning, you will notice by not being able to run X11 apps anymore.
In a Wayland desktop those would typically be legacy electron-based or java-based apps.
[ Original Bug Report ]
I run several gnome sessions at once - different users on different
Virtual Terminals.
Sometimes, gnome-shell for a non-active VT starts using 100% CPU. Or,
actually 99% CPU because it's doing IPC as well. And the corresponding
XWayland uses 40% CPU.
FWIW, sending SIGSTOP to either gnome-shell or XWayland stops the other
one from busy-looping as well.
If I switch back to the affected VT, it appears to function fine, but it
is still using 100% + 40% CPU.
Version numbers:
Ubuntu 22.04.3 LTS
gnome-shell 42.9-0ubuntu2
xwayland 2:22.1.1-1ubuntu0.7
$ ps -aux | grep 'alan .*gnome-shell$'
alan 9248 26.1 3.4 5492888 269136 ? Rsl 19:54 30:26 /usr/bin/gnome-shell
$ sudo strace -p 9248 2>&1|head
strace: Process 9248 attached
epoll_wait(37, [{events=EPOLLIN, data={u32=403234816, u64=139797293752320}}], 32, 0) = 1
recvmsg(21, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\1\0\0\0\0\0\f\0\3\0\0\0", iov_len=752}, {iov_base="", iov_len=3344}], msg_iovlen=2, msg_controllen=0, msg_flags=MSG_CMSG_CLOEXEC}, MSG_DONTWAIT|MSG_CMSG_CLOEXEC) = 12
write(4, "\1\0\0\0\0\0\0\0", 8) = 8
sendmsg(21, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\3\0\0\0\0\0\f\0[\2\0\0\1\0\0\0\1\0\f\0\3\0\0\0", iov_len=24}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, MSG_DONTWAIT|MSG_NOSIGNAL) = 24
poll([{fd=4, events=POLLIN}, {fd=8, events=POLLIN}, {fd=9, events=POLLIN}, {fd=19, events=POLLIN}, {fd=20, events=POLLIN}, {fd=23, events=POLLIN}, {fd=24, events=POLLIN}, {fd=25, events=POLLIN}, {fd=34, events=POLLIN}, {fd=36, events=POLLIN}, {fd=37, events=POLLIN}, {fd=54, events=POLLIN}, {fd=63, events=POLLIN}, {fd=66, events=POLLIN}], 14, 79809702) = 2 ([{fd=4, revents=POLLIN}, {fd=37, revents=POLLIN}])
read(4, "\2\0\0\0\0\0\0\0", 16) = 8
write(4, "\1\0\0\0\0\0\0\0", 8) = 8
epoll_wait(37, [{events=EPOLLIN, data={u32=403234816, u64=139797293752320}}], 32, 0) = 1
The recvmsg() call is here:
#0 __libc_recvmsg (fd=21, msg=0x7fff1de64a50, flags=1073741888) at ../sysdeps/unix/sysv/linux/recvmsg.c:35
#1 0x00007f2531ea5ad6 in () at /lib/x86_64-linux-gnu/libwayland-server.so.0
#2 0x00007f2531ea4eea in wl_event_loop_dispatch () at /lib/x86_64-linux-gnu/libwayland-server.so.0
#3 0x00007f2531d2b45b in wayland_event_source_dispatch (base=<optimised out>, callback=<optimised out>, data=<optimised out>)
at ../src/wayland/meta-wayland.c:110
#4 0x00007f2532b42d3b in g_main_dispatch (context=0x55c0046cc8f0) at ../../../glib/gmain.c:3419
#5 g_main_context_dispatch (context=0x55c0046cc8f0) at ../../../glib/gmain.c:4137
#6 0x00007f2532b98258 in g_main_context_iterate.constprop.0
(context=0x55c0046cc8f0, block=block at entry=1, dispatch=dispatch at entry=1, self=<optimised out>) at ../../../glib/gmain.c:4213
#7 0x00007f2532b422b3 in g_main_loop_run (loop=0x55c00698ae30) at ../../../glib/gmain.c:4413
#8 0x00007f2531cd0b79 in meta_context_run_main_loop (context=context at entry=0x55c0046c70c0, error=error at entry=0x7fff1de64f08)
at ../src/core/meta-context.c:437
#9 0x000055c003cf4f12 in main (argc=<optimised out>, argv=<optimised out>) at ../src/main.c:650
The sendmsg() call is here:
Thread 1 "gnome-shell" hit Breakpoint 1, __libc_sendmsg (fd=21, msg=0x7fff1de64c50, flags=16448) at ../sysdeps/unix/sysv/linux/sendmsg.c:26
26 ../sysdeps/unix/sysv/linux/sendmsg.c: No such file or directory.
(gdb) where
#0 __libc_sendmsg (fd=21, msg=0x7fff1de64c50, flags=16448) at ../sysdeps/unix/sysv/linux/sendmsg.c:26
#1 0x00007f2531ea1c9d in () at /lib/x86_64-linux-gnu/libwayland-server.so.0
#2 0x00007f2531ea565e in wl_display_flush_clients () at /lib/x86_64-linux-gnu/libwayland-server.so.0
#3 0x00007f2531d2b437 in wayland_event_source_prepare (base=base at entry=0x55c004a374d0, timeout=timeout at entry=0x7fff1de64dc4)
at ../src/wayland/meta-wayland.c:97
#4 0x00007f2532b428e7 in g_main_context_prepare (context=0x55c0046cc8f0, priority=0x7fff1de64e50) at ../../../glib/gmain.c:3739
#5 0x00007f2532b98123 in g_main_context_iterate.constprop.0
(context=0x55c0046cc8f0, block=block at entry=1, dispatch=dispatch at entry=1, self=<optimised out>) at ../../../glib/gmain.c:4193
#6 0x00007f2532b422b3 in g_main_loop_run (loop=0x55c00698ae30) at ../../../glib/gmain.c:4413
#7 0x00007f2531cd0b79 in meta_context_run_main_loop (context=context at entry=0x55c0046c70c0, error=error at entry=0x7fff1de64f08)
at ../src/core/meta-context.c:437
#8 0x000055c003cf4f12 in main (argc=<optimised out>, argv=<optimised out>) at ../src/main.c:650
** Affects: xorg-server
Importance: Unknown
Status: Fix Released
** Affects: mutter (Ubuntu)
Importance: Undecided
Status: Won't Fix
** Affects: xwayland (Ubuntu)
Importance: Undecided
Assignee: Alessandro Astone (aleasto)
Status: In Progress
** Affects: mutter (Ubuntu Jammy)
Importance: Undecided
Status: Won't Fix
** Affects: xwayland (Ubuntu Jammy)
Importance: Undecided
Assignee: Alessandro Astone (aleasto)
Status: In Progress
** Affects: mutter (Ubuntu Noble)
Importance: Undecided
Status: Won't Fix
** Affects: xwayland (Ubuntu Noble)
Importance: Undecided
Assignee: Alessandro Astone (aleasto)
Status: In Progress
** Affects: mutter (Ubuntu Oracular)
Importance: Undecided
Status: Won't Fix
** Affects: xwayland (Ubuntu Oracular)
Importance: Undecided
Assignee: Alessandro Astone (aleasto)
Status: In Progress
** Tags: jammy
--
gnome-shell on non-active VT busy-loops through libwayland-server.so (sometimes)
https://bugs.launchpad.net/bugs/2043517
You received this bug notification because you are a member of Ubuntu Sponsors, which is subscribed to the bug report.
More information about the Ubuntu-sponsors
mailing list