Project

General

Profile

Actions

Bug #14566

closed

`raise` in `Exception#message` causes infinite loop

Added by pocke (Masataka Kuwabara) about 3 years ago. Updated over 2 years ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Target version:
-
ruby -v:
ruby 2.6.0dev (2018-03-01 trunk 62592) [x86_64-linux]
[ruby-core:<unknown>]

Description

This code does not stop.

class A < StandardError
  def message
    raise
  end
end

raise A

The following code also does not stop.

class A < StandardError
  def message
    1/0
  end
end

raise A

And they ignore CTRL-C, so I should do CTRL-Z (suspend) and kill -9 to stop them.

I confirmed the problem in Ruby 2.5 and trunk.

$ ruby -v
ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-linux]

$ ruby -v
ruby 2.6.0dev (2018-03-01 trunk 62592) [x86_64-linux]

But Ruby 2.4 and 2.3 do not stop (I does not have Ruby 2.2 because I cannot build it in my environment.).
I can get same outputs between raise and 1/0 in the message method body.

$ ruby -v test.rb
ruby 2.4.3p205 (2017-12-14 revision 61247) [x86_64-linux]
test.rb:7:in `<main>': A

$ ruby -v test.rb
ruby 2.3.6p384 (2017-12-14 revision 61254) [x86_64-linux]
test.rb:7:in `<main>': A

Files

fix-bug-14566.patch (1.75 KB) fix-bug-14566.patch ujihisa (Tatsuhiro Ujihisa), 04/10/2018 12:55 PM
Actions

Also available in: Atom PDF