Hello!

        Recently when working with Apache (1.3.20), mod_ruby (0.9.0) and
ruby (1.7.1) on Linux (2.2.19 kernel, Slackware 8.0), I discovered the
following nasty bug (feature? ;). When one of my scripts use IO.popen
'something' (whether direct or in block form) and when this 'something' does
not exist (i.e. exec failed), the httpd goes into 'zombie' state, and apache
error log is filled with appropriate message.  The 'zombie' problem is
caused by use of vfork() instead of fork() in io.c:pipe_open - I'm not sure
why it is needed. I understand that it is a popen(3) limination - if it
forked successfully the only way to understand there was an error is an
error code of 127. I hope someone will write a better workaround (maybe
using signals, etc.) to raise the exception in parent process when child
failed to exec, and not print the error message to stderr. Also, 'zombie'
fix will be good (currently I just replaced vfork with fork).

Aristarkh A Zagorodnikov, Lead Programmer, W3D Group
http://www.w3d.ru /// xm / w3d.ru /// ICQ UIN 36987938