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

Faraday test suit exits with "native function not supported at this point" #2090

Closed
gogainda opened this issue Sep 6, 2020 · 10 comments
Closed
Assignees
Milestone

Comments

@gogainda
Copy link
Contributor

gogainda commented Sep 6, 2020

git clone git@github.com:lostisland/faraday.git
bundle install
bundle exec rake

Tests passed but in the end I see this exception:

Randomized with seed 21770

truffleruby: an exception escaped out of the interpreter - this is an implementation bug
org.graalvm.polyglot.PolyglotException: java.lang.AssertionError: native function not supported at this point: com.oracle.truffle.llvm.runtime.LLVMFunctionCode$NativeFunction@13bb1c898
	at com.oracle.truffle.llvm.runtime.interop.LLVMForeignCallNode.getCallTarget(LLVMForeignCallNode.java:248)
	at com.oracle.truffle.llvm.runtime.interop.LLVMForeignCallNode.<init>(LLVMForeignCallNode.java:202)
	at com.oracle.truffle.llvm.runtime.LLVMFunctionDescriptor.getForeignCallTarget(LLVMFunctionDescriptor.java:86)
	at com.oracle.truffle.llvm.runtime.LLVMFunctionDescriptorGen$InteropLibraryExports$Cached.executeAndSpecialize(LLVMFunctionDescriptorGen.java:147)
	at com.oracle.truffle.llvm.runtime.LLVMFunctionDescriptorGen$InteropLibraryExports$Cached.execute(LLVMFunctionDescriptorGen.java:120)
	at com.oracle.truffle.llvm.runtime.pointer.ManagedPointerLibraries.execute(ManagedPointerLibraries.java:77)
	at com.oracle.truffle.llvm.runtime.pointer.ManagedPointerLibrariesGen$InteropLibraryExports$Cached.execute(ManagedPointerLibrariesGen.java:810)
	at org.truffleruby.interop.InteropNodes.execute(InteropNodes.java:86)
	at org.truffleruby.interop.InteropNodes$ExecuteNode.executeForeignCached(InteropNodes.java:143)
	at org.truffleruby.interop.InteropNodesFactory$ExecuteNodeFactory$ExecuteNodeGen.executeAndSpecialize(InteropNodesFactory.java:633)
	at org.truffleruby.interop.InteropNodesFactory$ExecuteNodeFactory$ExecuteNodeGen.execute(InteropNodesFactory.java:538)
	at org.truffleruby.interop.OutgoingForeignCallNode.call(OutgoingForeignCallNode.java:153)
	at org.truffleruby.interop.OutgoingForeignCallNodeGen.executeAndSpecialize(OutgoingForeignCallNodeGen.java:677)
	at org.truffleruby.interop.OutgoingForeignCallNodeGen.executeCall(OutgoingForeignCallNodeGen.java:365)
	at org.truffleruby.language.dispatch.CachedForeignDispatchNode.doDispatch(CachedForeignDispatchNode.java:72)
	at org.truffleruby.language.dispatch.CachedForeignDispatchNode.executeDispatch(CachedForeignDispatchNode.java:58)
	at org.truffleruby.language.dispatch.UnresolvedDispatchNode.executeDispatch(UnresolvedDispatchNode.java:134)
	at org.truffleruby.language.dispatch.DispatchHeadNode.dispatch(DispatchHeadNode.java:44)
	at org.truffleruby.language.dispatch.RubyCallNode.executeWithArgumentsEvaluated(RubyCallNode.java:118)
	at org.truffleruby.language.dispatch.RubyCallNode.execute(RubyCallNode.java:106)
	at org.truffleruby.language.methods.ExceptionTranslatingNode.execute(ExceptionTranslatingNode.java:33)
	at org.truffleruby.language.control.SequenceNode.execute(SequenceNode.java:36)
	at org.truffleruby.language.methods.CatchForLambdaNode.execute(CatchForLambdaNode.java:52)
	at org.truffleruby.language.RubyRootNode.execute(RubyRootNode.java:61)
	at <llvm> rb_thread_call_without_gvl(call.c:104:0)
	at <llvm> perform_request(../../.rubies/truffleruby-dev/lib/gems/gems/patron-0.13.3/ext/patron/session_ext.c:814:29566)
	at <llvm> rb_ensure(exception.c:68:0)
	at <llvm> session_handle_request(../../.rubies/truffleruby-dev/lib/gems/gems/patron-0.13.3/ext/patron/session_ext.c:889:31821)
	at <ruby> WebMock::HttpLibAdapters::PatronAdapter::WebMockPatronSession#handle_request(../../.rubies/truffleruby-dev/lib/gems/gems/webmock-3.8.3/lib/webmock/http_lib_adapters/patron_adapter.rb:31:1184-1208)
	at <ruby> Patron::Session#request(../../.rubies/truffleruby-dev/lib/gems/gems/patron-0.13.3/lib/patron/session.rb:330:13278-13302)
	at <ruby> block in Faraday::Adapter::Patron#call(lib/faraday/adapter/patron.rb:32-33:796-915)
	at <ruby> Faraday::Adapter#connection(lib/faraday/adapter.rb:61:1959-1974)
	at <ruby> Faraday::Adapter::Patron#call(lib/faraday/adapter/patron.rb:29:678-724)
	at <ruby> Faraday::Response::Middleware#call(lib/faraday/response.rb:11:262-312)
	at <ruby> Faraday::Request::UrlEncoded#call(lib/faraday/request/url_encoded.rb:25:729-749)
	at <ruby> Faraday::Request::Multipart#call(lib/faraday/request/multipart.rb:30:919-939)
	at <ruby> Faraday::RackBuilder#build_response(lib/faraday/rack_builder.rb:154:4020-4065)
	at <ruby> Faraday::Connection#run_request(lib/faraday/connection.rb:492:16123-16165)
	at <ruby> Faraday::Connection#head(/Users/novoi/tmp/faraday/lib/faraday/connection.rb:198:253-312)
	at <ruby> block (3 levels) in Object#<top (required)>(spec/support/shared_examples/request_method.rb:37:1261-1368)
	at <ruby> RSpec::Matchers::BuiltIn::RaiseError#matches?(../../.rubies/truffleruby-dev/lib/gems/gems/rspec-expectations-3.9.2/lib/rspec/matchers/built_in/raise_error.rb:52:1617-1643)
	at <ruby> block in RSpec::Expectations::PositiveExpectationHandler.handle_matcher(../../.rubies/truffleruby-dev/lib/gems/gems/rspec-expectations-3.9.2/lib/rspec/expectations/handler.rb:50:1755-1868)
	at <ruby> RSpec::Expectations::ExpectationHelper.with_matcher(../../.rubies/truffleruby-dev/lib/gems/gems/rspec-expectations-3.9.2/lib/rspec/expectations/handler.rb:27:846-866)
	at <ruby> RSpec::Expectations::PositiveExpectationHandler.handle_matcher(../../.rubies/truffleruby-dev/lib/gems/gems/rspec-expectations-3.9.2/lib/rspec/expectations/handler.rb:48:1567-1649)
	at <ruby> RSpec::Expectations::ExpectationTarget::InstanceMethods#to(../../.rubies/truffleruby-dev/lib/gems/gems/rspec-expectations-3.9.2/lib/rspec/expectations/expectation_target.rb:65:2350-2455)
	at <ruby> RSpec::Expectations::BlockExpectationTarget#to(../../.rubies/truffleruby-dev/lib/gems/gems/rspec-expectations-3.9.2/lib/rspec/expectations/expectation_target.rb:101:3811-3823)
	at <ruby> block (2 levels) in Object#<top (required)>(spec/support/shared_examples/request_method.rb:37:1261-1368)
	at <ruby> block in RSpec::Core::Example#run(../../.rubies/truffleruby-dev/lib/gems/gems/rspec-core-3.9.2/lib/rspec/core/example.rb:257:9781-9856)
	at <ruby> block in RSpec::Core::Example#with_around_and_singleton_context_hooks(../../.rubies/truffleruby-dev/lib/gems/gems/rspec-core-3.9.2/lib/rspec/core/example.rb:503:17976-18018)
	at <ruby> block in RSpec::Core::Example#with_around_example_hooks(../../.rubies/truffleruby-dev/lib/gems/gems/rspec-core-3.9.2/lib/rspec/core/example.rb:460:16608-16659)
	at <ruby> block in RSpec::Core::Hooks::HookCollections#run(../../.rubies/truffleruby-dev/lib/gems/gems/rspec-core-3.9.2/lib/rspec/core/hooks.rb:481:20552-20637)
	at <ruby> RSpec::Core::Hooks::HookCollections#run_around_example_hooks_for(../../.rubies/truffleruby-dev/lib/gems/gems/rspec-core-3.9.2/lib/rspec/core/hooks.rb:619:25415-25521)
	at <ruby> RSpec::Core::Hooks::HookCollections#run(../../.rubies/truffleruby-dev/lib/gems/gems/rspec-core-3.9.2/lib/rspec/core/hooks.rb:481:20552-20637)
	at <ruby> RSpec::Core::Example#with_around_example_hooks(../../.rubies/truffleruby-dev/lib/gems/gems/rspec-core-3.9.2/lib/rspec/core/example.rb:460:16608-16659)
	at <ruby> RSpec::Core::Example#with_around_and_singleton_context_hooks(../../.rubies/truffleruby-dev/lib/gems/gems/rspec-core-3.9.2/lib/rspec/core/example.rb:503:17976-18018)
	at <ruby> RSpec::Core::Example#run(../../.rubies/truffleruby-dev/lib/gems/gems/rspec-core-3.9.2/lib/rspec/core/example.rb:254:9671-9724)
	at <ruby> block in RSpec::Core::ExampleGroup.run_examples(../../.rubies/truffleruby-dev/lib/gems/gems/rspec-core-3.9.2/lib/rspec/core/example_group.rb:644:24287-24339)
	at <ruby> RSpec::Core::ExampleGroup.run_examples(../../.rubies/truffleruby-dev/lib/gems/gems/rspec-core-3.9.2/lib/rspec/core/example_group.rb:640:24074-24140)
	at <ruby> RSpec::Core::ExampleGroup.run(../../.rubies/truffleruby-dev/lib/gems/gems/rspec-core-3.9.2/lib/rspec/core/example_group.rb:606:22643-22698)
	at <ruby> block in RSpec::Core::ExampleGroup.run(../../.rubies/truffleruby-dev/lib/gems/gems/rspec-core-3.9.2/lib/rspec/core/example_group.rb:607:22700-22809)
	at <ruby> RSpec::Core::ExampleGroup.run(../../.rubies/truffleruby-dev/lib/gems/gems/rspec-core-3.9.2/lib/rspec/core/example_group.rb:607:22700-22809)
	at <ruby> block in RSpec::Core::ExampleGroup.run(../../.rubies/truffleruby-dev/lib/gems/gems/rspec-core-3.9.2/lib/rspec/core/example_group.rb:607:22700-22809)
	at <ruby> RSpec::Core::ExampleGroup.run(../../.rubies/truffleruby-dev/lib/gems/gems/rspec-core-3.9.2/lib/rspec/core/example_group.rb:607:22700-22809)
	at <ruby> block in RSpec::Core::ExampleGroup.run(../../.rubies/truffleruby-dev/lib/gems/gems/rspec-core-3.9.2/lib/rspec/core/example_group.rb:607:22700-22809)
	at <ruby> RSpec::Core::ExampleGroup.run(../../.rubies/truffleruby-dev/lib/gems/gems/rspec-core-3.9.2/lib/rspec/core/example_group.rb:607:22700-22809)
	at <ruby> block in RSpec::Core::ExampleGroup.run(../../.rubies/truffleruby-dev/lib/gems/gems/rspec-core-3.9.2/lib/rspec/core/example_group.rb:607:22700-22809)
	at <ruby> RSpec::Core::ExampleGroup.run(../../.rubies/truffleruby-dev/lib/gems/gems/rspec-core-3.9.2/lib/rspec/core/example_group.rb:607:22700-22809)
	at <ruby> block (3 levels) in RSpec::Core::Runner#run_specs(../../.rubies/truffleruby-dev/lib/gems/gems/rspec-core-3.9.2/lib/rspec/core/runner.rb:121:4350-4408)
	at <ruby> block (2 levels) in RSpec::Core::Runner#run_specs(../../.rubies/truffleruby-dev/lib/gems/gems/rspec-core-3.9.2/lib/rspec/core/runner.rb:121:4350-4408)
	at <ruby> RSpec::Core::Configuration#with_suite_hooks(../../.rubies/truffleruby-dev/lib/gems/gems/rspec-core-3.9.2/lib/rspec/core/configuration.rb:2058:76544-76558)
	at <ruby> block in RSpec::Core::Runner#run_specs(../../.rubies/truffleruby-dev/lib/gems/gems/rspec-core-3.9.2/lib/rspec/core/runner.rb:116:4161-4204)
	at <ruby> RSpec::Core::Reporter#report(../../.rubies/truffleruby-dev/lib/gems/gems/rspec-core-3.9.2/lib/rspec/core/reporter.rb:74:2431-2448)
	at <ruby> RSpec::Core::Runner#run_specs(../../.rubies/truffleruby-dev/lib/gems/gems/rspec-core-3.9.2/lib/rspec/core/runner.rb:115:4082-4159)
	at <ruby> RSpec::Core::Runner#run(../../.rubies/truffleruby-dev/lib/gems/gems/rspec-core-3.9.2/lib/rspec/core/runner.rb:89:3234-3288)
	at <ruby> RSpec::Core::Runner.run(../../.rubies/truffleruby-dev/lib/gems/gems/rspec-core-3.9.2/lib/rspec/core/runner.rb:71:2689-2724)
	at <ruby> RSpec::Core::Runner.invoke(../../.rubies/truffleruby-dev/lib/gems/gems/rspec-core-3.9.2/lib/rspec/core/runner.rb:45:1686-1734)
	at <ruby> <main>(../../.rubies/truffleruby-dev/lib/gems/gems/rspec-core-3.9.2/exe/rspec:4:42-67)
	at org.graalvm.polyglot.Value.execute(Value.java:456)
	at org.truffleruby.launcher.RubyLauncher.runRubyMain(RubyLauncher.java:227)
	at org.truffleruby.launcher.RubyLauncher.launch(RubyLauncher.java:123)
	at org.graalvm.launcher.AbstractLanguageLauncher.launch(AbstractLanguageLauncher.java:121)
	at org.graalvm.launcher.AbstractLanguageLauncher.launch(AbstractLanguageLauncher.java:70)
	at org.truffleruby.launcher.RubyLauncher.main(RubyLauncher.java:38)
