Description of problem: ( I found this bug from https://bugzilla.novell.com/show_bug.cgi?id=145173 ) GLSlideshow leaves a zombie process each time a image is loaded. This may fill the process table quickly. Version-Release number of selected component (if applicable): xscreensaver-gl-extras-4.24-1.1 How reproducible: Always Steps to Reproduce: 1. invoke /usr/libexec/xscreensaver/glslideshow or invoke xscreensaver-demo and select GLSlideshow 2. Wait... 3. Actual results: GLSlideshow leaves lots of zombie process. Expected results: No zombie process... Additional info:
Created attachment 126319 [details] pstree log text of glslideshow
This problem still exists on xscreensaver version 5.00a11.
I think this should fix it -- let me know? RCS file: /cvsroot/xscreensaver/utils/grabclient.c,v retrieving revision 1.17 diff -u -r1.17 grabclient.c --- grabclient.c 1 Mar 2006 11:35:52 -0000 1.17 +++ grabclient.c 20 Mar 2006 01:35:43 -0000 @@ -302,6 +302,7 @@ FILE *read_pipe; FILE *write_pipe; XtInputId pipe_id; + pid_t pid; } grabclient_data; @@ -350,7 +351,8 @@ (XtPointer) (XtInputReadMask | XtInputExceptMask), finalize_cb, (XtPointer) data); - switch ((int) (forked = fork ())) + forked = fork (); + switch ((int) forked) { case -1: sprintf (buf, "%s: couldn't fork", progname); @@ -379,6 +381,7 @@ default: /* parent */ fclose (data->write_pipe); data->write_pipe = 0; + data->pid = forked; break; } } @@ -405,6 +408,14 @@ if (name) free (name); fclose (data->read_pipe); + + if (data->pid) /* reap zombies */ + { + int status; + waitpid (data->pid, &status, 0); + data->pid = 0; + } + memset (data, 0, sizeof (*data)); free (data); }
Okay. That patch works well for me ( and also xscreensaver 5.00a12). Thanks!
Adding to the FC5Update tracker, so we can get this fix in as an FC5 update.
This should be pushed into updates-testing sometime today or tomorrow.
For this problem, updates-testing rpm 4.24-2 works well for me.
Great, i'll push it to -updates. Thanks.