[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#990903: unblock: marco/1.24.1-3



Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: unblock

Please unblock package marco

[ Reason ]
Recently, a longterm runtime flaw in marco has been hunted down and
resolved.

+  * debian/patches:
+    + Add 0002_tabpopup-fix-cairo-surface-leak.patch. Fix cairo surface leak in
+      src/ui/draw-workspace.c. (Closes: 990859).

-> This fixes marco freezing more and more until it has become unusable
after 1-2 weeks of runtime.

[ Impact ]
Marco regularly requires a restart (marco --replace) from the cmdline to keep a
session usable without this fix being applied.

[ Tests ]
Patch introspection, accepted upstream. Smoke test of the marco WM (nothing broken at first spot).

[ Risks ]
Window manager issues in MATE Desktop Environment which then would need a
follow-up upload.

[ Checklist ]
  [x] all changes are documented in the d/changelog
  [x] I reviewed all changes and I approve them
  [x] attach debdiff against the package in testing

[ Other info ]
None.

unblock marco/1.24.1-3
diff -Nru marco-1.24.1/debian/changelog marco-1.24.1/debian/changelog
--- marco-1.24.1/debian/changelog	2021-02-02 10:45:35.000000000 +0100
+++ marco-1.24.1/debian/changelog	2021-07-10 23:47:08.000000000 +0200
@@ -1,3 +1,11 @@
+marco (1.24.1-3) unstable; urgency=medium
+
+  * debian/patches:
+    + Add 0002_tabpopup-fix-cairo-surface-leak.patch. Fix cairo surface leak in
+      src/ui/draw-workspace.c. (Closes: 990859).
+
+ -- Mike Gabriel <sunweaver@debian.org>  Sat, 10 Jul 2021 23:47:08 +0200
+
 marco (1.24.1-2) unstable; urgency=medium
 
   [ Martin Wimpress ]
diff -Nru marco-1.24.1/debian/patches/0002_tabpopup-fix-cairo-surface-leak.patch marco-1.24.1/debian/patches/0002_tabpopup-fix-cairo-surface-leak.patch
--- marco-1.24.1/debian/patches/0002_tabpopup-fix-cairo-surface-leak.patch	1970-01-01 01:00:00.000000000 +0100
+++ marco-1.24.1/debian/patches/0002_tabpopup-fix-cairo-surface-leak.patch	2021-07-10 23:43:40.000000000 +0200
@@ -0,0 +1,51 @@
+From 8f204678be6d888ad1d2904e28af1aa9f2ad8e11 Mon Sep 17 00:00:00 2001
+From: Faidon Liambotis <paravoid@debian.org>
+Date: Sat, 3 Jul 2021 01:10:22 +0300
+Subject: [PATCH] tabpopup: fix cairo surface leak
+
+Commit 6b05da5e49996a2101edfd703dd3f5d91011d726 introduced a Cairo
+surface leak, by calling gdk_cairo_surface_create_from_pixbuf() but then
+never freeing those surfaces with cairo_surface_destroy().
+
+This manifested in leaking resources when switching between virtual
+desktops, as observed using xrestop ("Pxms" column), which made the
+desktop slow and ultimately unusable after a few weeks of uptime.
+
+Fixes #685
+---
+ src/ui/draw-workspace.c | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+diff --git a/src/ui/draw-workspace.c b/src/ui/draw-workspace.c
+index 8229abd00..fc8f82e55 100644
+--- a/src/ui/draw-workspace.c
++++ b/src/ui/draw-workspace.c
+@@ -131,6 +131,7 @@ draw_window (GtkWidget                   *widget,
+       /* If the icon is too big, fall back to mini icon. */
+       if (icon_w > (winrect->width - 2) || icon_h > (winrect->height - 2))
+         {
++          cairo_surface_destroy (icon);
+           icon = gdk_cairo_surface_create_from_pixbuf (win->mini_icon, scale, NULL);
+           if (icon)
+             {
+@@ -139,7 +140,10 @@ draw_window (GtkWidget                   *widget,
+ 
+               /* Give up. */
+               if (icon_w > (winrect->width - 2) || icon_h > (winrect->height - 2))
+-                icon = NULL;
++                {
++                  cairo_surface_destroy (icon);
++                  icon = NULL;
++                }
+             }
+         }
+     }
+@@ -155,6 +159,8 @@ draw_window (GtkWidget                   *widget,
+       cairo_clip (cr);
+       cairo_paint (cr);
+       cairo_restore (cr);
++
++      cairo_surface_destroy (icon);
+     }
+ 
+   gtk_style_context_get_color (style, state, &color);
diff -Nru marco-1.24.1/debian/patches/series marco-1.24.1/debian/patches/series
--- marco-1.24.1/debian/patches/series	2021-02-02 10:44:11.000000000 +0100
+++ marco-1.24.1/debian/patches/series	2021-07-10 23:43:47.000000000 +0200
@@ -1 +1,2 @@
 0001_no-shadows-for-side-tiled-windows.patch
+0002_tabpopup-fix-cairo-surface-leak.patch

Reply to: