From: snickhackman@... Date: 2020-07-15T04:45:59+00:00 Subject: [ruby-core:99173] [Ruby master Bug#17033] Infinite Traceback when encountering an Exception while catching an Exception Issue #17033 has been updated by NickHackman (Nick Hackman). NickHackman (Nick Hackman) wrote: > In Ruby 2.7.1 when an Exception occurs and another occurs when handling the first one it results in an infinite Traceback that doesn't mention the error. > > ```ruby > class MyException < StandardError > def initialize(obj) > @obj = obj > end > > def to_s > @obj.to_strm > end > end > > begin > raise MyException.new('test'), 'message' > rescue StandardError => e > puts e.to_s > end > ``` > > In the above instance, there's a typo `to_strm` doesn't exist for type String, but instead of a normal case of a typo saying that the method doesn't exist the output is > > ``` > ~ �� ruby ruby_traceback_hell.rb > Traceback (most recent call last): > Traceback (most recent call last): > Traceback (most recent call last): > Traceback (most recent call last): > Traceback (most recent call last): > Traceback (most recent call last): > Traceback (most recent call last): > Traceback (most recent call last): > Traceback (most recent call last): > Traceback (most recent call last): > Traceback (most recent call last): > Traceback (most recent call last): > ... > ``` > it keeps going without printing any sort of message about the actual error. > > It's expected that this would result in a message saying that the method is undefined, and this is the behavior on 2.5.1, and appears to be a regression in 2.7.1 If this is an actual issue is it possible I could work on it? ---------------------------------------- Bug #17033: Infinite Traceback when encountering an Exception while catching an Exception https://bugs.ruby-lang.org/issues/17033#change-86550 * Author: NickHackman (Nick Hackman) * Status: Open * Priority: Normal * ruby -v: ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-linux] * Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN ---------------------------------------- In Ruby 2.7.1 when an Exception occurs and another occurs when handling the first one it results in an infinite Traceback that doesn't mention the error. ```ruby class MyException < StandardError def initialize(obj) @obj = obj end def to_s @obj.to_strm end end begin raise MyException.new('test'), 'message' rescue StandardError => e puts e.to_s end ``` In the above instance, there's a typo `to_strm` doesn't exist for type String, but instead of a normal case of a typo saying that the method doesn't exist the output is ``` ~ �� ruby ruby_traceback_hell.rb Traceback (most recent call last): Traceback (most recent call last): Traceback (most recent call last): Traceback (most recent call last): Traceback (most recent call last): Traceback (most recent call last): Traceback (most recent call last): Traceback (most recent call last): Traceback (most recent call last): Traceback (most recent call last): Traceback (most recent call last): Traceback (most recent call last): ... ``` it keeps going without printing any sort of message about the actual error. It's expected that this would result in a message saying that the method is undefined, and this is the behavior on 2.5.1, and appears to be a regression in 2.7.1 -- https://bugs.ruby-lang.org/ Unsubscribe: