Debian Patches
Status for cinnamon-screensaver/6.6.1-2
| Patch | Description | Author | Forwarded | Bugs | Origin | Last update |
|---|---|---|---|---|---|---|
| change-iso-flag-path.patch | Switch to the Debian path for iso flags | Margarita Manterola <marga@debian.org> | not-needed | 2016-12-08 | ||
| manager.py-Fix-unlocking-with-pygobject-3.57.patch | manager.py: Fix unlocking with pygobject >= 3.57 GLib.spawn_async() used to return a GLib.Pid that was a subclass of int. Since pygobject 3.57.0 (commit b6e14902, "Reimplement GLib.spawn_async in Python") it is a plain Python object implementing only __int__() and close(), so it no longer supports comparisons with integers or being passed to os.kill(). kill_fallback_window() therefore raises "TypeError: '>' not supported between instances of 'Pid' and 'int'" on `if self.fb_pid > 0`, which aborts unlock() halfway through: cs-backup-locker never gets its SIGTERM, but the stage window is already gone by then, so the backup locker grabs the screen and the user is left looking at "Something went wrong with the screensaver" with the desktop still locked. Store the plain pid instead. int() is safe on every pygobject version, since the old GLib.Pid already was an int - verified against 3.48.2 (Ubuntu 24.04), 3.50.0 (Debian trixie) and 3.57.0 (Debian sid). |
Fabio Fantoni <fantonifabio@tiscali.it> | yes | debian upstream | 2026-08-07 | |
| backup-locker-Fix-use-after-free-of-the-window-monitor-ca.patch | backup-locker: Fix use-after-free of the window monitor cancellable g_task_get_cancellable() returns a borrowed reference, but screensaver_window_gone() called g_clear_object() on it, dropping a reference cs-backup-locker never owned. When the GTask is then finalized the cancellable reaches a refcount of 0 and is freed, while the window_monitor_cancellable global still points at it. quit() later calls g_cancellable_cancel() on that dangling pointer and the process dies: #0 g_cancellable_cancel (libgio-2.0.so.0 + 0x580cd) #1 quit (cs-backup-locker + 0x5109) #2 g_main_dispatch #3 g_main_context_dispatch_unlocked #4 g_main_loop_run #5 gtk_main #6 main This only shows up when the main screensaver process dies while the backup locker is running: on a normal unlock the SIGTERM arrives before the screensaver window disappears, so screensaver_window_gone() never runs and the extra unref never happens. That is why it surfaced together with the pygobject 3.57 regression rather than on its own. Drop the bogus unref, and release the previous cancellable in setup_window_monitor() instead - it was overwritten on every screensaver window change without ever being unreffed, leaking one GCancellable each time. |
Fabio Fantoni <fantonifabio@tiscali.it> | yes | debian upstream | 2026-08-07 |
