# File lib/open4.rb, line 124 def self.propagate_exception(cid, ps_read) e = Marshal.load ps_read raise Exception === e ? e : "unknown failure!" rescue EOFError # Child process did not raise exception. rescue # Child process raised exception; wait it in order to avoid a zombie. Process.waitpid2 cid raise ensure ps_read.close end