# File lib/slave.rb, line 481 def detach reap = lambda do |cid| begin @status = Process::waitpid2(cid).last rescue Exception => e m, c, b = e.message, e.class, e.backtrace.join("\n") warn "#{ m } (#{ c })\n#{ b }" unless e.is_a? Errno::ECHILD end end Kernel.at_exit do shutdown rescue nil reap[@pid] rescue nil end @waiter = Thread.new do begin @status = Process::waitpid2(@pid).last ensure reap = lambda{|cid| 'no-op' } end end end