Thanks.  It seems the culprit is Timeout using Thread#join.
Our deadlock checking code might be buggy...

I write similar process management code all the time without
Timeout and never have this problem, so I'll investigate
(but no promises, it's tricky code)


Fwiw, I use waitpid(..., WNOHANG) in a loop until ECHLD, and
use select/IO#wait_*able + self-pipe to timeout).  Looping
(with WNOHANG) is important, since SIGCHLD interrupts can be
merged.

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>