Defer the panel-button toggle out of the press gesture (shell crash, GNOME 48+)#165
Open
daniel-g-carrasco wants to merge 1 commit into
Open
Conversation
…GNOME 48+)
Clicking the panel button can abort the whole shell:
Clutter:ERROR clutter-gesture.c:544 set_state:
assertion failed: (new_state == CLUTTER_GESTURE_STATE_POSSIBLE)
clutter_press_gesture_point_began <- clutter_gesture_handle_event
The 'button-press-event' handler calls _toggle_search_light() -> show()
synchronously while the Clutter press gesture is still in flight. show()
reparents the entry/search actors and grabs key focus; mutating the actor
tree mid-gesture corrupts the gesture state machine, and the next gesture
point event asserts -> SIGABRT. On Wayland this ends the whole session.
Defer the toggle with GLib.idle_add so the gesture completes before any
actor surgery runs (imperceptible, one idle tick). Sibling of icedman#164, which
fixes the same class of crash on the app-launch (_release_ui) path.
Tested on GNOME 50 / Fedora 44: before, clicking the panel button reliably
SIGABRTs gnome-shell (coredump-confirmed); after, it opens normally.
Likely the same root cause as icedman#82 and icedman#133.
Author
|
Part of #166 (the full GNOME 50 / Clutter 18 root-cause + the other call sites that still need the same treatment) — this PR is the press-gesture deferral piece. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Symptom
Clicking the search-light panel button can abort the whole GNOME Shell (on Wayland this ends the session; after a couple of crashes GNOME drops into safe-mode and disables all extensions):
Cause
The
'button-press-event'handler calls_toggle_search_light() → show()synchronously while the Clutter press gesture is still in flight.show()reparents the entry/search actors and grabs key focus; mutating the actor tree mid-gesture corrupts the gesture state machine, and the next gesture point event asserts → SIGABRT.Fix
Defer the toggle with
GLib.idle_addso the press gesture completes before any actor surgery runs — imperceptible (one idle tick).GLib/Clutterare already imported.This is the sibling of #164, which fixes the same class of crash on the app-launch (
_release_ui) path. Likely the same root cause behind #82 ("crash if used first after boot") and #133 ("crash on startup use when Tiling Shell is also enabled").Testing
GNOME 50 / Fedora 44: before, clicking the panel button reliably SIGABRTs gnome-shell (coredump-confirmed on 2026-06-13); after, it opens normally and stays stable.