A previous patch to pygtk was misapplied in both 2.17 (stable) and 2.22 (~unstable). This causes the main loop to go into a spin.
The upstream bug is here:
It includes a patch which I have successfully tested against pygtk 2.22 on ~amd64.
Debian has aleady applied a patch for 2.17:
This affects many pygtk based applications.
This will affect all platforms that provide HAVE_PYSIGNAL_SETWAKEUPFD (which means every platform gentoo runs on AFAIK)
Steps to Reproduce:
signal.signal(signal.SIGCHLD, lambda *args: None)
Run it, send it SIGCHLD.
CPU usage goes to 100%.
Not go into a spin!
Simply drop the patch into files/ and add it to the ebuild, problem solved.
+*pygtk-2.22.0-r1 (03 Feb 2011)
+ 03 Feb 2011; Pacho Ramos <email@example.com> +pygtk-2.22.0-r1.ebuild,
+ Fix 100% CPU load when apps receive SIGCHLD, bug #353599 by Antoine Martin.
Shouldn't this be applied to stable too?
(that's why I included the link to the debian patch which is for 2.17)
I don't think it's needed as pygtk-2.22* will be stabilized with gnome 2.32 (that shouldn't take too much time). Also, our common way for handling these problems is to commit fixes to testing and stabilize fixed packages after a few days for allowing its testing