Fix potential race condition in timeout handling
commit894631ab86de364fda9a12693896678f1c9795f8
authorEric Wong <normalperson@yhbt.net>
Thu, 28 May 2009 17:35:11 +0000 (28 10:35 -0700)
committerEric Wong <normalperson@yhbt.net>
Thu, 28 May 2009 18:45:15 +0000 (28 11:45 -0700)
treec33e84f491040dde0af4f03693b01015708d208a
parent59c3e80ceb6cff688b8bf3ed7dfc00ff041fca48
Fix potential race condition in timeout handling

There is a potential race condition in closing the tempfile
immediately after SIGKILL-ing the child.  So instead just
close it when we reap the dead child.

Some some versions of Ruby may also not like having the
WORKERS hash being changed while it is iterating through
each_pair, so dup the hash to be on the safe side (should
be cheap, since it's not a deep copy) since kill_worker()
can modify the WORKERS hash.

This is somewhat of a shotgun fix as I can't reproduce the
problem consistently, but oh well.
lib/unicorn.rb