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
--- 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);
 }

Reply via email to