From: Joel VanderWerf Date: 2004-02-26T13:03:28+09:00 Subject: Re: thread gurus please help... Ara.T.Howard wrote: > On Wed, 25 Feb 2004, Ara.T.Howard wrote: > > forgot to mention that i have $VERBOSE=nil so i don't see the > > "...fork terminates thread..." > > err msg. i assume that, in this case (forking done in open3) it is OK if that > thread is terminated in the child - it obviously seem to continue running in > the parent... I've never seen forking have an adverse effect on threads in the parent. But there is a case where terminating all but one thread, which is what happens in the child, has an adverse effect. require 'thread' m = Mutex.new Thread.new { m.synchronize { sleep 1 } } fork do m.synchronize { puts "Didn't get here." } end m.synchronize { puts "Got here." } Process.wait This outputs the warning you saw and "Got here.". I've gotten around this by explicitly removing the dead threads that hold a mutex or are waiting for it. (Code available, if anyone's interested.) But that doesn't look like your problem, since the child is firing up a whole new ruby.