What are the circumstances in which a fork do call would throw Errno::EPIPE: Broken pipe? I'm using Resque on an AWS instance and bizarrely, while Resque runs fine on a staging server, it is constantly throwing these broken pipe errors when it tries to have a worker fork a child process on a production server even though they are using the same AMI. I've put in enough logging statements to identify that the error is thrown when Resque attempts to fork:
@child = fork do
unregister_signal_handlers if term_child
perform(job, &block)
exit! unless run_at_exit_hooks
end
So the error comes from that top line (https://github.com/resque/resque/blob/master/lib/resque/worker.rb#L909). I'm not clear though why a fork call would throw a Errno:EPIPE. The server has plenty of memory, CPU, and hard drive to spare.