From: Tanaka Akira Date: 2002-09-26T05:28:13+09:00 Subject: [ruby-dev:18382] Re: rubicon on EWS4800 In article <200209251737.g8PHbdR03024@sharui.nakada.kanuma.tochigi.jp>, nobu.nakada@nifty.ne.jp writes: > Mswin32.dont/only$B$K$9$k$h$j$b(BUnix.only/dont$B$K$9$Y$-$G$7$g$&!#(B $B$?$7$+$K!#$G$b(B only $B$8$c$J$/$F(B or_variant $B$+$J!#(B > > thread $B$O(B... $B$J$s$@$C$?$+$J!#$3$l$rF~$l$H$+$J$$$H;~!9<:GT$7$F$$$?3P$((B > > $B$,$"$j$^$9!#(B > > $B$3$3$G%(%i!<$K$J$C$?$N$r8+$?3P$($O$J$$$h$&$J5$$,$7$^$9!#(B $B$?$/$5$sF0$+$7$?$i=P$F$-$^$7$?!#(B % ruby TestThreadGroup.rb TestThreadGroup#test_00sanity . TestThreadGroup#test_add . TestThreadGroup#test_list deadlock 0x1bcaa8: 2:0 - TestThreadGroup.rb:26 deadlock 0x1bcb80: 2:0 - TestThreadGroup.rb:26 deadlock 0x1bcc58: 2:0 - TestThreadGroup.rb:26 deadlock 0x1bcd30: 2:0 - TestThreadGroup.rb:26 deadlock 0x1bce08: 2:0 - TestThreadGroup.rb:26 deadlock 0x1bcee0: 2:0 - TestThreadGroup.rb:26 deadlock 0x1bcfb8: 2:0 - TestThreadGroup.rb:26 deadlock 0x1bd090: 2:0 - TestThreadGroup.rb:26 deadlock 0x1bd168: 2:0 - TestThreadGroup.rb:26 deadlock 0x100fa8: 2:8 (main) - TestThreadGroup.rb:33 deadlock 0x1bc9d0: 2:0 - TestThreadGroup.rb:26 TestThreadGroup.rb:26:in `test_list': Thread: deadlock (fatal) from TestThreadGroup.rb:31:in `each' from TestThreadGroup.rb:31:in `test_list' from /home/akr/src/ruby/z/lib/ruby/site_ruby/1.7/runit/testcase.rb:64:in `send' from /home/akr/src/ruby/z/lib/ruby/site_ruby/1.7/runit/testcase.rb:64:in `run_bare' from /home/akr/src/ruby/z/lib/ruby/site_ruby/1.7/runit/testcase.rb:51:in `run' from /home/akr/src/ruby/z/lib/ruby/site_ruby/1.7/runit/testsuite.rb:16:in `run' from /home/akr/src/ruby/z/lib/ruby/site_ruby/1.7/runit/testsuite.rb:16:in `each' from /home/akr/src/ruby/z/lib/ruby/site_ruby/1.7/runit/testsuite.rb:17:in `run' from /home/akr/src/ruby/z/lib/ruby/site_ruby/1.7/runit/cui/testrunner.rb:26:in `run' from ./../rubicon_tests.rb:238:in `handleTests' from TestThreadGroup.rb:44 $B$H$$$&$h$&$K(B deadlock $B$,5/$3$j$^$9!#(B (100$B2sF0$+$7$F?t2s$H$$$C$?$H$3$m$G$9$,!#(B) $B$5$F!">e$N7k2L$O/!92~9T$rA}$d$7$?HG$G$N%(%i!<%a%C%;!<%8$G$9!#(B 22 def test_list 23 tg = ThreadGroup.new 24 10.times do 25 t = Thread.new { 26 Thread.stop 27 } 28 tg.add(t) 29 end 30 assert_equals(10, tg.list.length) 31 tg.list.each {|t| 32 t.wakeup 33 t.join 34 } 35 end $B%(%i!<%a%C%;!<%8$+$i$O(B main thread $B$,(B 33$B9TL\(B(t.join)$B$G;_$^$C$F$$$F!"(B 26$B9TL\(B(Thread.stop)$B$G;_$^$C$F$k%9%l%C%I$,(B 10$B8D$"$k$3$H$,$o$+$j$^$9!#(B $B$*$=$i$/!"(B 1. main $B$G(B Thread.new $B$,F0$-!"?7$7$$%9%l%C%I$,$G$-$k(B(th $B$H$9$k(B) 2. th $B$G(B (Thread.stop $B$KE~C#$9$kA0$K(B) context switch $B$,$*$-$k(B 3. main $B$G(B t.wakeup $B$,8F$P$l$k$,(B th $B$O(B run $B$J>uBV$J$N$GJQ2=$J$7(B 4. main $B$G(B t.join $B$,8F$P$l$F(B th $B$N=*N;$rBT$D$?$a$K(B th $B$K(B context switch $B$5$l$k(B 5. th $B$G(B Thread.stop $B$,