Issue #12302 has been updated by karache deyong.

Tracker changed from Bug to Backport
Project changed from Ruby trunk to Backport21
Assignee set to Rei Odaira

I am mainly surprised by the way you unique out [[http://www.write-an-essay.org/]]
 almost every single little detail. It can be genuinely heading to aid me a great offer. Thanks for sharing



----------------------------------------
Backport #12302: at_exit status status is changed by raising/rescueing a exception in at_exit
https://bugs.ruby-lang.org/issues/12302#change-58255

* Author: Michael Grosser
* Status: Closed
* Priority: Normal
* Assignee: Rei Odaira
----------------------------------------
~~~ruby
at_exit do
  puts "1 #{$!}"
end

at_exit do
  puts "2 #{$!}"
  raise 'x' rescue nil
end

at_exit do
  puts "3 #{$!}"
  exit 1
end
~~~

Nr 3 runs first and exits 1 ... Nr2 receives the correct exit status ... but using raise/rescue there overrides `$!` and Nr 1 thinks it is a clean exit ...

seems semi related to https://bugs.ruby-lang.org/issues/5218 ... ideally the `at_exit` block should restore the previous `$!` ... or give some other way of knowing the exit status like passing it to the block

~~~ruby
at_exit do |exception|
   ...
end
~~~



-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>