wayland/lock: recover graphics initialization failures - #1106
Open
acrogenesis wants to merge 1 commit into
Open
acrogenesis wants to merge 1 commit into
acrogenesis wants to merge 1 commit into
Conversation
acrogenesis
force-pushed
the
fix/session-lock-graphics-recovery
branch
from
September 17, 2026 19:46
c06b08c to
9c2006e
Compare
acrogenesis
force-pushed
the
fix/session-lock-graphics-recovery
branch
from
September 17, 2026 19:47
9c2006e to
76c818b
Compare
Qt cannot retry RHI initialization on a failed window. Recreate failed lock windows with backoff instead of letting sceneGraphError abort the shell, preserving the compositor lock and QML state during recovery. Transfer pending retries when reloading surfaces.
acrogenesis
force-pushed
the
fix/session-lock-graphics-recovery
branch
from
September 17, 2026 20:16
76c818b to
ea6fc70
Compare
acrogenesis
marked this pull request as ready for review
September 17, 2026 20:22
Member
|
Have you observed failure paths besides OOM on launch? I'd rather just trigger a wayland unlock if we fail to allocate all lock surfaces initially instead of doing an exponential backoff on vram. If you're specifically observing a case where a scene graph error happens on unsuspend or something then that requires more consideration. |
Author
|
This happened when idle locking an already running desktop, rather than on resume: The sequence of events was:
The backoff was my proposed recovery approach, rather than something required by an observed resume failure. Your suggestion to unlock if initial lock-surface allocation fails fits the confirmed case. |
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.
Graphics initialization failure on a session-lock surface aborts Quickshell, leaving the session locked without an authentication UI.
Handle
sceneGraphErrorand recreate the failed native window: Qt cannot retry RHI initialization on that window. Preserve the compositor lock, QML input state, geometry, visibility, color and focus. Retries back off from 1 to 30 seconds, reset after a rendered frame, transfer on reload, and stop after unlock or output removal.Tested with Clang 22 and Qt 6.11.2:
EGL_BAD_ALLOCinjection, reload during pending retries, recovery, keyboard input and unlock pass with basic and threaded render loops.popupwindow::moveWithParentfailure remains.Physical NVIDIA memory exhaustion, older Qt and multiple monitors remain untested. Persistent allocation failure still requires resources to become available.