[ruby-core:75051] [Ruby trunk Bug#12302] at_exit status status is changed by raising/rescueing a exception in at_exit

From: dunaivad@...
Date: 2016-04-20 22:26:37 UTC
List: ruby-core #75051
Issue #12302 has been updated by Winchester Winchester.


Thanks for sharing your thoughts and ideas on this one. Please keep posting about such articles as they really spread useful information.Thanks for this particular [[http://www.write-an-essay.org/]] sharing. I hope it stays updated, take care.


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

* Author: Michael Grosser
* Status: Open
* Priority: Normal
* Assignee: 
* ruby -v: 
* Backport: 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN
----------------------------------------
~~~
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 $1 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

~~~
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>

In This Thread

Prev Next