From: David Flanagan Date: 2007-08-09T06:21:15+09:00 Subject: Re: Thread.abort_on_exception= in Ruby 1.9 Replying to myself with more: I've just checked out fresh Ruby 1.9 sources from svn and have confirmed that this problem still exists in today's code. Also: if you call join on a thread that exited with an exception, then that exception starts propagating again in the calling thread. In Ruby 1.8, the backtrace includes the call to join. In Ruby 1.9, the backtrace does not include the call to join. I think the Ruby 1.8 behavior is preferable, if it can be implemented in 1.9 David David Flanagan wrote: > Hi, > > Thread.abort_on_exception=true is not working the way I would expect it > to in Ruby 1.9 (my build is from 7/24). > > Is this "just a bug" or a "not yet implemented" issue or is it a more > fundamental problem exposed by YARV's use of native threads? That is, > should we treate abort_on_exception= as a non-portable method useful > only for implementations that use green threads? > > Here's the test code I'm using: > > Thread.abort_on_exception = true > > t = Thread.new { > sleep 1 > raise "boom" > } > > t.abort_on_exception = true > > sleep 2 > puts "done" > > It goes "boom" in Ruby 1.8: > > $ ruby -v boom.rb > ruby 1.8.6 (2007-03-13 patchlevel 0) [i686-linux] > boom.rb:5: boom (RuntimeError) > from boom.rb:3:in `initialize' > from boom.rb:3:in `new' > from boom.rb:3 > > But it prints "done" in Ruby 1.9: > > $ ruby1.9 -v boom.rb > ruby 1.9.0 (2007-07-24 patchlevel 0) [i686-linux] > done > > >