? glib/glib-signal.diff
Index: glib/ChangeLog
===================================================================
RCS file: /export/cvs/gnome-2.0/glib/ChangeLog,v
retrieving revision 1.1625
diff -p -u -5 -r1.1625 ChangeLog
--- glib/ChangeLog	2004/08/05 20:53:25	1.1625
+++ glib/ChangeLog	2004/08/06 11:12:05
@@ -1,5 +1,12 @@
+Fri Aug  6 16:00:00 2004  Archana Shah <archana.shah@wipro.com>
+
+	* glib/gmain.c (g_child_watch_signal_handler):
+	Reinstall signal every time it is caught so that glib gets SIGCHLD
+	every time.
+	Fixes bug# 136867 
+
 Thu Aug  5 20:53:00 2004  Ray Strode  <rstrode@redhat.com>
 
 	* glib/gutils.h (g_get_codeset): strdup result so caller
 	doesn't free internally managed memory.
 
Index: glib/glib/gmain.c
===================================================================
RCS file: /export/cvs/gnome-2.0/glib/glib/gmain.c,v
retrieving revision 1.119
diff -p -u -5 -r1.119 gmain.c
--- glib/glib/gmain.c	2004/05/10 19:21:28	1.119
+++ glib/glib/gmain.c	2004/08/06 11:12:05
@@ -3549,10 +3549,12 @@ g_child_watch_dispatch (GSource    *sour
 static void
 g_child_watch_signal_handler (int signum)
 {
   child_watch_count ++;
 
+  signal (SIGCHLD, g_child_watch_signal_handler);
+
   if (child_watch_init_state == CHILD_WATCH_INITIALIZED_THREADED)
     {
       write (child_watch_wake_up_pipe[1], "B", 1);
     }
   else
