From: Aristarkh A Zagorodnikov Date: 2001-07-27T17:39:58+09:00 Subject: [ruby-talk:18616] IO.popen 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