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