Original Internal Error: 
java.lang.AssertionError: native function not supported at this point: com.oracle.truffle.llvm.runtime.LLVMFunctionCode$NativeFunction@13bb1c898
@gogainda
Copy link
Contributor Author

gogainda commented Sep 6, 2020

Full log is here

@chrisseaton
Copy link
Collaborator

I think the issue is that we haven't considered someone using rb_thread_call_without_gvl to call a native function. We need to implement support for that.

https://github.com/toland/patron/blob/v0.13.3/ext/patron/session_ext.c#L814-L817

@chrisseaton
Copy link
Collaborator

I tried to make a spec for this in master...Shopify:thread_call_without_gvl-bug but I can't figure out how to make the function native. I tried functions which I think should be native and close-enough to identity such as labs but then I can't reproduce.

@eregon
Copy link
Member

eregon commented Oct 10, 2020

@chrisseaton I can't see any diff on that link, could you check it?

@chrisseaton
Copy link
Collaborator

Hmm sorry looks like I 'tidied up' this branch and deleted it. It's not in my reference log either. Sorry about that.

@eregon eregon self-assigned this Oct 10, 2020
@eregon eregon added this to the 20.3.0 milestone Oct 10, 2020
@gogainda
Copy link
Contributor Author

I run with latest truffleruby https://github.com/lostisland/faraday/runs/1248204647?check_suite_focus=true
It's not clear what's happening there bc logs are not updating, but I believe we still have a problem with faraday

@gogainda
Copy link
Contributor Author

@eregon

@eregon
Copy link
Member

eregon commented Oct 13, 2020

Could you file a separate issue?
It appears some of the specs are hanging, I think I saw it locally too for one of the adapters.

@gogainda
Copy link
Contributor Author

done: #2122

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

No branches or pull requests

4 participants