From: Kazuhiro NISHIYAMA Date: 2000-10-11T04:30:18+09:00 Subject: [ruby-dev:11161] 複数 Thread で止まった あるプログラムで//pのwarningが別スレッドの$!.to_sと 入れ変わってしまう(そのプログラムでは再現率100%)ので 再現できる最小のプログラムを作ろうとしているのですが、 うまくいかずその途中で作った以下のようなプログラムで Ctrl+Cもきかない止まり方をしました。 別のシェルからkillしたら止まりましたが。 % cat e.rb Thread.abort_on_exception = true s = ARGV.shift th0 = Thread.start do th = Thread.start do $SAFE = 4 eval(s) end begin puts th.value.to_s rescue ScriptError, StandardError puts '[['+$!.to_s+']]' end end th0.join % ruby -vw e.rb c ruby 1.6.2 (2000-10-10) [i586-linux] e.rb:8: (eval):1: undefined local variable or method `c' for # (NameError) from e.rb:6:in `eval' from e.rb:8 from e.rb:6:in `start' from e.rb:6 from e.rb:5:in `start' from e.rb:5 e.rb:8:in `start': Insecure operation `start' for level 4 (SecurityError) from e.rb:6 from e.rb:5:in `start' from e.rb:5 --- ZnZ(ゼット エヌ ゼット) 西山和広(Kazuhiro NISHIYAMA) mailto:zn@mbf.nifty.com