Your message dated Sun, 11 Jul 2021 18:36:42 +0000
with message-id <[email protected]>
and subject line unblock marco
has caused the Debian Bug report #990903,
regarding unblock: marco/1.24.1-3
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)


-- 
990903: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=990903
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
User: [email protected]
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 <[email protected]>  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 <[email protected]>
+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

--- End Message ---
--- Begin Message ---
Unblocked.

--- End Message ---

Reply via email to