Improve accuracy of deadlock detection

$B!!$5$5$@$G$9!%(B

$B!!(BMutex $B$*$h$S(B Thread#join
$B$K$h$k%G%C%I%m%C%/$r!$$h$j@:EY$h$/8!=P$9$k(B
$B%Q%C%A$r=q$-$^$7$?!%(B

$B!!$3$l$^$G$N%G%C%I%m%C%/8!=P$O!$!V%m%C%/$J$I$G%V%m%C%/$7$F$$$k%9%l%C%I$N(B
$B?t!W(B ==
$B!V@8$-$F$$$k%9%l%C%I$N?t!W$N$H$-!$%7%9%F%`A4BN$,%m%C%/>uBV$G$“$k(B
$B$?$a%G%C%I%m%C%/$G$”$k$HH=CG$7!$(Bmain thread $B$K(B fatal
$B$rH/@8$5$;$F$$$^$7$?!%(B

$B!!$3$l$r!$%G%C%I%m%C%/$NDj5ADL$j$K!$Nc$($P!V(BMutex m1$B!$(Bm2$B!$(Bm1
$B$rJ];}$7$F(B
$B$$$k%9%l%C%I(B t1$B!$(Bm2 $B$rJ];}$7$F$$$k%9%l%C%I(B t2
$B$,$"$C$?$H$-!$(Bt1 $B$,(B m2 $B$r(B
$BMW5a$7$F!$$5$i$K(B t2 $B$,(B m1
$B$rMW5a$7$?$H$-!$%G%C%I%m%C%/$HH=Dj$9$k!W$h$&$K(B
$B$J$j$^$9!%$3$l$^$G$N%G%C%I%m%C%/8!=P$G$O!$$3$N$H$-B>$N%9%l%C%I$,Av$C$F$$(B
$B$k>l9g$O!$@8$-$F$$$k%9%l%C%I?t$,%V%m%C%/$7$F$$$k%9%l%C%I?t$h$j$bB?$$$?(B
$B$a!$%G%C%I%m%C%/$H8!=P$5$l$^$;$s$G$7$?!%(B

$B!!M>O?$H$7$F!$8=:$H$F$bFq$7$$J}K!$G%G%C%I%m%C%/8!=P$7$F$$$k$N$G$9$,!$$=(B
$B$NJU$rAGD>$K:F<BAu$7$?$?$a!$$H$F$bFI$
$d$9$/$J$C$F$$$k$H;W$$$^$9!%(B

$B0J2<!$%Q%C%A!'(B
http://www.atdot.net/sp/readonly/o4wnml

$B!!$3$NJQ99$O!$$3$l$^$G$N%9%l%C%I$N5sF0$rBgJ,JQ$($F$7$^$&$?$a!$(B1.9.3
$B$KF~(B
$B$l$k$N$OFq$7$$$H;W$$$^$9$,!$(B1.9.4
$B$"$?$j$GF~$k$H$$$$$J$!!$$H;W$C$F$$$^$9!%(B

$B!!$J$!$@-G=$G$9$,!$(BVirtualBox
2$B2>A[(BCPU$B>e$G$O$3$l$^$G$KHf$Y$FB.$/$J$C$?(B
$B$s$G$9$,!$<B(B8CPU$B%^%7%s>e$GF0$+$7$?$iCY$/$J$C$F$7$^$$$^$7$?!%>l9g$K$h$C$F(B
$B$OB.$/$J$k$H;W$C$?$s$@$1$I$J$"!%@-G=E
$J4QE@$+$i!$$d$C$Q$jL5$7!$$C$F$N$b(B
$BM-$j$+$H;W$$$^$9!%(B

$B>.:j$G$9(B

2011$BG/(B6$B7n(B12$BF|(B14:24 SASADA Koichi [email protected]:

$B!!$5$5$@$G$9!%(B

$B!!(BMutex $B$*$h$S(B Thread#join
$B$K$h$k%G%C%I%m%C%/$r!$$h$j@:EY$h$/8!=P$9$k(B
$B%Q%C%A$r=q$-$^$7$?!%(B

$B!V@:EY$h$/!W$H$$$&$N$O8m2r$r$^$M$/I=8=$@$H;W$C$F$$$F!";dE*$K$O$3$l$O(B
$B!V%G%C%I%m%C%/$NDj5A$rJQ$($k$H%3!<%I$,%7%s%W%k$K$J$k$3$H$rH/8+$7$^$7$?!W$H$$$&(B
$B%Q%C%A$@$H;W$C$F$$$^$9!#(B

$B8=:_!K(B $B$9$Y$F$N%9%l%C%I$,(Bwait$B>uBV$K$J$C$?$i%G%C%I%m%C%/(B
$B$5$5$@0F!K%m%C%/BT$A$N0MB84X78$K=[4D;2>H$r8!CN$7$?$i%G%C%I%m%C%/(B

$B30It;EMME*$K$O!“$5$5$@0F$N>uBV$O(BThread.kill
$B$G@h$K?J$`$3$H$,=PMh$k2DG=@-$,(B
$B$”$k$N$G!“$A$c$s$HF0$$$F$$$?%”%W%j$KBP$7$F%G%C%I%m%C%/8!CN$G=N;$5$;$F$7$^$&(B
$BHs8_49$rF3F~$7$F$7$^$&%j%9%/$,$“$k$o$1$G$9!#(B
$B0lJ}$G!”$=$s$JJQ$J%"%W%j$O8=<BE
$K$O!“$”$s$^$j$J$$$@$m$&$H$$$&E@$OF10U=PMh$k$o$1$G$9!#(B

$B$J$N$G!“(B1.9.3
$B$r8+Aw$j$K$7$F$$$$$N$G$”$l$PA08~$-$K8!F$$7$F$b$$$$$s$8$c$J$$$+$H(B
$B;W$C$F$$$^$9!J$?$@$7@-G=Nt2=$,$J$$$N$OBgA0Ds!K(B

$B$J$%3!<%I<+BN$O$?$$$X$s5$$KF~$C$F$$j$^$9!#%7%s%W%k$G!#(B

$B!!$5$5$@$G$9!%(B

(2011/06/12 15:02), KOSAKI Motohiro wrote:

$B30It;EMME*$K$O!"$5$5$@0F$N>uBV$O(BThread.kill
$B$G@h$K?J$`$3$H$,=PMh$k2DG=@-$,(B
$B$"$k$N$G!"$A$c$s$HF0$$$F$$$?%"%W%j$KBP$7$F%G%C%I%m%C%/8!CN$G=*N;$5$;$F$7$^$&(B
$BHs8_49$rF3F~$7$F$7$^$&%j%9%/$,$"$k$o$1$G$9!#(B

$B0lJ}$G!"$=$s$JJQ$J%"%W%j$O8=<BE*$K$O!"$"$s$^$j$J$$$@$m$&$H$$$&E@$OF10U=PMh$k$o$1$G$9!#(B

$B!!(BIRC $B$G!$(B

timeout(n){
$B$3$3$G%G%C%I%m%C%/(B
}

$B$J%3!<%I$O$"$j$=$&!$$H1sF#$5$s$K65$($F$b$i$$$^$7$?!%(B

$B!!30It;EMM$H$+!$@-G=$NLdBj$H$+$"$j$=$&$J$s$G!$Nc$($P(B $DEBUG
$B$N;~$K$3$N(B
$B%A%’%C%/$rM-8z$K$9$k!$$J$s$F$N$O$I$&$+!$$H9M$($F$_$^$7$?!%(B

$B$G!$%G%U%)%k%H$G$O!$$d$C$Q$j!VA4It%V%m%C%/$7$A$c$C$?$h!W%A%’%C%/$r(B

$B$J$s$i$+$NJ}K!$GF0$+$9!%(B

$B1sF#$G$9!#(B

2011$BG/(B6$B7n(B12$BF|(B18:36 SASADA Koichi [email protected]:

$B!!(BIRC $B$G!$(B

timeout(n){
$B$3$3$G%G%C%I%m%C%/(B
}

$B$J%3!<%I$O$"$j$=$&!$$H1sF#$5$s$K65$($F$b$i$$$^$7$?!%(B

$B$3$N%G%C%I%m%C%/$rJs9p$7$J$$$N$,K\Ev$K$$$$$N$+$O5DO@$NM>CO$,$"$j$=$&(B
$B$G$9$1$I$M!#(B

$B!!30It;EMM$H$+!$@-G=$NLdBj$H$+$"$j$=$&$J$s$G!$Nc$($P(B $DEBUG $B$N;~$K$3$N(B
$B%A%'%C%/$rM-8z$K$9$k!$$J$s$F$N$O$I$&$+!$$H9M$($F$_$^$7$?!%(B

$B$G!$%G%U%)%k%H$G$O!$$d$C$Q$j!VA4It%V%m%C%/$7$A$c$C$?$h!W%A%'%C%/$r(B

$B$J$s$i$+$NJ}K!$GF0$+$9!%(B

$DEBUG $B$K$7$?$[$&$,B.$$!"$H$$$&$3$H$G$9$+$M!#$=$l$b$J$s$+HyL/!D!D!#(B

Thread.stop $B$d(B Mutex#sleep
$B$,%G%C%I%m%C%/8!CN$NBP>]$G$J$/$J$C$?$?$a(B
$B$K!"0J2<$N%3!<%I$N%G%C%I%m%C%/$,8!CN$G$-$J$/$J$j$^$7$?!#(B
$B$3$l$O$^$:$$$+$b!#(B

q = Queue.new
Thread.new { q.pop };
q.pop