Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Java exception escaping when calling proc #2921

Closed
nirvdrum opened this issue Mar 10, 2023 · 1 comment
Closed

Java exception escaping when calling proc #2921

nirvdrum opened this issue Mar 10, 2023 · 1 comment
Assignees

Comments

@nirvdrum
Copy link
Collaborator

nirvdrum commented Mar 10, 2023

I'm working on refreshing our tags for the MRI tests. While doing so, I ran into a situation where a Java exception is escaping into Ruby. If you run with assertions enabled you'll see an assertion error instead.

pr = proc {|*a,b,c|
  [a,b,c]
}

pr.call
> jt ruby -v bad-proc.rb
truffleruby 23.0.0-dev-671182fb*, like ruby 3.1.3, GraalVM CE JVM [aarch64-darwin]

truffleruby: an internal exception escaped out of the interpreter,
please report it to https://github.com/oracle/truffleruby/issues.

-2 (java.lang.NegativeArraySizeException)
        from org.truffleruby.core.array.ArrayUtils.extractRange(ArrayUtils.java:110)
        from org.truffleruby.language.arguments.RubyArguments.getRawArguments(RubyArguments.java:343)
        from org.truffleruby.language.arguments.ReadRestArgumentNode.execute(ReadRestArgumentNode.java:80)
        from org.truffleruby.language.locals.WriteLocalVariableNode.execute(WriteLocalVariableNode.java:28)
        from org.truffleruby.language.RubyNode.doExecuteVoid(RubyNode.java:64)
        from org.truffleruby.language.control.SequenceNode.execute(SequenceNode.java:34)
        from org.truffleruby.language.control.IfElseNode.execute(IfElseNode.java:45)
        from org.truffleruby.language.RubyNode.doExecuteVoid(RubyNode.java:64)
        from org.truffleruby.language.control.SequenceNode.execute(SequenceNode.java:34)
        from org.truffleruby.language.RubyProcRootNode.execute(RubyProcRootNode.java:77)
bad-proc:1:in `block in <main>'
        from bad-proc:5:in `<main>'
> jt ruby -v --reveal bad-proc.rb
truffleruby 23.0.0-dev-671182fb*, like ruby 3.1.3, GraalVM CE JVM [aarch64-darwin]

truffleruby: an internal exception escaped out of the interpreter,
please report it to https://github.com/oracle/truffleruby/issues.

<no message> (java.lang.AssertionError)
        from org.truffleruby.core.array.ArrayUtils.assertExtractRangeArgs(ArrayUtils.java:119)
        from org.truffleruby.core.array.ArrayUtils.extractRange(ArrayUtils.java:108)
        from org.truffleruby.language.arguments.RubyArguments.getRawArguments(RubyArguments.java:343)
        from org.truffleruby.language.arguments.ReadRestArgumentNode.execute(ReadRestArgumentNode.java:80)
        from org.truffleruby.language.locals.WriteLocalVariableNode.execute(WriteLocalVariableNode.java:28)
        from org.truffleruby.language.RubyNode.doExecuteVoid(RubyNode.java:64)
        from org.truffleruby.language.control.SequenceNode.execute(SequenceNode.java:34)
        from org.truffleruby.language.control.IfElseNode.execute(IfElseNode.java:45)
        from org.truffleruby.language.RubyNode.doExecuteVoid(RubyNode.java:64)
        from org.truffleruby.language.control.SequenceNode.execute(SequenceNode.java:34)
        from org.truffleruby.language.RubyProcRootNode.execute(RubyProcRootNode.java:77)
bad-proc:1:in `block in <main>'
        from bad-proc:5:in `<main>'
@nirvdrum nirvdrum changed the title Java exception leaking calling proc Java exception escaping when calling proc Mar 10, 2023
@andrykonchin andrykonchin self-assigned this Mar 20, 2023
@andrykonchin
Copy link
Member

Fixed in 20d8d11.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants