Activity log for bug #2019776

Date Who What changed Old value New value Message
2023-05-16 03:06:04 Yao Wei bug added bug
2023-05-16 03:07:03 Yao Wei bug added subscriber OEM Solutions Group: Engineers
2023-05-16 03:07:11 Yao Wei tags oem-priority originate-from-2017628 somerville
2023-05-16 03:07:15 Yao Wei bug watch added https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/6698
2023-05-16 03:07:15 Yao Wei bug task added gnome-shell
2023-05-16 11:42:31 Bug Watch Updater gnome-shell: status Unknown New
2024-05-01 00:00:28 Marco Trevisan (Treviño) gnome-shell (Ubuntu): importance Undecided Medium
2024-05-01 00:00:31 Marco Trevisan (Treviño) gnome-shell (Ubuntu): assignee Marco Trevisan (Treviño) (3v1n0)
2024-05-01 00:00:35 Marco Trevisan (Treviño) gnome-shell (Ubuntu): status New In Progress
2024-05-03 17:02:14 Marco Trevisan (Treviño) gnome-shell (Ubuntu): status In Progress Confirmed
2024-05-03 17:02:18 Marco Trevisan (Treviño) gnome-shell (Ubuntu): status Confirmed In Progress
2024-05-03 17:02:43 Marco Trevisan (Treviño) nominated for series Ubuntu Noble
2024-05-03 17:02:43 Marco Trevisan (Treviño) bug task added gnome-shell (Ubuntu Noble)
2024-05-25 13:52:26 Bug Watch Updater gnome-shell: status New Fix Released
2024-05-27 06:19:57 Daniel van Vugt tags oem-priority originate-from-2017628 somerville fixed-in-gnome-shell-47 fixed-upstream oem-priority originate-from-2017628 somerville
2024-05-27 06:20:15 Daniel van Vugt tags fixed-in-gnome-shell-47 fixed-upstream oem-priority originate-from-2017628 somerville fixed-in-gnome-shell-46.2 fixed-upstream oem-priority originate-from-2017628 somerville
2024-06-14 04:56:22 Marco Trevisan (Treviño) description If gnome-shell is launched directly instead of launched through gnome-session, the process spawning `ibus-daemon` might cause deadlock and unable to start the graphics. Since `ibusManager.js` checks whether service `org.freedesktop.IBus.session.GNOME.service` exists. In our case with Ubuntu ubiquity, we've turned off `gnome-session.service` so that the check failed and gnome-shell spawns `ibus-daemon` after the check. I tried using gdb to gnome-shell and discovered it's hanging in a child process spawning `ibus-daemon`, but is still in child_setup of `Glib.spawn_async` function: ``` root@dell-desktop:/home/oem# cat /tmp/log == Stack trace for context 0x5584da793180 == #0 5584dbd2d478 i resource:///org/gnome/shell/misc/ibusManager.js:119 (2776aa47bfb0 @ 12) #1 5584dbd2d3a8 i resource:///org/gnome/shell/misc/ibusManager.js:114 (2776aa47bf60 @ 426) #2 5584dbd2d308 i resource:///org/gnome/shell/misc/ibusManager.js:90 (2776aa47bec0 @ 162) #3 5584dbd2d268 i self-hosted:689 (34e3dc212650 @ 15) ``` which is, in ibusManager.js: ``` const [success_, pid] = GLib.spawn_async( null, cmdLine, env, GLib.SpawnFlags.SEARCH_PATH | GLib.SpawnFlags.DO_NOT_REAP_CHILD, () => { try { global.context.restore_rlimit_nofile(); # <- here } catch (err) { } } ); ``` Further code tracing found out that the deadlock is not during the execution of the function (`restore_rlimit_nofile`) but the access to the GObject (probably `global.context`). Currently my propose to work around this issue is to add a 5 second `setTimeout` to the caller of `_spawn` function in `ibusManager.js`. I've lost debugging information but I can try reproducing the issue and give the backtrace from gdb if needed. [ Impact ] If gnome-shell is launched directly instead of launched through gnome-session, the process spawning `ibus-daemon` might cause deadlock and unable to start the graphics. Since `ibusManager.js` checks whether service `org.freedesktop.IBus.session.GNOME.service` exists. In our case with Ubuntu ubiquity, we've turned off `gnome-session.service` so that the check failed and gnome-shell spawns `ibus-daemon` after the check. [ Test case ] - In a terminal launch - env XDG_RUNTIME_DIR=/tmp/nested-runtime \ dbus-run-session gnome-shell --nested --wayland - The shell should start without hanging - Repeat this multiple times and ensure it works reliably [ Regression potential ] - Shell (and or its extensions) may not be able to spawn child processes - Applications launched by the shell may inherit the rlimits of mutter --- I tried using gdb to gnome-shell and discovered it's hanging in a child process spawning `ibus-daemon`, but is still in child_setup of `Glib.spawn_async` function: ``` root@dell-desktop:/home/oem# cat /tmp/log == Stack trace for context 0x5584da793180 == #0 5584dbd2d478 i resource:///org/gnome/shell/misc/ibusManager.js:119 (2776aa47bfb0 @ 12) #1 5584dbd2d3a8 i resource:///org/gnome/shell/misc/ibusManager.js:114 (2776aa47bf60 @ 426) #2 5584dbd2d308 i resource:///org/gnome/shell/misc/ibusManager.js:90 (2776aa47bec0 @ 162) #3 5584dbd2d268 i self-hosted:689 (34e3dc212650 @ 15) ``` which is, in ibusManager.js: ```             const [success_, pid] = GLib.spawn_async(                 null, cmdLine, env,                 GLib.SpawnFlags.SEARCH_PATH | GLib.SpawnFlags.DO_NOT_REAP_CHILD,                 () => {                     try {                         global.context.restore_rlimit_nofile(); # <- here                     } catch (err) {                     }                 }             ); ``` Further code tracing found out that the deadlock is not during the execution of the function (`restore_rlimit_nofile`) but the access to the GObject (probably `global.context`). Currently my propose to work around this issue is to add a 5 second `setTimeout` to the caller of `_spawn` function in `ibusManager.js`. I've lost debugging information but I can try reproducing the issue and give the backtrace from gdb if needed.
2024-06-14 07:50:23 Launchpad Janitor gnome-shell (Ubuntu): status In Progress Fix Released