$B>.:j$G$9(B [Bug #7134] $B$rD4$Y$F$$$F?<J%$J;EMMLdBj$K$O$^$C$F$7$^$C$?$N$G!"$_$J$5$s$N0U8+$rJ9$-$?$/(B dev$B$K$b?6$j$^$9!#(B 1.9.2p0 $B0J9_(B (r20144 $B$K$h$k(BIO$B$N%7%j%"%i%$%:$,F~$C$?8e!K!"$[$\$9$Y$F$N(BIO$B$O0EL[$K(Bmutex$B$r%m%C%/$9$k$N$G!"%a%$%s%9%l%C%I$H%H%i%C%W%O%s%I%i$,F1;~$K(BIO$B$r$9$k$H%G%C%I%m%C%/$G;`$K$^$9!#$D$^$j%H%i%C%W%O%s%I%i$G(BIO$B$9$k$3$H$O5v$5$l$F$$$J$/$F%0%m!<%P%kJQ?t$X$N=q$-9~$_$@$1$,5v$5$l$F$$$k!J$[$+$K$G$-$k$3$H$,$"$k$@$m$&$+!)!K(B $B$G!"$3$N;EMM$KJ86g$r$D$1$F$k?M$,$$$^$9!#?'!9$J%I%-%e%a%s%H$N%3!<%INc$G%H%i%C%W%O%s%I%i$,(Bputs$B;H$C$F$k$N$r8+$k$H$b$C$H$b$@$H;W$$$^$9!#(B $B$G$9$,!"$h$/$h$/9M$($F$_$k$H(B mutex$B$,%H%i%C%W%O%s%I%i$G;H$($J$$$3$H<+BN$b;EMM$K$O=q$+$l$F$$$J$/$F!"$3$l$O<BAu$NET9g$G$9!#<B:](B $B%H%i%C%W%O%s%I%i$G(Bmutex$B;H$C$F%G%C%I%m%C%/$7$?!"$J$*$;$H$$$&%P%0%l%]!<%H$b2a5n$"$j$^$7$?!#HV9fC5$;$J$$$1$I(B $B$5$F!"$"$k$Y$-;EMM$H$O$J$s$G$7$g$&$+!#0J2<$N;0Br$+$H;W$$$^$9(B $B#1!%8=>u$N%$%s%W%j$,@5$7$$!#%H%i%C%W%O%s%I%i$O%0%m!<%P%kJQ?t$K=q$-9~$s$G$9$0H4$1$k$Y$7(B $B#2!%(Bmutex$B$O%H%i%C%W%O%s%I%i$G;H$($J$$$,!"(BIO$B$O;H$($k$Y$-!#(B $B#3!%(Bmutex$B$b(BIO$B$b%H%i%C%W%O%s%I%i$+$i;H$($k$Y$-(B $B#2$@$H!"$o$?$7$,(B[Bug #7134] $B$K$O$C$?$h$&$J(BIO$BCf$O%H%i%C%W%O%s%I%i$N(Binvocation$B$r6X;_$9$k%^%9%/=hM}$r$$$l$k%Q%C%A$K$J$j$^$9$7!"#3$J$i!"!J0JA0$5$5$@$5$s$,OC$7$F$$$?$h$&$K!K%H%i%C%W%O%s%I%i$r%a%$%s%9%l%C%I$GAv$i$;$k$N$r$d$a$F@lMQ%9%l%C%I$GAv$i$;$k$H$$$&2r$K$J$j$^$9!#(B $B$H$3$m$G!"(BC$B8@8l$G%7%0%J%k$r@lMQ%9%l%C%I$GAv$i$;$k$3$H$,$G$-$J$$$N$OC<E*$K8@$($P(Blongjmp$B$GLa$C$F$3$l$k$3$H$r4|BT$7$F$kGZ$,$$$F8_49@-LdBj$,H/@8$9$k$+$i$G$9$,!"(BRuby$B$K$b;w$?$h$&$JLdBj$,$"$j$^$9!#(B http://stackoverflow.com/questions/2089421/capturi... $B$r$_$k$H%H%i%C%W%O%s%I%i$+$i(Bcatch/throw$B$GH4$1$k$3$H$r$*$9$9$a$7$F$$$k?M$,$$$^$9!J$b$A$m$s$3$l$O4V0c$C$F$^$9!#(Bcatch$B$9$kA0$K(Bthrow$B$G$-$A$c$&$+$i!K(B $B$3$l$r$^$8$a$K9M$($k$H(B $B!&$=$b$=$b%H%i%C%W$+$i(Bthrow$B$7$F@)8f$rLa$9$N$O9gK!$+!)(B $B!&(Bthrow$B$GEj$2$?%*%V%8%'%/%H$r%H%i%C%W%O%s%I%i%9%l%C%I$+$i%a%$%s%9%l%C%I$K%-%e!<$GEO$7$FHsF14|E*$K<B9T$9$k$3$H$O5v$5$l$k$+(B $B!&(Bthrow$B$7$?=V4V$O(Bcatch$B%V%m%C%/$NCf$K$$$?$1$I!"%-%e!<%$%s%0$7$F$k4V$K(B catch$B%V%m%C%/$+$i30$l$F$7$^$C$?$h$&$J%1!<%9$K$*$$$F%9%/%j%W%H$+$i$=$l$r4QB,$9$kJ}K!$O$"$k$+!"$^$?$=$l$O5_$&$Y$-$+(B $B$H$$$&$a$s$I$/$5$$LdBj$,$"$k$h$&$K;W$($^$9!#@5D>$b$F$"$^$7$F$$$k$N$G$40U8+$*J9$+$;$/$@$5$$(B
on 2012-11-06 20:37
on 2012-11-09 02:08
$B6a1J$H?=$7$^$9!#(B > $B#1!%8=>u$N%$%s%W%j$,@5$7$$!#%H%i%C%W%O%s%I%i$O%0%m!<%P%kJQ?t$K=q$-9~$s$G$9$0H4$1$k$Y$7(B > $B#2!%(Bmutex$B$O%H%i%C%W%O%s%I%i$G;H$($J$$$,!"(BIO$B$O;H$($k$Y$-!#(B > $B#3!%(Bmutex$B$b(BIO$B$b%H%i%C%W%O%s%I%i$+$i;H$($k$Y$-(B $B$J$s$G$b;H$$$?$$%f!<%6!<L\@~$H$7$F$O(B 3 $B$,$$$$$N$G$7$g$&$,!"$o$?$7$N463P$G$O(B 2 $B$@$H;W$$$^$9!#%7%0%J%k%O%s%I%iFb$G(B mutex $B;H$($J$$$H$$$&$N$OG<F@46$,$"$j$^$9$,(B IO $B$G$-$J$$$H$$$&$N$O$"$^$j<+L@$G$J$$$H$$$&$N$H!"<!$K=q$/$h$&$K<B:]$NMQES$,$"$k$H;W$$$^$9!#(B $B;R%W%m%;%9$N=*N;$r(B SIGCHLD $B$G8!=P$9$k$?$a$K!"%H%i%C%W%O%s%I%iFb$G%m%C%/$,;H$($J$$$N$G(B pipe $B$r;H$C$F%H%i%C%W%O%s%I%i$G=q9~$_!"4F;k$9$k%9%l%C%I$G(B IO.select $B$GBT$C$FFI$`$H$$$&$N$r$d$C$?$3$H$,$"$j$^$9!#%m%C%/$b;H$($J$$$7(BIO$B$b$G$-$J$$$H$J$k$H!"JQ?t$KBeF~$7$F4F;k$9$k$[$&$O(B polling $B$G8!=P$9$k$7$+$J$/$J$j!"$=$N>l9g%7%0%J%k$NAS<:$,$"$j$($k$H;W$$$^$9!#(B > $B!&$=$b$=$b%H%i%C%W$+$i(Bthrow$B$7$F@)8f$rLa$9$N$O9gK!$+!)(B $B463PE*$J$3$H$7$+8@$($J$/$F?=$7Lu$J$$$N$G$9$,!"$3$l$O$5$9$,$KL5$7$8$c$J$$$G$7$g$&$+!#(B $B0J>e$G$9!#(B
on 2012-11-09 16:46
2012/11/9 Tomoyuki Chikanaga <nagachika00@gmail.com>: > $B$GBT$C$FFI$`$H$$$&$N$r$d$C$?$3$H$,$"$j$^$9!#%m%C%/$b;H$($J$$$7(BIO$B$b$G$-$J$$$H$J$k$H!"JQ?t$KBeF~$7$F4F;k$9$k$[$&$O(B polling > $B$G8!=P$9$k$7$+$J$/$J$j!"$=$N>l9g%7%0%J%k$NAS<:$,$"$j$($k$H;W$$$^$9!#(B $B$3$N0U8+$O$J$C$H$/$G$-$^$9$7!"B>$K0U8+$b$G$F$J$$$h$&$J$N$G#2$G?J$a$^$9!#$?$@@)8B$,4K$/$J$kJ}$KJQ99$9$k$N$O$$$D$G$b$G$-$k$N$G>x$7JV$7$O4?7^$7$^$9!#(B >> $B!&$=$b$=$b%H%i%C%W$+$i(Bthrow$B$7$F@)8f$rLa$9$N$O9gK!$+!)(B > $B463PE*$J$3$H$7$+8@$($J$/$F?=$7Lu$J$$$N$G$9$,!"$3$l$O$5$9$,$KL5$7$8$c$J$$$G$7$g$&$+!#(B $B$@$l$+(B stackoverflow$B$K=q$-9~$_$G$-$k?M$O$"$l$K%l!<%9$,$"$k$h!"F0$+$J$$$h$H%3%a%s%H$7$F$"$2$F$/$@$5$$!#(B $B5^n1%"%+%&%s%H:n$C$?$b$N$N:n$j$?$F$N%"%+%&%s%H$G$O%3%a%s%H=q$-9~$_$G$-$J$$$_$?$$(B
on 2012-11-09 19:10
$B$"$^$j$^$H$^$C$F$$$J$$$N$G$9$,!$;W$C$?$3$H$rI=L@$7$F$*$-$^$9!%(B (2012/11/10 0:41), KOSAKI Motohiro wrote: >> $B$r;H$C$F%H%i%C%W%O%s%I%i$G=q9~$_!"4F;k$9$k%9%l%C%I$G(B IO.select >> $B$GBT$C$FFI$`$H$$$&$N$r$d$C$?$3$H$,$"$j$^$9!#%m%C%/$b;H$($J$$$7(BIO$B$b$G$-$J$$$H$J$k$H!"JQ?t$KBeF~$7$F4F;k$9$k$[$&$O(B polling >> $B$G8!=P$9$k$7$+$J$/$J$j!"$=$N>l9g%7%0%J%k$NAS<:$,$"$j$($k$H;W$$$^$9!#(B > > $B$3$N0U8+$O$J$C$H$/$G$-$^$9$7!"B>$K0U8+$b$G$F$J$$$h$&$J$N$G#2$G?J$a$^$9!#$?$@@)8B$,4K$/$J$kJ}$KJQ99$9$k$N$O$$$D$G$b$G$-$k$N$G>x$7JV$7$O4?7^$7$^$9!#(B $B!!$($($H!$!V(BMutex $B$,;H$($J$$!W$H$$$&$N$O!V(Btrap handler $B$O(B main thread $B$H(B $BF1$8(B context $B$J$N$G!$(Bmain thread $B$,(B Mutex $B$r(B lock $B$7$F$$$k>l9g!$(Btrap handler $BFb$G(B Mutex $B$rDO$b$&$H$9$k$HNc30$,=P$F$7$^$&$+$i;H$($J$$!W$H$$$&(B $B0UL#$G$"$C$F$^$9$h$M!%(B $B!!0JA0(B ruby-core $B$G!$(BQueue $B$K(B true $B$rFM$C9~$`$h$&$K=q$$$?$i(B Mutex $B$,(B main thread $B$H6%9g$7$F$7$^$C$F;H$($J$$!$$H$$$&OC$,$"$C$F!$$=$N$H$-$O(B trap $B$G$OJ#;($J$3$H$,=PMh$J$$$3$H$,B?$$$+$i(B flag $B$rFM$C9~$`$@$1$K$7$h(B $B$&!$$H$$$&JV;v$r$7$^$7$?!%MW$9$k$K6a1J$5$s$,$5$l$?(B pipe trick $B$_$?$$$J$3(B $B$H$r(B Queue $B$r;H$C$F$d$k!$$C$FOC$J$N$G$9$,!$$=$j$c<+A3$JOC$@$h$J$!!$$H$$(B $B$&5$$,$7$F$$$^$7$?!%(B require 'thread' q = Queue.new trap(:SIGINT){ q << true } q.pop # block until sigint ... $B$H;W$C$?$i!$>e5-%3!<%I$O%G%C%I%m%C%/8!=P$,F/$$$FF0$+$J$$$s$G$9$J$!!%(B /home/ko1/build/ruby/trunk/lib/thread.rb:192:in `sleep': No live threads left. Deadlock? from /home/ko1/build/ruby/trunk/lib/thread.rb:192:in `block in pop' from <internal:prelude>:10:in `synchronize' from /home/ko1/build/ruby/trunk/lib/thread.rb:184:in `pop' from ../trunk/test.rb:7:in `<main>' $B!!(Bsignal $BMQ(B thread $B$rMQ0U$7$F$*$/$H!$(Bdeadlock $B8!=P$,KX$I$&$^$/9T$+$J$/$J(B $B$k$h$&$J5$$,$9$k$N$G!$$d$C$Q$J$7$G$$$$$+$J$!!%$$$d!$(Btrap handler $B$,Dj5A(B $B$5$l$?=V4V$K(B signal $BMQ(B thread $B$rMQ0U$7$F$d$k$N$O0-$/$J$$5$$b$9$k!%(B $B$,!$(B2.0.0 $B8~$1$8$c$J$$$G$9$J!%(B $B!!>.:j$5$s$,!V$3$NJ}?K$G=$@5!W$H$$$&$N$O!$6qBNE*$K$O$I$&$$$&OC$G$7$g$&(B $B$+!%(BIO $B$N%m%C%/;~$K(B semaphore $B$d(B monitor $B$N$h$&$K$7$F!$!VF1$8%9%l%C%I$G(B $B%m%C%/$7$F$bL5;k!W$K$9$k46$8$G$7$g$&$+!%(Bsemaphore $B$@$HC1$K%G%C%I%m%C%/$7(B $B$F;`K4$J$N$G!$(Bmonitor $B$+$J!%$=$&$9$k$H!$(B 1. [main thread] IO $B$r(B lock 2. [main thread] signal $B$K$h$j(B trap $B$r5/F0(B 3. [trap handler] monitor#lock 4. [trap handler] IO $B$9$k(B 5. [trap handler] monitor#unlock 6. [main thread] IO $B$9$k(B 7. [main thread] monitor#unlock $B$3$s$J46$8$G!$(Block $B$G<i$j$?$+$C$?(B IO $B$O%m%C%/=PMh$F$$$k$s$G$7$g$&$+!$$H(B $B$$$&5?Ld$,$"$j$^$9!%(B $B!!$d$O$j:,K\E*$J2r7h:v$O!$2<5-$N$h$&$J46$8$G$7$g$&$+!%(B (1) trap $B%O%s%I%i$r@_Dj$9$k$H!$(Bsignal $B$,G[Aw$5$l$k$N$r$^$DBT5!(B thread $B$r(B $B@8@.$9$k(B (signal thread $B$H8F>N$9$k!K(B (2) trap $B%O%s%I%i$,$9$Y$F:o=|$5$l$k$H!$$=$N(B thread $B$O:o=|$5$l$k(B (3) trap $B%O%s%I%iFb$G$NA4$F$NNc30$O(B main thread $B$X(B Thread#raise $B$5$l$k(B $B$G$7$g$&$+!%(B $B$F$-$H!<$KMQ8l$rDj5A$7$J$$$G%U%#!<%j%s%0$GFI$s$G$b$i$&$H!$$3$s$J46$8!%(B $B%9%l%C%I%;!<%U$8$c$J$$$N$O$40&7I!%(B def trap(sig, &block) # $BLLE]$J$N$G(B cmd $B$ON,(B if block @@trap_handlers[sig] = block @@signal_thread = Thread.new{ until @@trap_handlers.empty? sig = sigwait() begin @@trap_handlers[sig].call(sig) rescue CheckTrapHandler # ignore rescue Exception => e main_thread.kill(e) end end } end unless @@signal_thread else @@trap_handlers.delete(sig) @@signal_thread.raise(CheckTrapHandler) if @@signal_thread end end $B!!H>G/$/$i$$Aa$/$+$i$3$N5DO@$r$7$F$$$l$P!$$3$s$J$U$&$KJQ$($k$H$9$C$-$j$7(B $B$?$s$8$c$J$$$+$H;W$$$^$9!%(B2.0.0 $B$G$O$I$&$7$^$9$+$M$'!%(B >>> $B!&$=$b$=$b%H%i%C%W$+$i(Bthrow$B$7$F@)8f$rLa$9$N$O9gK!$+!)(B >> $B463PE*$J$3$H$7$+8@$($J$/$F?=$7Lu$J$$$N$G$9$,!"$3$l$O$5$9$,$KL5$7$8$c$J$$$G$7$g$&$+!#(B > > $B$@$l$+(B stackoverflow$B$K=q$-9~$_$G$-$k?M$O$"$l$K%l!<%9$,$"$k$h!"F0$+$J$$$h$H%3%a%s%H$7$F$"$2$F$/$@$5$$!#(B > $B5^n1%"%+%&%s%H:n$C$?$b$N$N:n$j$?$F$N%"%+%&%s%H$G$O%3%a%s%H=q$-9~$_$G$-$J$$$_$?$$(B $B!!8=:_!$$?$^$?$^=PMh$A$c$&$N$,$M$(!%(B
on 2012-11-10 14:34
$B6a1J$H?=$7$^$9!#(B $B$($($H!$!V(BMutex $B$,;H$($J$$!W$H$$$&$N$O!V(Btrap handler $B$O(B main thread $B$H(B > $BF1$8(B context $B$J$N$G!$(Bmain thread $B$,(B Mutex $B$r(B lock $B$7$F$$$k>l9g!$(Btrap > handler $BFb$G(B Mutex $B$rDO$b$&$H$9$k$HNc30$,=P$F$7$^$&$+$i;H$($J$$!W$H$$$&(B > $B0UL#$G$"$C$F$^$9$h$M!%(B $B$O$$!#$=$&$$$&0UL#$G$7$?!#(B $BJdB-$7$F$*$/$H!"8=>u$G$O%7%0%J%k%O%s%I%i$O:FF~$7F@$k(B($B%7%0%J%k%O%s%I%i<B9TCf$K:FEY%7%0%J%k%O%s%I%i$,5/F0$5$l$k(B)$B$N$G!"%a%$%s%9%l%C%I$G$OF1$8(B Mutex $B$H$+(B Queue $B$H$+(B Monitor $B$K?($i$J$$$h$&$K$7$F$b40A4$K$O2sHr$5$l$^$;$s!#(B $B$J$N$G%7%0%J%k%O%s%I%iMQ$N%9%l%C%I$rF3F~$9$k$N$K2C$($F!"%7%0%J%k%O%s%I%i$N<B9TCf$K$OF1$8%7%0%J%k%O%s%I%i$N8F$S=P$7$O%^%9%/$5$l$k$H$$$&$N$bI,MW$+$J$!$H;W$C$F$*$j$^$9!#(B
on 2012-11-10 15:32
2012$BG/(B11$B7n(B9$BF|(B 10:08 Tomoyuki Chikanaga <nagachika00@gmail.com>: > $B;R%W%m%;%9$N=*N;$r(B SIGCHLD $B$G8!=P$9$k$?$a$K!"%H%i%C%W%O%s%I%iFb$G%m%C%/$,;H$($J$$$N$G(B pipe > $B$r;H$C$F%H%i%C%W%O%s%I%i$G=q9~$_!"4F;k$9$k%9%l%C%I$G(B IO.select > $B$GBT$C$FFI$`$H$$$&$N$r$d$C$?$3$H$,$"$j$^$9!#%m%C%/$b;H$($J$$$7(BIO$B$b$G$-$J$$$H$J$k$H!"JQ?t$KBeF~$7$F4F;k$9$k$[$&$O(B polling > $B$G8!=P$9$k$7$+$J$/$J$j!"$=$N>l9g%7%0%J%k$NAS<:$,$"$j$($k$H;W$$$^$9!#(B $B$3$N(B the pipe trick $B$N$?$a$K%H%i%C%W%O%s%I%i$G(B IO $B$r5v$9$H$$$&$N$O!"(B IO $B$r$9$Y$F;H$($k$h$&$K$7$J$1$l$P$J$i$J$$$H$$$&OC$G$O$J$$$h$&$K;W$$$^$9!#(B pipe $B$NBg$-$5$OM-8B$G$"$j!"$$$C$Q$$$K$J$k$H=q$1$J$$(B ($B$G$b=q$1$J$$$H$-$O$J$s$i$+$N%G!<%?$,(B pipe $B$KF~$C$F$$$k$?$a!"(B select $B$O(B readable $B$K$J$k$N$G=q$1$J$/$F$bLdBj$J$$(B) $B$N$G!"(B write_nonblock $B$@$1$G$$$$$s$8$c$J$$$G$7$g$&$+!#(B
on 2012-11-11 00:14
>> >> $B$3$N0U8+$O$J$C$H$/$G$-$^$9$7!"B>$K0U8+$b$G$F$J$$$h$&$J$N$G#2$G?J$a$^$9!#$?$@@)8B$,4K$/$J$kJ}$KJQ99$9$k$N$O$$$D$G$b$G$-$k$N$G>x$7JV$7$O4?7^$7$^$9!#(B > > $B!!$($($H!$!V(BMutex $B$,;H$($J$$!W$H$$$&$N$O!V(Btrap handler $B$O(B main thread $B$H(B > $BF1$8(B context $B$J$N$G!$(Bmain thread $B$,(B Mutex $B$r(B lock $B$7$F$$$k>l9g!$(Btrap > handler $BFb$G(B Mutex $B$rDO$b$&$H$9$k$HNc30$,=P$F$7$^$&$+$i;H$($J$$!W$H$$$&(B > $B0UL#$G$"$C$F$^$9$h$M!%(B $B$"$C$F$^$9!#(B > q << true > from /home/ko1/build/ruby/trunk/lib/thread.rb:184:in `pop' > from ../trunk/test.rb:7:in `<main>' $B$=$&$G$9!#$$$^%Q%C%A$,$"$kJ}?K#2$@$H$3$l$O5_$($^$;$s!#(B > $B!!(Bsignal $BMQ(B thread $B$rMQ0U$7$F$*$/$H!$(Bdeadlock $B8!=P$,KX$I$&$^$/9T$+$J$/$J(B > $B$k$h$&$J5$$,$9$k$N$G!$$d$C$Q$J$7$G$$$$$+$J$!!%$$$d!$(Btrap handler $B$,Dj5A(B > $B$5$l$?=V4V$K(B signal $BMQ(B thread $B$rMQ0U$7$F$d$k$N$O0-$/$J$$5$$b$9$k!%(B > $B$,!$(B2.0.0 $B8~$1$8$c$J$$$G$9$J!%(B trap handler$B$r;H$&%1!<%9$O$b$H$b$H(Bdeadlock$B8!=P$O$A$c$s$HF0$$$F$$$J$$$N$G$3$l0J>e0-2=$9$k$+$J$"$H$$$&$N$,5?Ld$@$C$?$j!#(B $B$"$H!"$o$?$7$O(Bsignal$BMQ(Bthread$B$O(Btrap handler$B=hM}@lMQ%9%l%C%IE*$J$b$N$r%$%a!<%8$7$F$$$?$N$G!"%9%l%C%I:n@.%?%$%_%s%0$G5sF0$,JQ$o$k$H$O;W$C$F$$$J$+$C$?(B > 6. [main thread] IO $B$9$k(B > 7. [main thread] monitor#unlock > > $B$3$s$J46$8$G!$(Block $B$G<i$j$?$+$C$?(B IO $B$O%m%C%/=PMh$F$$$k$s$G$7$g$&$+!$$H(B > $B$$$&5?Ld$,$"$j$^$9!%(B $B$$$$$(!"$=$l$O(B[Bug #7134] $B$G%P%0Js9p<T$,<gD%$7$F$$$?J}?K$@$H;W$&$N$G$9$,(B(recursive mutex$B$r;H$&!K!"%a%b%jGK2u$,5/$-$k$N$G$d$j$?$/$J$$$HJV;v$r$7$F$$$^$9!#(B $B8=:_$N<BAu$O(B thread->trap_enabled $B$H$$$&%U%i%0$rDI2C$7!"(Bfptr->write_lock$B$r$H$k$H$-$K$3$l$r(B disable$B$KJQ$($F$7$^$&!#(B $B$=$7$F!"(BRUBY_VM_CHECK_INTS()$B$G(B trap_enabled$B$,#0$N$"$$$@$O!"$?$H$((B thread->interrupt_flag $B$,Hs#0$G$b(Btrap handler$B$r8F$S=P$5$J$$(B $B!J:#5$$E$$$?$1$I!"E:IU$7$?%Q%C%A$O(B thread->interrupt_flag$B$N(B 0x2$B0J30$bL5;k$7$F$k$N$G$h$/$J$$$G$9$M!#$J$*$5$J$$$H!K(B $B$3$NJ}?K$@$H(B $B!&(Bfptr->write_lock$B$@$1$,FCJL07$$!#$b$H$b$H(Bruby$B$K$O8+$($F$J$$$3$C$=$j%m%C%/$@$+$i5sF0$rJQ$($F$bHs8_49$G$O$J$$(B $B!&(Bstdout$B$X$N(BIO$B$O$9$Y$F5v$5$l$k(B $B!&(Bpipe$B$X$N(Bwrite$B$O(Bwrite_nonblock$B$r;H$&$+!"FI$_=P$7B&$r%5%V%9%l%C%I$K$7$J$$$H(BIO$B$G%V%m%C%-%s%0$7$F;I$5$k$3$H$O$"$j$($k!J8=>u$I$*$j!K(B $B!&(Btrap handler $B$H(Bmain thread$B$NN>J}$G(B mutex class$B$r;H$C$?>l9g$O!"(Bdeadlock$B8!=P$G;`$L$3$H$O$"$j$&$k!J8=>u$I$*$j!K(B $B$H$$$&46$8(B focus$B$,(B trap { puts "hoge" } $B$r5_$&$3$H$K=8Cf$7$F$k%P%s%I%(%$%I%Q%C%A!#(B > $B!!$d$O$j:,K\E*$J2r7h:v$O!$2<5-$N$h$&$J46$8$G$7$g$&$+!%(B > > (1) trap $B%O%s%I%i$r@_Dj$9$k$H!$(Bsignal $B$,G[Aw$5$l$k$N$r$^$DBT5!(B thread $B$r(B > $B@8@.$9$k(B (signal thread $B$H8F>N$9$k!K(B > (2) trap $B%O%s%I%i$,$9$Y$F:o=|$5$l$k$H!$$=$N(B thread $B$O:o=|$5$l$k(B > (3) trap $B%O%s%I%iFb$G$NA4$F$NNc30$O(B main thread $B$X(B Thread#raise $B$5$l$k(B > > $B$G$7$g$&$+!%(B $B$o$?$7$N%$%a!<%8$O$=$s$J46$8(B > @@trap_handlers[sig].call(sig) > @@signal_thread.raise(CheckTrapHandler) if @@signal_thread >> >> $B$@$l$+(B stackoverflow$B$K=q$-9~$_$G$-$k?M$O$"$l$K%l!<%9$,$"$k$h!"F0$+$J$$$h$H%3%a%s%H$7$F$"$2$F$/$@$5$$!#(B >> $B5^n1%"%+%&%s%H:n$C$?$b$N$N:n$j$?$F$N%"%+%&%s%H$G$O%3%a%s%H=q$-9~$_$G$-$J$$$_$?$$(B > > $B!!8=:_!$$?$^$?$^=PMh$A$c$&$N$,$M$(!%(B $B8=>u$9$G$K2?2s$+$K0l2s$O$.$c$C$H$J$k$H$$$&%3!<%I$7$+=q$1$J$$>uBV$J$N$G!"(Bthrow$B$bHsF14|$K$J$2$k$h$&$K$7$F$b<+BN$O$"$s$^$j0-2=$7$J$$$N$G$O!#$H$$$&$"$^$j:,5r$N$J$$M=46$,$"$C$?$j!#$@$C$F!"$$$^F0$$$F$J$$$s$@$b$s!#(B $B$^$?$O(Btrap handler$B$+$i(Bthrow$B$7$?$H$-$K>o$K%(%i!<$K$J$k$h$&$K%(%i!<%A%'%C%/$r6/2=$9$k$H$$$&$N$b!"2?2s$+$K0l2s<:GT$9$k$h$j$+$O?F@Z$J$N$G!"5v$5$l$kJ}?K$H$$$&G'<1(B
on 2012-11-12 11:49
(2012/11/11 8:13), KOSAKI Motohiro wrote: >> $B!!(Bsignal $BMQ(B thread $B$rMQ0U$7$F$*$/$H!$(Bdeadlock $B8!=P$,KX$I$&$^$/9T$+$J$/$J(B >> $B$k$h$&$J5$$,$9$k$N$G!$$d$C$Q$J$7$G$$$$$+$J$!!%$$$d!$(Btrap handler $B$,Dj5A(B >> $B$5$l$?=V4V$K(B signal $BMQ(B thread $B$rMQ0U$7$F$d$k$N$O0-$/$J$$5$$b$9$k!%(B >> $B$,!$(B2.0.0 $B8~$1$8$c$J$$$G$9$J!%(B > > trap handler$B$r;H$&%1!<%9$O$b$H$b$H(Bdeadlock$B8!=P$O$A$c$s$HF0$$$F$$$J$$$N$G$3$l0J>e0-2=$9$k$+$J$"$H$$$&$N$,5?Ld$@$C$?$j!#(B > $B$"$H!"$o$?$7$O(Bsignal$BMQ(Bthread$B$O(Btrap > handler$B=hM}@lMQ%9%l%C%IE*$J$b$N$r%$%a!<%8$7$F$$$?$N$G!"%9%l%C%I:n@.%?%$%_%s%0$G5sF0$,JQ$o$k$H$O;W$C$F$$$J$+$C$?(B $B!!;d$b$=$&$$$&%$%a!<%8$G$9$,!$!V%9%l%C%I:n@.%?%$%_%s%0$G5sF0$,JQ$o$k$H$O(B $B;W$C$F$$$J$+$C$?!W$H$$$&$N$O$I$&$$$&OC$G$7$g$&$+!%2<5-$N5<;w%3!<%I;2>H!%(B > $B!&(Btrap handler $B$H(Bmain thread$B$NN>J}$G(B mutex class$B$r;H$C$?>l9g$O!"(Bdeadlock$B8!=P$G;`$L$3$H$O$"$j$&$k!J8=>u$I$*$j!K(B > > $B$H$$$&46$8(B > focus$B$,(B trap { puts "hoge" } $B$r5_$&$3$H$K=8Cf$7$F$k%P%s%I%(%$%I%Q%C%A!#(B $B!!$A$g$C$HBg$2$5$J5$$,$9$k$1$I!$$^$!$$$$$N$+$J$!!%(B > >> begin >> @@trap_handlers.delete(sig) >> @@signal_thread.raise(CheckTrapHandler) if @@signal_thread >> end >> end >> >> >> $B!!H>G/$/$i$$Aa$/$+$i$3$N5DO@$r$7$F$$$l$P!$$3$s$J$U$&$KJQ$($k$H$9$C$-$j$7(B >> $B$?$s$8$c$J$$$+$H;W$$$^$9!%(B2.0.0 $B$G$O$I$&$7$^$9$+$M$'!%(B $B!!<BAu$b$3$s$J46$8$GF10U$G$7$g$&$+!%(B $B!!$b$&!$$$$C$=$$$m$$$mLLE]$J$s$G!$JQ$($A$c$&!)!!1sF#$5$s$,(B ok $B$C$F$$$C$?(B $B$iJQ$($F$b$h$5$=$&$@$,!$$A$g$C$HBg$-$9$.$k$+$J$!!%(B >>>>> $B!&$=$b$=$b%H%i%C%W$+$i(Bthrow$B$7$F@)8f$rLa$9$N$O9gK!$+!)(B >>>> $B463PE*$J$3$H$7$+8@$($J$/$F?=$7Lu$J$$$N$G$9$,!"$3$l$O$5$9$,$KL5$7$8$c$J$$$G$7$g$&$+!#(B >>> >>> $B$@$l$+(B stackoverflow$B$K=q$-9~$_$G$-$k?M$O$"$l$K%l!<%9$,$"$k$h!"F0$+$J$$$h$H%3%a%s%H$7$F$"$2$F$/$@$5$$!#(B >>> $B5^n1%"%+%&%s%H:n$C$?$b$N$N:n$j$?$F$N%"%+%&%s%H$G$O%3%a%s%H=q$-9~$_$G$-$J$$$_$?$$(B >> >> $B!!8=:_!$$?$^$?$^=PMh$A$c$&$N$,$M$(!%(B > > $B8=>u$9$G$K2?2s$+$K0l2s$O$.$c$C$H$J$k$H$$$&%3!<%I$7$+=q$1$J$$>uBV$J$N$G!"(Bthrow$B$bHsF14|$K$J$2$k$h$&$K$7$F$b<+BN$O$"$s$^$j0-2=$7$J$$$N$G$O!#$H$$$&$"$^$j:,5r$N$J$$M=46$,$"$C$?$j!#$@$C$F!"$$$^F0$$$F$J$$$s$@$b$s!#(B $B!!:#F0$$$F$$$J$$!$$H$$$&$N$O!V%?%$%_%s%0$K$h$C$F$OF0$+$J$$>l9g$,$"$k!W$H(B $B$$$&0UL#$G$$$$$G$7$g$&$+!%;d$N<gD%$O!$!V%?%$%_%s%0$K$h$C$F$OF0$/>l9g$,$"(B $B$k!W!$$7$+$b!VF0$/%?%$%_%s%0$,KX$I$G$"$k!W$H$$$&8=>uG'<1$G$9!%(B > $B$^$?$O(Btrap handler$B$+$i(Bthrow$B$7$?$H$-$K>o$K%(%i!<$K$J$k$h$&$K%(%i!<%A%'%C%/$r6/2=$9$k$H$$$&$N$b!"2?2s$+$K0l2s<:GT$9$k$h$j$+$O?F@Z$J$N$G!"5v$5$l$kJ}?K$H$$$&G'<1(B $B!!$=$l$OF10U!%(B
on 2012-11-13 09:44
>>> rescue Exception => e >>> >>> >>>$B!!(B $BH>G/$/$i$$Aa$/$+$i$3$N5DO@$r$7$F$$$l$P!$$3$s$J$U$&$KJQ$($k$H$9$C$-$j$7(B >>> $B$?$s$8$c$J$$$+$H;W$$$^$9!%(B2.0.0 $B$G$O$I$&$7$^$9$+$M$'!%(B > > $B!!<BAu$b$3$s$J46$8$GF10U$G$7$g$&$+!%(B > > $B!!$b$&!$$$$C$=$$$m$$$mLLE]$J$s$G!$JQ$($A$c$&!)!!1sF#$5$s$,(B ok $B$C$F$$$C$?(B > $B$iJQ$($F$b$h$5$=$&$@$,!$$A$g$C$HBg$-$9$.$k$+$J$!!%(B $B%H%i%C%W%O%s%I%i%9%l%C%I$b%?%$%^!<%9%l%C%I$HF1$8$/FCJL07$$$rMQ0U$7$F(Bfork safe$B$K$9$k$H$$$&2~B$$,5v$5$l$k$J$i!"$3$N0F$G$bKM$O0[O@$"$j$^$;$s(B
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.