You may want to report a second bug against GTK, that calling XSynchronize (dpy, True) does not work -- it appears that GTK or GDK are setting that to false at some time later.
Proof: Add this to, e.g., update_subproc_timer and run with --debug: XSetWindowBackgroundPixmap (s->dpy, 0, 0); A second or two after startup, this will cause an X error. Backtrace will show a stack that does not include update_subproc_timer or XSetWindowBackgroundPixmap. Add XSynchronize (s->dpy, True); before that line. Now the backtrace is as expected. -- Jamie Zawinski • jwz.org • dnalounge.com