From: merch-redmine@... Date: 2020-11-17T02:32:52+00:00 Subject: [ruby-core:100883] [Ruby master Bug#17305] rb_rescue2() seems to loop forever if given a non-module for rescued exceptions on <= 2.6.6 Issue #17305 has been updated by jeremyevans0 (Jeremy Evans). Backport changed from 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN to 2.5: DONTNEED, 2.6: REQUIRED, 2.7: DONTNEED Status changed from Open to Closed File 0001-Fix-rb_rescue2-when-called-with-non-module.patch added I bisected the fix to commit:a569bc09e25a2ba813d0bec1228d9ff65330a3db. We definitely don't want the entire commit. Attached is a minimal subset of the commit that doesn't introduce a new external function, in case @nagachika would like to backport it. Closing now that a fix has been identified and the issue doesn't exist in master. ---------------------------------------- Bug #17305: rb_rescue2() seems to loop forever if given a non-module for rescued exceptions on <= 2.6.6 https://bugs.ruby-lang.org/issues/17305#change-88531 * Author: Eregon (Benoit Daloze) * Status: Closed * Priority: Normal * Backport: 2.5: DONTNEED, 2.6: REQUIRED, 2.7: DONTNEED ---------------------------------------- Specifically, ```ruby it "raises TypeError if one of the passed exceptions is not a Module" do -> { @s.rb_rescue2(-> *_ { raise RuntimeError, "foo" }, :no_exc, -> x { x }, :exc, Object.new, 42) }.should raise_error(TypeError, /class or module required/) end ``` in `spec/ruby/optional/capi/kernel_spec.rb` reproduces the issue. Ruby 2.7.0+ seems fine and raises the expected TypeError. ---Files-------------------------------- 0001-Fix-rb_rescue2-when-called-with-non-module.patch (3.76 KB) -- https://bugs.ruby-lang.org/ Unsubscribe: