When a GPU hangs and the driver resets it, GNOME users have usually lost their whole session. A Google Summer of Code project aims to end that, and the code is now up for review as a merge request to Mutter, GNOME’s compositor.
Student developer Toluwaleke Ogundipe opened the merge request, titled “Recover from GPU resets,” on Aug. 17 and summed up the project in a GSoC wrap-up post on Friday. A GPU reset invalidates the EGL context and wipes all GPU memory, and until now Mutter had no way to come back from that. With his changes, “Mutter recovers successfully and is back to normal operation instantly. Everything is restored, from the background to windows and cursors,” he wrote. His demo triggers a reset every second while the session stays responsive.
What changed since July
When Phoronix first covered the work in early July, Mutter could survive a reset, but the display stayed blank until something forced a new framebuffer, and the desktop background came back with garbled textures. Both problems are now fixed. The display returns on its own with a pause Ogundipe calls “virtually unnoticeable,” though monitors on the reset GPU may briefly go dark.
Recovery now covers much more of the desktop. Wayland surfaces come back showing their last rendered frame, Xcursor and Wayland client cursors restore, blur and other offscreen effects rebuild their pipelines, and PipeWire screencast and remote-desktop streams stop and restart cleanly.
Under the hood, Ogundipe replaced a fragile approach that relied on GLib signal ordering with a dedicated ClutterGraphicsRecoveryContext, which emits recovery signals in a fixed, documented sequence so each part of Cogl, Clutter and Meta knows when to tear down and rebuild its GPU state. Only the context-recreation step can fail, and if it does, recovery stops and reports the failure. Because the Cogl context can now be recreated, objects that used to hold bare pointers to it had to take real references to avoid use-after-free crashes.
What’s left
GNOME Shell’s UI and background-image recovery aren’t complete yet. Background image loading recently moved out of Mutter, so reloading the image after a reset now falls to downstream consumers like Shell. The merge request still needs upstream review, and users will only see the feature once it lands in a Mutter release and their distribution ships it.


WebProNews is an iEntry Publication