From: "mdemare (Michiel de MAre)" Date: 2013-02-19T21:17:27+09:00 Subject: [ruby-core:52521] [ruby-trunk - Bug #5218] at_exit bug with exception handling Issue #5218 has been updated by mdemare (Michiel de MAre). So what happened to the changeset? It's still broken in 1.9.3-p385. ---------------------------------------- Bug #5218: at_exit bug with exception handling https://bugs.ruby-lang.org/issues/5218#change-36609 Author: ebeigarts (Edgars Beigarts) Status: Closed Priority: Normal Assignee: nobu (Nobuyoshi Nakada) Category: Target version: ruby -v: ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-darwin10.8.0] It seems that ruby 1.9.2 and later doesn't like exception handling in `at_exit` blocks and resets the exit code to 0. Here is an example: #!/usr/bin/ruby at_exit do raise "X" rescue nil end at_exit do nil end at_exit do exit 1 end at_exit do exit 2 end Results: ### ruby 1.9.4dev (2011-08-23 trunk 33027) [x86_64-darwin10.8.0] $ ruby at_exit.rb ; echo $? 0 ### ruby 1.9.3dev (2011-07-31 revision 32789) [x86_64-darwin10.8.0] $ ruby at_exit.rb ; echo $? 0 ### ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-darwin10.8.0] $ ruby at_exit.rb ; echo $? 0 ### ruby 1.8.7 (2011-06-30 patchlevel 352) [i686-darwin10.8.0] $ ruby at_exit.rb ; echo $? 1 ### jruby 1.6.3 (ruby-1.8.7-p330) (2011-07-07 965162f) (Java HotSpot(TM) 64-Bit Server VM 1.6.0_26) [darwin-x86_64-java] $ jruby at_exit.rb ; echo $? 1 ### jruby 1.6.3 (ruby-1.9.2-p136) (2011-07-07 965162f) (Java HotSpot(TM) 64-Bit Server VM 1.6.0_26) [darwin-x86_64-java] $ jruby --1.9 at_exit.rb ; echo $? 1 Related issues: https://github.com/jnicklas/capybara/pull/463 https://github.com/jnicklas/capybara/issues/178 https://github.com/rspec/rspec-core/pull/410 -- http://bugs.ruby-lang.org/