From: "NAKAMURA, Hiroshi" Date: 2002-03-27T14:05:07+09:00 Subject: [ruby-list:34657] Re: erb 1.4.2 failed なひです。出遅れちゃった。 > From: Masatoshi SEKI > Sent: Wednesday, March 27, 2002 1:22 PM > Threadの中でevalしたときにエラーになってました。すみません。 派生ネタなんですけど、 $ cat foo.rb lambda { Thread.new { eval( "return" ) }.join }.call こんなスクリプトが、 $ ruby foo.rb foo.rb:3: (eval):1: return from within thread 0xa072be0 (ThreadError) from foo.rb:2:in `join' from foo.rb:2 from foo.rb:2:in `call' from foo.rb:2 $ echo finish | ruby -rdebug foo.rb Debug.rb Emacs support available. foo.rb:2: Thread.new { (rdb:1) finish $ と、デバッガで追いかけると止まりません。 $ ruby -rtracer foo.rb #0:foo.rb:2::-: Thread.new { #0:foo.rb:2:Kernel:>: Thread.new { #0:foo.rb:2:Kernel:<: Thread.new { #0:foo.rb:2:Proc:>: Thread.new { #0:foo.rb:2::-: Thread.new { #0:foo.rb:2:Thread:>: Thread.new { #0:foo.rb:2:Thread:>: Thread.new { #1:foo.rb:3::-: eval( "return" ) #1:foo.rb:3:Kernel:>: eval( "return" ) #1:(eval):1::-: - #1:foo.rb:3:Kernel:<: eval( "return" ) #0:foo.rb:2:Thread:<: Thread.new { #0:foo.rb:2:Thread:<: Thread.new { #0:foo.rb:2:Thread:>: Thread.new { #0:foo.rb:2:Thread:<: Thread.new { #0:foo.rb:2:Proc:<: Thread.new { set_trace_funcすると止まらない?