Root cause: AuthRobot._enrollDevicesIdle() in js/ui/status/thunderbolt.js is declared async but is registered with ordinary GLib.idle_add(). During enrollDevice() D-Bus authorization, the function returns a Promise rather than a synchronous GSource continuation value. The same idle source is then repeatedly dispatched while the Promise is pending. After the queue is drained, it repeatedly enters the empty-queue path, causing GNOME Shell's zero-timeout main-loop spin and unresponsiveness.
Fix: Make _enrollDevicesIdle() a synchronous GLib idle callback. Start this._client.enrollDevice() using .then(...).catch(...) instead of await, and return GLib.SOURCE_REMOVE synchronously after dispatching one device. Keep queue-state updates and scheduling of the next device in the Promise completion handler. This guarantees one dispatch per idle source and prevents re-entry while authorization is pending. This compatibility fix was validated with the dock -> monitor -> NVMe chain: all devices authorized normally and the GNOME Shell busy loop did not occur. Assisted-By: gpt-5.6-terra ** Patch added: "tb-authrobot-sync-idle.patch" https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/2084015/+attachment/5996054/+files/tb-authrobot-sync-idle.patch -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/2084015 Title: gnome-shell has no response when plug-in unauthorized thunderbolt devices To manage notifications about this bug go to: https://bugs.launchpad.net/oem-priority/+bug/2084015/+subscriptions -- ubuntu-bugs mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs
