山本です。

bcc32だと test_06_timeout でフリーズするので、調べてみました。(mswin32では正常に実行されます)

下のパッチをデバッグ用に当てたあと、

Index: drbtest.rb
===================================================================
RCS file: /ruby/ruby/test/drb/drbtest.rb,v
retrieving revision 1.9
diff -u -w -b -p -r1.9 drbtest.rb
--- drbtest.rb	8 Apr 2004 11:25:24 -0000	1.9
+++ drbtest.rb	25 May 2004 05:24:06 -0000
@@ -44,9 +44,12 @@ class Onecky
     @num.to_i
   end
 
-  def sleep(n)
+  def sleep(n, id)
+    p "#{id} in"
     Kernel.sleep(n)
+    p "#{id} out"
     to_i
+#   raise "dummy"
   end
 end
 
@@ -161,10 +164,16 @@ module DRbCore
   def test_06_timeout
     ten = Onecky.new(10)
     assert_raises(TimeoutError) do
-      @there.do_timeout(ten)
+      @there.do_timeout(ten, 0)
     end
     assert_raises(TimeoutError) do
-      @there.do_timeout(ten)
+      @there.do_timeout(ten, 1)
+    end
+    assert_raises(TimeoutError) do
+      @there.do_timeout(ten, 2)
+    end
+    assert_raises(TimeoutError) do
+      @there.do_timeout(ten, 3)
     end
   end
 
Index: ut_drb.rb
===================================================================
RCS file: /ruby/ruby/test/drb/ut_drb.rb,v
retrieving revision 1.4
diff -u -w -b -p -r1.4 ut_drb.rb
--- ut_drb.rb	13 Mar 2004 05:57:59 -0000	1.4
+++ ut_drb.rb	25 May 2004 05:20:11 -0000
@@ -48,9 +48,9 @@ class DRbEx
     s
   end
 
-  def do_timeout(n)
+  def do_timeout(n, id)
     timeout(1) do
-      n.sleep(2)
+      n.sleep(3, id)
     end
   end


下のコマンドを実行すると、"0 out" を出力した後フリーズします。

E:\ruby-cvs\ruby>.\ruby -v
ruby 1.9.0 (2004-05-25) [i386-bccwin32]

E:\ruby-cvs\ruby>.\ruby runruby.rb --ext=".ext" -- bin\testrb -v -n test_06_time
out test/drb/test_drb.rb
Loaded suite test_drb.rb
Started
test_06_timeout(TestDRbCore): "0 in"
"1 in"
"2 in"
"0 out"

timeout が sleep より短いので TimeoutError が出て do_timeout を抜けるのですが、
サーバ?は依然として生きていて、スリープが終わった後 "0 out" を出力し、関数から帰ろうと
した瞬間にフリーズするようです。返る先にはもう制御がないので、そのあたりに原因がありそうな
気がします。(drbの仕組みをよく理解してないので、的外れかもしれません)

試しに drbtest.rb の Onecky#sleep を例外で抜けるようにしてみたところ、(raise "dummy" のコメントを外す)
bcc32 でも正常に実行されました。

E:\ruby-cvs\ruby>.\ruby runruby.rb --ext=".ext" -- bin\testrb -v -n test_06_time
out test/drb/test_drb.rb
Loaded suite test_drb.rb
Started
test_06_timeout(TestDRbCore): "0 in"
"1 in"
"2 in"
"0 out"
"3 in"
"1 out"
.

Finished in 4.617 seconds.

1 tests, 4 assertions, 0 failures, 0 errors