Project

General

Profile

Actions

Bug #12302

closed

at_exit status status is changed by raising/rescueing a exception in at_exit

Added by grosser (Michael Grosser) almost 6 years ago. Updated over 5 years ago.

Status:
Closed
Priority:
Normal
Target version:
-
[ruby-core:75038]

Description

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

at_exit do |exception|
   ...
end
Actions

Also available in: Atom PDF