Bug#580218: Bringing upstream GTK+ patch into Debian Stable

Nicolai Stange nicolai.stange at zmaw.de
Tue May 4 12:28:57 UTC 2010


Package: libgtk2.0-0
Version: 2.12.12-1~lenny1
Severity: important


Hi to all Debian-GTK-maintainers,

using Debian Lenny in a production environment, we're faced with the
problem reported by Sebastien Bacher here:
https://bugzilla.gnome.org/show_bug.cgi?id=591434 (In conjunction with
a custom thunderbird 3.0.4 build).

The Debian package seems to have the patch applied since GTK+ version
2.17.x, but our responsible admin prefers to use packages from stable
because of the high number of users that would be affected by a broken
GTK or whatever here.

So my question is this: Could this patch be applied to libgtk2.0-0 in
Debian Lenny?  I think it is very small and other programs like gedit
seem to be affected, too.
For your convenience, to give you a quick view, I've attached the 
git log of the commitment to GTK+ I'm concerned about to this mail.

Thank you very much for having a look

Nicolai Stange

-- System Information:
Debian Release: 5.0.4
  APT prefers stable
  APT policy: (500, 'stable')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.26-2-amd64 (SMP w/1 CPU core)
Locale: LANG=en_US.ISO8859-1, LC_CTYPE=en_US.ISO8859-1 (charmap=ISO-8859-1) (ignored: LC_ALL set to en_US.ISO8859-1)
Shell: /bin/sh linked to /bin/bash

Versions of packages libgtk2.0-0 depends on:
ii  libatk1.0-0     1.22.0-1                 The ATK accessibility toolkit
ii  libc6           2.7-18lenny2             GNU C Library: Shared libraries
ii  libcairo2       1.6.4-7                  The Cairo 2D vector graphics libra
ii  libcomerr2      1.41.3-1                 common error description library
ii  libcups2        1.3.8-1+lenny8           Common UNIX Printing System(tm) - 
ii  libfontconfig1  2.6.0-3                  generic font configuration library
ii  libglib2.0-0    2.16.6-3                 The GLib library of C routines
ii  libgnutls26     2.4.2-6+lenny2           the GNU TLS library - runtime libr
ii  libgtk2.0-commo 2.12.12-1~lenny1         Common files for the GTK+ graphica
ii  libjpeg62       6b-14                    The Independent JPEG Group's JPEG 
ii  libkrb53        1.6.dfsg.4~beta1-5lenny3 MIT Kerberos runtime libraries
ii  libpango1.0-0   1.20.5-5+lenny1          Layout and rendering of internatio
ii  libpng12-0      1.2.27-2+lenny3          PNG library - runtime
ii  libtiff4        3.8.2-11.2               Tag Image File Format (TIFF) libra
ii  libx11-6        2:1.1.5-2                X11 client-side library
ii  libxcomposite1  1:0.4.0-3                X11 Composite extension library
ii  libxcursor1     1:1.1.9-1                X cursor management library
ii  libxdamage1     1:1.1.1-4                X11 damaged region extension libra
ii  libxext6        2:1.0.4-1                X11 miscellaneous extension librar
ii  libxfixes3      1:4.0.3-2                X11 miscellaneous 'fixes' extensio
ii  libxi6          2:1.1.4-1                X11 Input extension library
ii  libxinerama1    2:1.0.3-2                X11 Xinerama extension library
ii  libxrandr2      2:1.2.3-1                X11 RandR extension library
ii  libxrender1     1:0.9.4-2                X Rendering Extension client libra
ii  zlib1g          1:1.2.3.3.dfsg-12        compression library - runtime

Versions of packages libgtk2.0-0 recommends:
ii  hicolor-icon-theme      0.10-1           default fallback theme for FreeDes
ii  libgtk2.0-bin           2.12.12-1~lenny1 The programs for the GTK+ graphica

Versions of packages libgtk2.0-0 suggests:
ii  librsvg2-common           2.22.2-2lenny1 SAX-based renderer library for SVG

-- no debconf information
-------------- next part --------------
commit 9f822431970b9744f0184ae2d9e9977f607ffe4e
Author: Alexander Larsson <alexl at redhat.com>
Date:   Thu Aug 13 17:00:00 2009 +0200

    Make _gdk_window_process_updates_recurse reentrancy safe
    
    Apps may change the window hierarchy while recursing over it by
    destroying windows from the expose event handler. We need to copy
    the children list and ref all the children while recursing.
    
    This fixes some crashers in gedit (bug #589367, bug #591434)

diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c
index ba4ad63..e9c5512 100644
--- a/gdk/gdkwindow.c
+++ b/gdk/gdkwindow.c
@@ -4751,17 +4751,21 @@ _gdk_window_process_updates_recurse (GdkWindow *window,
   GdkWindowObject *child;
   GdkRegion *child_region;
   GdkRectangle r;
-  GList *l;
+  GList *l, *children;
 
   if (gdk_region_empty (expose_region))
     return;
 
+  /* Make this reentrancy safe for expose handlers freeing windows */
+  children = g_list_copy (private->children);
+  g_list_foreach (children, g_object_ref, NULL);
+
   /* Iterate over children, starting at topmost */
-  for (l = private->children; l != NULL; l = l->next)
+  for (l = children; l != NULL; l = l->next)
     {
       child = l->data;
 
-      if (!GDK_WINDOW_IS_MAPPED (child) || child->input_only || child->composited)
+      if (child->destroyed || !GDK_WINDOW_IS_MAPPED (child) || child->input_only || child->composited)
 	continue;
 
       /* Ignore offscreen children, as they don't draw in their parent and
@@ -4799,6 +4803,9 @@ _gdk_window_process_updates_recurse (GdkWindow *window,
       gdk_region_destroy (child_region);
     }
 
+  g_list_foreach (children, g_object_unref, NULL);
+  g_list_free (children);
+
   if (!gdk_region_empty (expose_region))
     {
       if (private->event_mask & GDK_EXPOSURE_MASK)


More information about the pkg-gnome-maintainers mailing list