Project

General

Profile

Actions

Bug #17305

closed

rb_rescue2() seems to loop forever if given a non-module for rescued exceptions on <= 2.6.6

Added by Eregon (Benoit Daloze) about 1 year ago. Updated 10 months ago.

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

Description

Specifically,

      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


Related issues

Related to Ruby master - Bug #17338: ruby-spec stuck in "C-API Kernel function rb_rescue2"ClosedEregon (Benoit Daloze)Actions
Actions #1

Updated by Eregon (Benoit Daloze) about 1 year ago

  • Description updated (diff)

Updated by jeremyevans0 (Jeremy Evans) about 1 year ago

I bisected the fix to 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 (Tomoyuki Chikanaga) would like to backport it. Closing now that a fix has been identified and the issue doesn't exist in master.

Actions #3

Updated by vo.x (Vit Ondruch) about 1 year ago

  • Related to Bug #17338: ruby-spec stuck in "C-API Kernel function rb_rescue2" added

Updated by Eregon (Benoit Daloze) about 1 year ago

This bug seems to happen on master too, for some platforms, see #17338.

Updated by usa (Usaku NAKAMURA) 10 months ago

  • Backport changed from 2.5: DONTNEED, 2.6: REQUIRED, 2.7: DONTNEED to 2.5: DONTNEED, 2.6: DONE, 2.7: DONTNEED

merged the patch into ruby_2_6 at r67922

Actions

Also available in: Atom PDF