You're using Ruby 1.8.7? I think I've seen a few comments online about 
thread timeout handling being buggy in that version.

Try a separate install on 1.9.3 and see if the problem still exists.
You should also read up on handling errors both inside the threads, and 
in the parent process. For example:


Taken from http://www.tutorialspoint.com/ruby/ruby_multithreading.htm

Threads and Exceptions:

If an exception is raised in the main thread, and is not handled 
anywhere, the Ruby interpreter prints a message and exits. In threads 
other than the main thread, unhandled exceptions cause the thread to 
stop running.

If a thread t exits because of an unhandled exception, and another 
thread s calls t.join or t.value, then the exception that occurred in t 
is raised in the thread s.

If Thread.abort_on_exception is false, the default condition, an 
unhandled exception simply kills the current thread and all the rest 
continue to run.

If you would like any unhandled exception in any thread to cause the 
interpreter to exit, set the class method Thread.abort_on_exception to 
true.t = Thread.new { ... }
t.abort_on_exception = true

-- 
Posted via http://www.ruby-forum.com/.