Bug#550352: message "firefox-bin(pid) Gdk-WARNING **: XID collision, trouble ahead" fills .xsession-errors

Dave Witbrodt dawitbro at sbcglobal.net
Tue Mar 16 04:32:09 UTC 2010


Package: libgtk2.0-0
Version: 2.19.7-1
Severity: normal


I've been getting '.xsession-errors' files growing to tens of MBs in
size, with hundreds of thousands of lines with the "XID collision"
warning for many months now.  This greatly interferes with obtaining
meaningful error messages from that file when other software is having
problems!

I grew tired of waiting for the (long-awaited) GTK+ pixbuf fix, and
modified the gtk+2.0 sources with a workaround that decreases the spam
to '.xsession-errors' to once every thousand triggers.  I've asked
'reportbug' to attach a patch (using the "-A" option), but if that fails
I'll try posting the patch again with a followup message.

This patch is NOT a bug fix; it is only a melioration of a kind of
denial-of-service attack against .xsession-errors.


-- System Information:
Debian Release: squeeze/sid
  APT prefers unstable
  APT policy: (990, 'unstable'), (350, 'experimental')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.34-rc1-git.100315.desktop.kms (SMP w/4 CPU cores; PREEMPT)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash
-------------- next part --------------
--- gtk+2.0-2.19.7/gdk/x11/gdkxid.c	2009-12-18 21:54:50.000000000 -0500
+++ gtk+2.0-2.19.7/gdk/x11/gdkxid.c	2010-03-15 23:31:57.000000000 -0400
@@ -58,7 +58,15 @@
 					    (GEqualFunc) gdk_xid_equal);
 
   if (g_hash_table_lookup (display_x11->xid_ht, xid))
-    g_warning ("XID collision, trouble ahead");
+    {
+      static unsigned long int dw_num_collisions = 0;
+
+      if (dw_num_collisions++ % 1000 == 0)
+	{
+	  unsigned long int num_thousands = (int) (dw_num_collisions / 1000);
+	  g_warning ("XID collisions:  %lu thousands", num_thousands);
+	}
+    }
 
   g_hash_table_insert (display_x11->xid_ht, xid, data);
 }


More information about the pkg-gnome-maintainers mailing list