Truffleruby: falcon: Cannot convert LLVMTypedForeignObject+0x0 to LLVMNativePointer

Created on 6 Nov 2018  Â·  41Comments  Â·  Source: oracle/truffleruby

When I try to open a page served by the latest falcon 0.19.3 under truffleruby 1.0.0.rc9. I got this error:

$ NIO4R_PURE=true falcon --verbose serve --threaded
D, [2018-11-06T22:26:52.101000 #39332] DEBUG -- Async::IO::Socket: Binding to #<Addrinfo: [::1]:9292 TCP>
D, [2018-11-06T22:26:52.136000 #39332] DEBUG -- Async::IO::Socket: Binding to #<Addrinfo: 127.0.0.1:9292 TCP>
D, [2018-11-06T22:26:52.182000 #39332] DEBUG -- <Async::Reactor:0x74e stopped=false>: Exiting run-loop because finished.
I, [2018-11-06T22:26:52.199000 #39332]  INFO -- : Falcon taking flight! Binding to #<Falcon::Endpoint https://localhost:9292/ {}> [Async::Container::Threaded with concurrency: 4]
I, [2018-11-06T22:26:52.214000 #39332]  INFO -- : Send `kill -USR1 39332` for detailed status :)
I, [2018-11-06T22:26:52.215000 #39332]  INFO -- : Send `kill -USR1 39332` for detailed status :)
I, [2018-11-06T22:26:52.215000 #39332]  INFO -- : Send `kill -USR1 39332` for detailed status :)
I, [2018-11-06T22:26:52.214000 #39332]  INFO -- : Send `kill -USR1 39332` for detailed status :)
java.lang.IllegalStateException: Cannot convert LLVMTypedForeignObject+0x0 to LLVMNativePointer

Now config.ru has to exist => https://github.com/socketry/falcon/issues/33#issuecomment-436413454

config.ru:

run lambda {|env| [200, {}, ["Hello World"]]}

All 41 comments

The config just needs to end in .ru otherwise it triggers some weird behaviour from rack.

The "Hello World" config worked fine for me: https://github.com/socketry/falcon/tree/master/examples/hello

What example did you run which caused such an error?

@ioquatix see the code in the report. I use the same like you, just without #!/… at the beginning

Oh, right, sorry, I didn't read it clearly and I assumed that was already working.

What rc are you on?

Do you have a better backtrace as to what is causing the error?

How about running falcon specs?

I have truffleruby 1.0.0.rc9

It's everything what I got. There is no additional backtrace unfortunately.

When I tried the specs, they froze here

$ rspec
~/.gem/truffleruby/2.4.4/gems/async-io-1.16.3/lib/async/io/socket.rb:97: warning: shadowing outer local variable - task
~/.gem/truffleruby/2.4.4/gems/async-io-1.16.3/lib/async/io/socket.rb:180: warning: shadowing outer local variable - task
~/dev/bugs/truffleruby/falcon/lib/falcon/verbose.rb:52: warning: shadowing outer local variable - statistics
~/.gem/truffleruby/2.4.4/gems/async-io-1.16.3/lib/async/io/shared_endpoint.rb:29: warning: shadowing outer local variable - endpoint
~/.gem/truffleruby/2.4.4/gems/async-io-1.16.3/lib/async/io/shared_endpoint.rb:70: warning: shadowing outer local variable - task
~/.gem/truffleruby/2.4.4/gems/async-io-1.16.3/lib/async/io/shared_endpoint.rb:88: warning: shadowing outer local variable - task
~/.gem/truffleruby/2.4.4/gems/samovar-1.9.1/lib/samovar/command.rb:97: warning: shadowing outer local variable - rows
~/dev/bugs/truffleruby/falcon/lib/falcon/hosts.rb:223: warning: shadowing outer local variable - task
~/dev/bugs/truffleruby/falcon/lib/falcon/hosts.rb:234: warning: shadowing outer local variable - task
~/.gem/truffleruby/2.4.4/gems/async-rspec-1.11.0/lib/async/rspec/reactor.rb:39: warning: shadowing outer local variable - task
~/.gem/truffleruby/2.4.4/gems/async-rspec-1.11.0/lib/async/rspec/memory/limit_allocations.rb:41: warning: shadowing outer local variable - count
~/.gem/truffleruby/2.4.4/gems/async-rspec-1.11.0/lib/async/rspec/ssl.rb:159: warning: shadowing outer local variable - context

Falcon::Adapters::Input
  with body
    #read(length, buffer)
      can read partial input
      can read all input
      with large body

Are you on linux? I was running on macOS.

Make sure you specify NIO4R_PURE=true rspec

@ioquatix macOS 10.14

I can see this in my browser (Firefox:

screenshot 2018-11-06 at 23 11 54

I guess, it might be due to self-signed certificate?

NIO4R_PURE=true rspec doesn't help. It freeze in the same point.

Try using Chrome or Safari, there have been reports of problems with FireFox which I haven't figured out yet.

Did you bundle update before running specs?

Here is what I had to do:

export PATH=/opt/local/libexec/llvm-7.0/bin:$PATH
rvm reinstall truffleruby
bundle update
NIO4R_PURE=true rspec

But it failed :( I will try to investigate why.

I fixed ruby-prof by only allowing it on mri.

@ioquatix I had the all latest gems. bundle update didn't bring any new since all gems had been latest. + I had to removed ruby-prof due to incompatibility with truffleruby.

But when I used NIO4R_PURE=true bundle exec rspec and then I used ctrl + c in the freezing point. I got this

$ NIO4R_PURE=true bundle exec rspec
~/.gem/truffleruby/2.4.4/gems/async-io-1.16.3/lib/async/io/socket.rb:97: warning: shadowing outer local variable - task
~/.gem/truffleruby/2.4.4/gems/async-io-1.16.3/lib/async/io/socket.rb:180: warning: shadowing outer local variable - task
~/dev/bugs/truffleruby/falcon/lib/falcon/verbose.rb:52: warning: shadowing outer local variable - statistics
~/.gem/truffleruby/2.4.4/gems/async-io-1.16.3/lib/async/io/shared_endpoint.rb:29: warning: shadowing outer local variable - endpoint
~/.gem/truffleruby/2.4.4/gems/async-io-1.16.3/lib/async/io/shared_endpoint.rb:70: warning: shadowing outer local variable - task
~/.gem/truffleruby/2.4.4/gems/async-io-1.16.3/lib/async/io/shared_endpoint.rb:88: warning: shadowing outer local variable - task
~/.gem/truffleruby/2.4.4/gems/samovar-1.9.1/lib/samovar/command.rb:97: warning: shadowing outer local variable - rows
~/dev/bugs/truffleruby/falcon/lib/falcon/hosts.rb:223: warning: shadowing outer local variable - task
~/dev/bugs/truffleruby/falcon/lib/falcon/hosts.rb:234: warning: shadowing outer local variable - task
~/.gem/truffleruby/2.4.4/gems/async-rspec-1.11.0/lib/async/rspec/reactor.rb:39: warning: shadowing outer local variable - task
~/.gem/truffleruby/2.4.4/gems/async-rspec-1.11.0/lib/async/rspec/memory/limit_allocations.rb:41: warning: shadowing outer local variable - count
~/.gem/truffleruby/2.4.4/gems/async-rspec-1.11.0/lib/async/rspec/ssl.rb:159: warning: shadowing outer local variable - context

Falcon::Adapters::Input
  with body
    #read(length, buffer)
      can read partial input
      can read all input
      with large body
^Ccd[ruby] SEVERE: waited 5 seconds in the SafepointManager but 1 of 3 threads did not arrive - a thread is likely making a blocking native call which should use runBlockingSystemCallUntilResult() - check with jstack
Dumping stacktraces of blocked threads:
Thread[main,5,main]
com.oracle.svm.core.thread.Safepoint.freezeAtSafepoint(Safepoint.java:241)
com.oracle.svm.core.thread.Safepoint.slowPathSafepointCheck(Safepoint.java:214)
com.oracle.svm.core.thread.Safepoint.enterSlowPathSafepointCheck(Safepoint.java:326)
com.oracle.svm.core.code.CodeInfoDecoder.lookupCodeInfo(CodeInfoDecoder.java:129)
com.oracle.svm.core.code.CodeInfoTable.lookupCodeInfoQueryResult(CodeInfoTable.java:83)
com.oracle.svm.core.stack.PhysicalStackFrameVisitor.visitFrame(SubstrateStackIntrospection.java:108)
com.oracle.svm.core.stack.JavaStackWalker.doWalk(JavaStackWalker.java:97)
com.oracle.svm.core.stack.JavaStackWalker.walkCurrentThread(JavaStackWalker.java:54)
com.oracle.svm.core.stack.SubstrateStackIntrospection.iterateFrames(SubstrateStackIntrospection.java:78)
org.graalvm.compiler.truffle.runtime.GraalTruffleRuntime.iterateImpl(GraalTruffleRuntime.java:550)
org.graalvm.compiler.truffle.runtime.GraalTruffleRuntime.iterateFrames(GraalTruffleRuntime.java:506)
org.truffleruby.language.CallStackManager.getTopMostUserSourceSection(CallStackManager.java:178)
org.truffleruby.language.objects.AllocateObjectNode.allocateTracing(AllocateObjectNode.java:91)
org.truffleruby.language.objects.AllocateObjectNodeGen.executeAndSpecialize(AllocateObjectNodeGen.java:155)
org.truffleruby.language.objects.AllocateObjectNodeGen.executeAllocate(AllocateObjectNodeGen.java:82)
org.truffleruby.language.objects.AllocateObjectNode.allocate(AllocateObjectNode.java:44)
org.truffleruby.core.string.StringNodes$MakeStringNode.allocate(StringNodes.java:242)
org.truffleruby.core.string.StringNodes$MakeStringNode.makeStringFromBytes(StringNodes.java:234)
org.truffleruby.core.string.StringNodes$MakeStringNode.makeStringFromString(StringNodes.java:256)
org.truffleruby.core.string.StringNodesFactory$MakeStringNodeGen.executeAndSpecialize(StringNodesFactory.java:216)
org.truffleruby.core.string.StringNodesFactory$MakeStringNodeGen.executeMake(StringNodesFactory.java:171)

I use chruby, ruby-build and llvm 4.0 (what is recommend to use)

I got some kind of infinite loop in async-rspec when tracking memory allocations:

org.truffleruby.core.string.StringNodesFactory$MakeStringNodeGen.executeMake(StringNodesFactory.java:171)
org.truffleruby.language.objects.AllocateObjectNode.string(AllocateObjectNode.java:117)
org.truffleruby.language.objects.AllocateObjectNode.allocateTracing(AllocateObjectNode.java:104)
org.truffleruby.language.objects.AllocateObjectNodeGen.executeAndSpecialize(AllocateObjectNodeGen.java:155)
org.truffleruby.language.objects.AllocateObjectNodeGen.executeAllocate(AllocateObjectNodeGen.java:82)
org.truffleruby.language.objects.AllocateObjectNode.allocate(AllocateObjectNode.java:44)
org.truffleruby.core.string.StringNodes$MakeStringNode.allocate(StringNodes.java:242)
org.truffleruby.core.string.StringNodes$MakeStringNode.makeStringFromBytes(StringNodes.java:234)
org.truffleruby.core.string.StringNodes$MakeStringNode.makeStringFromString(StringNodes.java:256)
org.truffleruby.core.string.StringNodesFactory$MakeStringNodeGen.executeAndSpecialize(StringNodesFactory.java:216)
org.truffleruby.core.string.StringNodesFactory$MakeStringNodeGen.executeMake(StringNodesFactory.java:171)
org.truffleruby.language.objects.AllocateObjectNode.string(AllocateObjectNode.java:117)
org.truffleruby.language.objects.AllocateObjectNode.allocateTracing(AllocateObjectNode.java:104)
org.truffleruby.language.objects.AllocateObjectNodeGen.executeAndSpecialize(AllocateObjectNodeGen.java:155)
org.truffleruby.language.objects.AllocateObjectNodeGen.executeAllocate(AllocateObjectNodeGen.java:82)
org.truffleruby.language.objects.AllocateObjectNode.allocate(AllocateObjectNode.java:44)
org.truffleruby.core.string.StringNodes$MakeStringNode.allocate(StringNodes.java:242)
org.truffleruby.core.string.StringNodes$MakeStringNode.makeStringFromBytes(StringNodes.java:234)
org.truffleruby.core.string.StringNodes$MakeStringNode.makeStringFromString(StringNodes.java:256)
org.truffleruby.core.string.StringNodesFactory$MakeStringNodeGen.executeAndSpecialize(StringNodesFactory.java:216)
org.truffleruby.core.string.StringNodesFactory$MakeStringNodeGen.executeMake(StringNodesFactory.java:171)
org.truffleruby.language.objects.AllocateObjectNode.string(AllocateObjectNode.java:117)
org.truffleruby.language.objects.AllocateObjectNode.allocateTracing(AllocateObjectNode.java:104)
org.truffleruby.language.objects.AllocateObjectNodeGen.executeAndSpecialize(AllocateObjectNodeGen.java:155)
org.truffleruby.language.objects.AllocateObjectNodeGen.executeAllocate(AllocateObjectNodeGen.java:82)
org.truffleruby.language.objects.AllocateObjectNode.allocate(AllocateObjectNode.java:44)
org.truffleruby.core.string.StringNodes$MakeStringNode.allocate(StringNodes.java:242)
org.truffleruby.core.string.StringNodes$MakeStringNode.makeStringFromBytes(StringNodes.java:234)
org.truffleruby.core.string.StringNodes$MakeStringNode.makeStringFromString(StringNodes.java:256)
org.truffleruby.core.string.StringNodesFactory$MakeStringNodeGen.executeAndSpecialize(StringNodesFactory.java:216)
org.truffleruby.core.string.StringNodesFactory$MakeStringNodeGen.executeMake(StringNodesFactory.java:171)
org.truffleruby.language.objects.AllocateObjectNode.string(AllocateObjectNode.java:117)
org.truffleruby.language.objects.AllocateObjectNode.allocateTracing(AllocateObjectNode.java:104)
org.truffleruby.language.objects.AllocateObjectNodeGen.executeAndSpecialize(AllocateObjectNodeGen.java:155)
org.truffleruby.language.objects.AllocateObjectNodeGen.executeAllocate(AllocateObjectNodeGen.java:82)
org.truffleruby.language.objects.AllocateObjectNode.allocate(AllocateObjectNode.java:44)
org.truffleruby.core.string.StringNodes$MakeStringNode.allocate(StringNodes.java:242)
org.truffleruby.core.string.StringNodes$MakeStringNode.makeStringFromBytes(StringNodes.java:234)
org.truffleruby.core.string.StringNodes$MakeStringNode.makeStringFromString(StringNodes.java:256)
org.truffleruby.core.string.StringNodesFactory$MakeStringNodeGen.executeAndSpecialize(StringNodesFactory.java:216)
org.truffleruby.core.string.StringNodesFactory$MakeStringNodeGen.executeMake(StringNodesFactory.java:171)

I think ObjectSpace.trace_object_allocations(&block) is broken.

@ioquatix just back to the original issue. The same behaviour is with Safari. I get Cannot convert LLVMTypedForeignObject+0x0 to LLVMNativePointer

I've disabled the memory checks for truffleruby. We should file a bug report too.

Okay, I filed a bug report https://github.com/oracle/truffleruby/issues/1456 and also disabled the memory checks on async-rspec.

Okay so I got most of the specs to pass, but there are still some issues.

Okay, sorry for the dump, but lots of specs passing now, and still some kind of "internal error".

^_^ > rspec
/Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-io-1.16.3/lib/async/io/socket.rb:97: warning: shadowing outer local variable - task
/Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-io-1.16.3/lib/async/io/socket.rb:180: warning: shadowing outer local variable - task
/Users/samuel/Documents/socketry/falcon/lib/falcon/verbose.rb:52: warning: shadowing outer local variable - statistics
/Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-io-1.16.3/lib/async/io/shared_endpoint.rb:29: warning: shadowing outer local variable - endpoint
/Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-io-1.16.3/lib/async/io/shared_endpoint.rb:70: warning: shadowing outer local variable - task
/Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-io-1.16.3/lib/async/io/shared_endpoint.rb:88: warning: shadowing outer local variable - task
/Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/samovar-1.9.1/lib/samovar/command.rb:97: warning: shadowing outer local variable - rows
/Users/samuel/Documents/socketry/falcon/lib/falcon/hosts.rb:223: warning: shadowing outer local variable - task
/Users/samuel/Documents/socketry/falcon/lib/falcon/hosts.rb:234: warning: shadowing outer local variable - task
/Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-rspec-1.11.1/lib/async/rspec/reactor.rb:39: warning: shadowing outer local variable - task
/Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-rspec-1.11.1/lib/async/rspec/memory/limit_allocations.rb:41: warning: shadowing outer local variable - count
/Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-rspec-1.11.1/lib/async/rspec/ssl.rb:159: warning: shadowing outer local variable - context

Falcon::Adapters::Input
  with body
    #read(length, buffer)
      can read partial input
      can read all input
      with large body
        allocates expected amount of memory
    #read
      can read all input
      can read no input
      can read partial input
      can read partial input with buffer
      with large body
        allocates expected amount of memory
    #gets
      can read chunks
      returns remainder after calling #read
    #each
      can read chunks
    #eof?
      should not be at end of file
    #rewind
      reads same chunk again
      clears unread buffer
  without body
    #read(length, buffer)
      can read no input
      can read partial input
    #read
      can read all input
      can read no input
      can read partial input
    #gets
      can read chunks
    #eof?
      should be at end of file

Falcon::Adapters::Output
  with empty body
    should be empty?
  with single string body
    should not be empty?

Falcon::Adapters::Rack
  #unwrap_headers
    should merge duplicate headers
  HTTP_HOST
    get valid HTTP_HOST (FAILED - 1)
  websockets
    can send and receive messages using websockets (FAILED - 2)

Falcon::Adapters::Response
  with multiple set-cookie headers
    should generate multiple headers
  with #to_path
    should generate file body
    should not modify partial responses
  with content-length
    should remove header

Falcon::Command::Serve
  can listen on specified port (FAILED - 3)

Falcon::Proxy
E, [2018-11-07T11:56:31.138000 #2244] ERROR -- #<Falcon::Proxy:0x27da>: expected the first argument to be a Integer, Symbol, String, or Socket::Option (TypeError)
/Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-http-0.37.0/lib/async/http/client.rb:106:in `call'
/Users/samuel/Documents/socketry/falcon/lib/falcon/proxy.rb:121:in `call'
/Users/samuel/Documents/socketry/falcon/spec/falcon/proxy_spec.rb:43:in `block (2 levels) in <top (required)>'
/Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/rspec-core-3.8.0/lib/rspec/core/example.rb:254:in `instance_exec'
/Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/rspec-core-3.8.0/lib/rspec/core/example.rb:254:in `block in run'
/Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/rspec-core-3.8.0/lib/rspec/core/example.rb:500:in `block in with_around_and_singleton_context_hooks'
/Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/rspec-core-3.8.0/lib/rspec/core/example.rb:457:in `block in with_around_example_hooks'
/Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/rspec-core-3.8.0/lib/rspec/core/hooks.rb:464:in `block in run'
/Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/rspec-core-3.8.0/lib/rspec/core/hooks.rb:604:in `block in run_around_example_hooks_for'
/Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/rspec-core-3.8.0/lib/rspec/core/example.rb:342:in `call'
/Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/rspec-core-3.8.0/lib/rspec/core/example.rb:342:in `call'
/Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-rspec-1.11.1/lib/async/rspec/reactor.rb:55:in `block (2 levels) in run_example'
/Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:74:in `block in initialize'
  can select client based on authority (FAILED - 4)
  defers if no host is available (FAILED - 5)

Falcon::Server
  http client
    can POST application/x-www-form-urlencoded (FAILED - 6)
    can POST multipart/form-data (FAILED - 7)
    GET /
      generates successful response (FAILED - 8)
      generates server and date headers (FAILED - 9)
  broken middleware
    results in a 500 error if middleware raises an exception (FAILED - 10)

Falcon::Server with SSL
  basic middleware
    client can get resource (FAILED - 11)

Falcon::Server
  can start server (FAILED - 12)

Failures:

  1) Falcon::Adapters::Rack HTTP_HOST get valid HTTP_HOST
     Got 0 failures and 3 other errors:

     1.1) Failure/Error: server_task = reactor.async do

          RuntimeError:
            Cannot convert LLVMTypedForeignObject+0x0 to LLVMNativePointer (IllegalStateException)
                from java.lang.Throwable.<init>(Throwable.java:287)
                from java.lang.Exception.<init>(Exception.java:84)
                from java.lang.RuntimeException.<init>(RuntimeException.java:80)
                from java.lang.IllegalStateException.<init>(IllegalStateException.java:75)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNode$LLVMObjectToNativeNode.transitionToNative(LLVMToNativeNode.java:117)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen$LLVMObjectToNativeNodeGen.executeAndSpecialize(LLVMToNativeNodeGen.java:301)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen$LLVMObjectToNativeNodeGen.executeWithTarget(LLVMToNativeNodeGen.java:201)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNode.doOther(LLVMToNativeNode.java:78)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen.executeAndSpecialize(LLVMToNativeNodeGen.java:129)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen.executeWithTarget(LLVMToNativeNodeGen.java:50)
            Caused by:
            Message not supported: TO_NATIVE (UnsupportedMessageException)
                from java.lang.Throwable.<init>(Throwable.java:265)
                from java.lang.Exception.<init>(Exception.java:66)
                from com.oracle.truffle.api.interop.InteropException.<init>(InteropException.java:52)
                from com.oracle.truffle.api.interop.UnsupportedMessageException.<init>(UnsupportedMessageException.java:57)
                from com.oracle.truffle.api.interop.UnsupportedMessageException.raise(UnsupportedMessageException.java:84)
                from org.truffleruby.interop.RubyMessageResolution$ForeignToNativeNode.access(RubyMessageResolution.java:190)
                from org.truffleruby.interop.RubyMessageResolutionForeign$ForeignToNativeSubNode.accessWithTarget(RubyMessageResolutionForeign.java:503)
                from org.truffleruby.interop.RubyMessageResolutionForeignFactory$ForeignToNativeSubNodeGen.executeAndSpecialize(RubyMessageResolutionForeignFactory.java:602)
                from org.truffleruby.interop.RubyMessageResolutionForeignFactory$ForeignToNativeSubNodeGen.executeWithTarget(RubyMessageResolutionForeignFactory.java:588)
                from org.truffleruby.interop.RubyMessageResolutionForeign$ForeignToNativeSubNode$TO_NATIVERootNode.execute(RubyMessageResolutionForeign.java:520)
            Translated to internal error
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:85:in `internal_raise'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:85:in `raise'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:85:in `block in initialize'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:117:in `resume'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:117:in `run'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/reactor.rb:104:in `async'
          # ./spec/spec_helper.rb:33:in `server_task'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-rspec-1.11.1/lib/async/rspec/reactor.rb:55:in `block (2 levels) in run_example'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:74:in `block in initialize'

     1.2) Failure/Error: server_task = reactor.async do

          RuntimeError:
            Cannot convert LLVMTypedForeignObject+0x0 to LLVMNativePointer (IllegalStateException)
                from java.lang.Throwable.<init>(Throwable.java:287)
                from java.lang.Exception.<init>(Exception.java:84)
                from java.lang.RuntimeException.<init>(RuntimeException.java:80)
                from java.lang.IllegalStateException.<init>(IllegalStateException.java:75)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNode$LLVMObjectToNativeNode.transitionToNative(LLVMToNativeNode.java:117)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen$LLVMObjectToNativeNodeGen.executeWithTarget(LLVMToNativeNodeGen.java:194)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNode.doOther(LLVMToNativeNode.java:78)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen.executeWithTarget(LLVMToNativeNodeGen.java:46)
                from com.oracle.truffle.llvm.nodes.memory.store.LLVMPointerStoreNode.doAddress(LLVMPointerStoreNode.java:68)
                from com.oracle.truffle.llvm.nodes.memory.store.LLVMPointerStoreNodeGen.execute_generic1(LLVMPointerStoreNodeGen.java:165)
            Caused by:
            Message not supported: TO_NATIVE (UnsupportedMessageException)
                from java.lang.Throwable.<init>(Throwable.java:265)
                from java.lang.Exception.<init>(Exception.java:66)
                from com.oracle.truffle.api.interop.InteropException.<init>(InteropException.java:52)
                from com.oracle.truffle.api.interop.UnsupportedMessageException.<init>(UnsupportedMessageException.java:57)
                from com.oracle.truffle.api.interop.UnsupportedMessageException.raise(UnsupportedMessageException.java:84)
                from org.truffleruby.interop.RubyMessageResolution$ForeignToNativeNode.access(RubyMessageResolution.java:190)
                from org.truffleruby.interop.RubyMessageResolutionForeign$ForeignToNativeSubNode.accessWithTarget(RubyMessageResolutionForeign.java:503)
                from org.truffleruby.interop.RubyMessageResolutionForeignFactory$ForeignToNativeSubNodeGen.executeWithTarget(RubyMessageResolutionForeignFactory.java:585)
                from org.truffleruby.interop.RubyMessageResolutionForeign$ForeignToNativeSubNode$TO_NATIVERootNode.execute(RubyMessageResolutionForeign.java:520)
                from org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callProxy(OptimizedCallTarget.java:289)
            Translated to internal error
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:85:in `internal_raise'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:85:in `raise'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:85:in `block in initialize'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:117:in `resume'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:117:in `run'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/reactor.rb:104:in `async'
          # ./spec/spec_helper.rb:33:in `server_task'
          # ./spec/spec_helper.rb:39:in `block (2 levels) in <top (required)>'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-rspec-1.11.1/lib/async/rspec/reactor.rb:55:in `block (2 levels) in run_example'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:74:in `block in initialize'

     1.3) Failure/Error: Truffle::Interop.execute_without_conversion(function, *args)

          RuntimeError:
            Cannot convert LLVMTypedForeignObject+0x0 to LLVMNativePointer (IllegalStateException)
                from java.lang.Throwable.<init>(Throwable.java:287)
                from java.lang.Exception.<init>(Exception.java:84)
                from java.lang.RuntimeException.<init>(RuntimeException.java:80)
                from java.lang.IllegalStateException.<init>(IllegalStateException.java:75)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNode$LLVMObjectToNativeNode.transitionToNative(LLVMToNativeNode.java:117)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen$LLVMObjectToNativeNodeGen.executeAndSpecialize(LLVMToNativeNodeGen.java:301)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen$LLVMObjectToNativeNodeGen.executeWithTarget(LLVMToNativeNodeGen.java:201)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNode.doOther(LLVMToNativeNode.java:78)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen.executeAndSpecialize(LLVMToNativeNodeGen.java:129)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen.executeWithTarget(LLVMToNativeNodeGen.java:50)
            Caused by:
            Message not supported: TO_NATIVE (UnsupportedMessageException)
                from java.lang.Throwable.<init>(Throwable.java:265)
                from java.lang.Exception.<init>(Exception.java:66)
                from com.oracle.truffle.api.interop.InteropException.<init>(InteropException.java:52)
                from com.oracle.truffle.api.interop.UnsupportedMessageException.<init>(UnsupportedMessageException.java:57)
                from com.oracle.truffle.api.interop.UnsupportedMessageException.raise(UnsupportedMessageException.java:84)
                from org.truffleruby.interop.RubyMessageResolution$ForeignToNativeNode.access(RubyMessageResolution.java:190)
                from org.truffleruby.interop.RubyMessageResolutionForeign$ForeignToNativeSubNode.accessWithTarget(RubyMessageResolutionForeign.java:503)
                from org.truffleruby.interop.RubyMessageResolutionForeignFactory$ForeignToNativeSubNodeGen.executeAndSpecialize(RubyMessageResolutionForeignFactory.java:602)
                from org.truffleruby.interop.RubyMessageResolutionForeignFactory$ForeignToNativeSubNodeGen.executeWithTarget(RubyMessageResolutionForeignFactory.java:588)
                from org.truffleruby.interop.RubyMessageResolutionForeign$ForeignToNativeSubNode$TO_NATIVERootNode.execute(RubyMessageResolutionForeign.java:520)
            Translated to internal error
          # /Users/samuel/.rvm/rubies/truffleruby-1.0.0-rc9/lib/truffle/truffle/cext.rb:221:in `execute_without_conversion'
          # /Users/samuel/.rvm/rubies/truffleruby-1.0.0-rc9/lib/truffle/truffle/cext.rb:221:in `execute_with_mutex'
          # /Users/samuel/.rvm/rubies/truffleruby-1.0.0-rc9/lib/truffle/truffle/cext_ruby.rb:36:in `close'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/debug/selector.rb:73:in `close'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/reactor.rb:208:in `close'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-rspec-1.11.1/lib/async/rspec/reactor.rb:84:in `block (2 levels) in RSpec'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-rspec-1.11.1/lib/async/rspec/leaks.rb:42:in `block (2 levels) in RSpec'

  2) Falcon::Adapters::Rack websockets can send and receive messages using websockets
     Got 0 failures and 3 other errors:

     2.1) Failure/Error: server_task = reactor.async do

          RuntimeError:
            Cannot convert LLVMTypedForeignObject+0x0 to LLVMNativePointer (IllegalStateException)
                from java.lang.Throwable.<init>(Throwable.java:287)
                from java.lang.Exception.<init>(Exception.java:84)
                from java.lang.RuntimeException.<init>(RuntimeException.java:80)
                from java.lang.IllegalStateException.<init>(IllegalStateException.java:75)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNode$LLVMObjectToNativeNode.transitionToNative(LLVMToNativeNode.java:117)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen$LLVMObjectToNativeNodeGen.executeWithTarget(LLVMToNativeNodeGen.java:194)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNode.doOther(LLVMToNativeNode.java:78)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen.executeWithTarget(LLVMToNativeNodeGen.java:46)
                from com.oracle.truffle.llvm.nodes.memory.store.LLVMPointerStoreNode.doAddress(LLVMPointerStoreNode.java:68)
                from com.oracle.truffle.llvm.nodes.memory.store.LLVMPointerStoreNodeGen.execute_generic1(LLVMPointerStoreNodeGen.java:165)
            Caused by:
            Message not supported: TO_NATIVE (UnsupportedMessageException)
                from java.lang.Throwable.<init>(Throwable.java:265)
                from java.lang.Exception.<init>(Exception.java:66)
                from com.oracle.truffle.api.interop.InteropException.<init>(InteropException.java:52)
                from com.oracle.truffle.api.interop.UnsupportedMessageException.<init>(UnsupportedMessageException.java:57)
                from com.oracle.truffle.api.interop.UnsupportedMessageException.raise(UnsupportedMessageException.java:84)
                from org.truffleruby.interop.RubyMessageResolution$ForeignToNativeNode.access(RubyMessageResolution.java:190)
                from org.truffleruby.interop.RubyMessageResolutionForeign$ForeignToNativeSubNode.accessWithTarget(RubyMessageResolutionForeign.java:503)
                from org.truffleruby.interop.RubyMessageResolutionForeignFactory$ForeignToNativeSubNodeGen.executeWithTarget(RubyMessageResolutionForeignFactory.java:585)
                from org.truffleruby.interop.RubyMessageResolutionForeign$ForeignToNativeSubNode$TO_NATIVERootNode.execute(RubyMessageResolutionForeign.java:520)
                from org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callProxy(OptimizedCallTarget.java:289)
            Translated to internal error
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:85:in `internal_raise'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:85:in `raise'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:85:in `block in initialize'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:117:in `resume'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:117:in `run'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/reactor.rb:104:in `async'
          # ./spec/spec_helper.rb:33:in `server_task'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-rspec-1.11.1/lib/async/rspec/reactor.rb:55:in `block (2 levels) in run_example'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:74:in `block in initialize'

     2.2) Failure/Error: server_task = reactor.async do

          RuntimeError:
            Cannot convert LLVMTypedForeignObject+0x0 to LLVMNativePointer (IllegalStateException)
                from java.lang.Throwable.<init>(Throwable.java:287)
                from java.lang.Exception.<init>(Exception.java:84)
                from java.lang.RuntimeException.<init>(RuntimeException.java:80)
                from java.lang.IllegalStateException.<init>(IllegalStateException.java:75)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNode$LLVMObjectToNativeNode.transitionToNative(LLVMToNativeNode.java:117)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen$LLVMObjectToNativeNodeGen.executeWithTarget(LLVMToNativeNodeGen.java:194)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNode.doOther(LLVMToNativeNode.java:78)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen.executeWithTarget(LLVMToNativeNodeGen.java:46)
                from com.oracle.truffle.llvm.nodes.memory.store.LLVMPointerStoreNode.doAddress(LLVMPointerStoreNode.java:68)
                from com.oracle.truffle.llvm.nodes.memory.store.LLVMPointerStoreNodeGen.execute_generic1(LLVMPointerStoreNodeGen.java:165)
            Caused by:
            Message not supported: TO_NATIVE (UnsupportedMessageException)
                from java.lang.Throwable.<init>(Throwable.java:265)
                from java.lang.Exception.<init>(Exception.java:66)
                from com.oracle.truffle.api.interop.InteropException.<init>(InteropException.java:52)
                from com.oracle.truffle.api.interop.UnsupportedMessageException.<init>(UnsupportedMessageException.java:57)
                from com.oracle.truffle.api.interop.UnsupportedMessageException.raise(UnsupportedMessageException.java:84)
                from org.truffleruby.interop.RubyMessageResolution$ForeignToNativeNode.access(RubyMessageResolution.java:190)
                from org.truffleruby.interop.RubyMessageResolutionForeign$ForeignToNativeSubNode.accessWithTarget(RubyMessageResolutionForeign.java:503)
                from org.truffleruby.interop.RubyMessageResolutionForeignFactory$ForeignToNativeSubNodeGen.executeWithTarget(RubyMessageResolutionForeignFactory.java:585)
                from org.truffleruby.interop.RubyMessageResolutionForeign$ForeignToNativeSubNode$TO_NATIVERootNode.execute(RubyMessageResolutionForeign.java:520)
                from org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callProxy(OptimizedCallTarget.java:289)
            Translated to internal error
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:85:in `internal_raise'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:85:in `raise'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:85:in `block in initialize'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:117:in `resume'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:117:in `run'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/reactor.rb:104:in `async'
          # ./spec/spec_helper.rb:33:in `server_task'
          # ./spec/spec_helper.rb:39:in `block (2 levels) in <top (required)>'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-rspec-1.11.1/lib/async/rspec/reactor.rb:55:in `block (2 levels) in run_example'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:74:in `block in initialize'

     2.3) Failure/Error: Truffle::Interop.execute_without_conversion(function, *args)

          RuntimeError:
            Cannot convert LLVMTypedForeignObject+0x0 to LLVMNativePointer (IllegalStateException)
                from java.lang.Throwable.<init>(Throwable.java:287)
                from java.lang.Exception.<init>(Exception.java:84)
                from java.lang.RuntimeException.<init>(RuntimeException.java:80)
                from java.lang.IllegalStateException.<init>(IllegalStateException.java:75)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNode$LLVMObjectToNativeNode.transitionToNative(LLVMToNativeNode.java:117)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen$LLVMObjectToNativeNodeGen.executeWithTarget(LLVMToNativeNodeGen.java:194)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNode.doOther(LLVMToNativeNode.java:78)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen.executeWithTarget(LLVMToNativeNodeGen.java:46)
                from com.oracle.truffle.llvm.nodes.memory.store.LLVMPointerStoreNode.doAddress(LLVMPointerStoreNode.java:68)
                from com.oracle.truffle.llvm.nodes.memory.store.LLVMPointerStoreNodeGen.execute_generic1(LLVMPointerStoreNodeGen.java:165)
            Caused by:
            Message not supported: TO_NATIVE (UnsupportedMessageException)
                from java.lang.Throwable.<init>(Throwable.java:265)
                from java.lang.Exception.<init>(Exception.java:66)
                from com.oracle.truffle.api.interop.InteropException.<init>(InteropException.java:52)
                from com.oracle.truffle.api.interop.UnsupportedMessageException.<init>(UnsupportedMessageException.java:57)
                from com.oracle.truffle.api.interop.UnsupportedMessageException.raise(UnsupportedMessageException.java:84)
                from org.truffleruby.interop.RubyMessageResolution$ForeignToNativeNode.access(RubyMessageResolution.java:190)
                from org.truffleruby.interop.RubyMessageResolutionForeign$ForeignToNativeSubNode.accessWithTarget(RubyMessageResolutionForeign.java:503)
                from org.truffleruby.interop.RubyMessageResolutionForeignFactory$ForeignToNativeSubNodeGen.executeWithTarget(RubyMessageResolutionForeignFactory.java:585)
                from org.truffleruby.interop.RubyMessageResolutionForeign$ForeignToNativeSubNode$TO_NATIVERootNode.execute(RubyMessageResolutionForeign.java:520)
                from org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callProxy(OptimizedCallTarget.java:289)
            Translated to internal error
          # /Users/samuel/.rvm/rubies/truffleruby-1.0.0-rc9/lib/truffle/truffle/cext.rb:221:in `execute_without_conversion'
          # /Users/samuel/.rvm/rubies/truffleruby-1.0.0-rc9/lib/truffle/truffle/cext.rb:221:in `execute_with_mutex'
          # /Users/samuel/.rvm/rubies/truffleruby-1.0.0-rc9/lib/truffle/truffle/cext_ruby.rb:36:in `close'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/debug/selector.rb:73:in `close'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/reactor.rb:208:in `close'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-rspec-1.11.1/lib/async/rspec/reactor.rb:84:in `block (2 levels) in RSpec'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-rspec-1.11.1/lib/async/rspec/leaks.rb:42:in `block (2 levels) in RSpec'

  3) Falcon::Command::Serve can listen on specified port
     Failure/Error: bound_endpoint = Async::Reactor.run do

     RuntimeError:
       Cannot convert LLVMTypedForeignObject+0x0 to LLVMNativePointer (IllegalStateException)
        from java.lang.Throwable.<init>(Throwable.java:287)
        from java.lang.Exception.<init>(Exception.java:84)
        from java.lang.RuntimeException.<init>(RuntimeException.java:80)
        from java.lang.IllegalStateException.<init>(IllegalStateException.java:75)
        from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNode$LLVMObjectToNativeNode.transitionToNative(LLVMToNativeNode.java:117)
        from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen$LLVMObjectToNativeNodeGen.executeWithTarget(LLVMToNativeNodeGen.java:194)
        from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNode.doOther(LLVMToNativeNode.java:78)
        from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen.executeWithTarget(LLVMToNativeNodeGen.java:46)
        from com.oracle.truffle.llvm.nodes.memory.store.LLVMPointerStoreNode.doAddress(LLVMPointerStoreNode.java:68)
        from com.oracle.truffle.llvm.nodes.memory.store.LLVMPointerStoreNodeGen.execute_generic1(LLVMPointerStoreNodeGen.java:165)
       Caused by:
       Message not supported: TO_NATIVE (UnsupportedMessageException)
        from java.lang.Throwable.<init>(Throwable.java:265)
        from java.lang.Exception.<init>(Exception.java:66)
        from com.oracle.truffle.api.interop.InteropException.<init>(InteropException.java:52)
        from com.oracle.truffle.api.interop.UnsupportedMessageException.<init>(UnsupportedMessageException.java:57)
        from com.oracle.truffle.api.interop.UnsupportedMessageException.raise(UnsupportedMessageException.java:84)
        from org.truffleruby.interop.RubyMessageResolution$ForeignToNativeNode.access(RubyMessageResolution.java:190)
        from org.truffleruby.interop.RubyMessageResolutionForeign$ForeignToNativeSubNode.accessWithTarget(RubyMessageResolutionForeign.java:503)
        from org.truffleruby.interop.RubyMessageResolutionForeignFactory$ForeignToNativeSubNodeGen.executeWithTarget(RubyMessageResolutionForeignFactory.java:585)
        from org.truffleruby.interop.RubyMessageResolutionForeign$ForeignToNativeSubNode$TO_NATIVERootNode.execute(RubyMessageResolutionForeign.java:520)
        from org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callProxy(OptimizedCallTarget.java:289)
       Translated to internal error
     # /Users/samuel/.rvm/rubies/truffleruby-1.0.0-rc9/lib/truffle/truffle/cext.rb:221:in `execute_without_conversion'
     # /Users/samuel/.rvm/rubies/truffleruby-1.0.0-rc9/lib/truffle/truffle/cext.rb:221:in `execute_with_mutex'
     # /Users/samuel/.rvm/rubies/truffleruby-1.0.0-rc9/lib/truffle/truffle/cext_ruby.rb:36:in `close'
     # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/reactor.rb:208:in `close'
     # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/reactor.rb:56:in `run'
     # ./lib/falcon/command/serve.rb:97:in `run'
     # ./spec/falcon/command/serve_spec.rb:31:in `block (2 levels) in <top (required)>'

  4) Falcon::Proxy can select client based on authority
     Got 1 failure and 1 other error:

     4.1) Failure/Error: expect(response).to_not be_failure
            expected `#<Async::HTTP::Response:0x27dc @body=nil, @headers={"content-type"=>"text/plain"}, @reason=nil, @status=502, @version=nil>.failure?` to return false, got true
          # ./spec/falcon/proxy_spec.rb:46:in `block (2 levels) in <top (required)>'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-rspec-1.11.1/lib/async/rspec/reactor.rb:55:in `block (2 levels) in run_example'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:74:in `block in initialize'

     4.2) Failure/Error: Truffle::Interop.execute_without_conversion(function, *args)

          RuntimeError:
            Cannot convert LLVMTypedForeignObject+0x0 to LLVMNativePointer (IllegalStateException)
                from java.lang.Throwable.<init>(Throwable.java:287)
                from java.lang.Exception.<init>(Exception.java:84)
                from java.lang.RuntimeException.<init>(RuntimeException.java:80)
                from java.lang.IllegalStateException.<init>(IllegalStateException.java:75)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNode$LLVMObjectToNativeNode.transitionToNative(LLVMToNativeNode.java:117)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen$LLVMObjectToNativeNodeGen.executeWithTarget(LLVMToNativeNodeGen.java:194)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNode.doOther(LLVMToNativeNode.java:78)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen.executeWithTarget(LLVMToNativeNodeGen.java:46)
                from com.oracle.truffle.llvm.nodes.memory.store.LLVMPointerStoreNode.doAddress(LLVMPointerStoreNode.java:68)
                from com.oracle.truffle.llvm.nodes.memory.store.LLVMPointerStoreNodeGen.execute_generic1(LLVMPointerStoreNodeGen.java:165)
            Caused by:
            Message not supported: TO_NATIVE (UnsupportedMessageException)
                from java.lang.Throwable.<init>(Throwable.java:265)
                from java.lang.Exception.<init>(Exception.java:66)
                from com.oracle.truffle.api.interop.InteropException.<init>(InteropException.java:52)
                from com.oracle.truffle.api.interop.UnsupportedMessageException.<init>(UnsupportedMessageException.java:57)
                from com.oracle.truffle.api.interop.UnsupportedMessageException.raise(UnsupportedMessageException.java:84)
                from org.truffleruby.interop.RubyMessageResolution$ForeignToNativeNode.access(RubyMessageResolution.java:190)
                from org.truffleruby.interop.RubyMessageResolutionForeign$ForeignToNativeSubNode.accessWithTarget(RubyMessageResolutionForeign.java:503)
                from org.truffleruby.interop.RubyMessageResolutionForeignFactory$ForeignToNativeSubNodeGen.executeWithTarget(RubyMessageResolutionForeignFactory.java:585)
                from org.truffleruby.interop.RubyMessageResolutionForeign$ForeignToNativeSubNode$TO_NATIVERootNode.execute(RubyMessageResolutionForeign.java:520)
                from org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callProxy(OptimizedCallTarget.java:289)
            Translated to internal error
          # /Users/samuel/.rvm/rubies/truffleruby-1.0.0-rc9/lib/truffle/truffle/cext.rb:221:in `execute_without_conversion'
          # /Users/samuel/.rvm/rubies/truffleruby-1.0.0-rc9/lib/truffle/truffle/cext.rb:221:in `execute_with_mutex'
          # /Users/samuel/.rvm/rubies/truffleruby-1.0.0-rc9/lib/truffle/truffle/cext_ruby.rb:36:in `close'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/debug/selector.rb:73:in `close'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/reactor.rb:208:in `close'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-rspec-1.11.1/lib/async/rspec/reactor.rb:84:in `block (2 levels) in RSpec'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-rspec-1.11.1/lib/async/rspec/leaks.rb:42:in `block (2 levels) in RSpec'

  5) Falcon::Proxy defers if no host is available
     Failure/Error: Truffle::Interop.execute_without_conversion(function, *args)

     RuntimeError:
       Cannot convert LLVMTypedForeignObject+0x0 to LLVMNativePointer (IllegalStateException)
        from java.lang.Throwable.<init>(Throwable.java:287)
        from java.lang.Exception.<init>(Exception.java:84)
        from java.lang.RuntimeException.<init>(RuntimeException.java:80)
        from java.lang.IllegalStateException.<init>(IllegalStateException.java:75)
        from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNode$LLVMObjectToNativeNode.transitionToNative(LLVMToNativeNode.java:117)
        from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen$LLVMObjectToNativeNodeGen.executeWithTarget(LLVMToNativeNodeGen.java:194)
        from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNode.doOther(LLVMToNativeNode.java:78)
        from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen.executeWithTarget(LLVMToNativeNodeGen.java:46)
        from com.oracle.truffle.llvm.nodes.memory.store.LLVMPointerStoreNode.doAddress(LLVMPointerStoreNode.java:68)
        from com.oracle.truffle.llvm.nodes.memory.store.LLVMPointerStoreNodeGen.execute_generic1(LLVMPointerStoreNodeGen.java:165)
       Caused by:
       Message not supported: TO_NATIVE (UnsupportedMessageException)
        from java.lang.Throwable.<init>(Throwable.java:265)
        from java.lang.Exception.<init>(Exception.java:66)
        from com.oracle.truffle.api.interop.InteropException.<init>(InteropException.java:52)
        from com.oracle.truffle.api.interop.UnsupportedMessageException.<init>(UnsupportedMessageException.java:57)
        from com.oracle.truffle.api.interop.UnsupportedMessageException.raise(UnsupportedMessageException.java:84)
        from org.truffleruby.interop.RubyMessageResolution$ForeignToNativeNode.access(RubyMessageResolution.java:190)
        from org.truffleruby.interop.RubyMessageResolutionForeign$ForeignToNativeSubNode.accessWithTarget(RubyMessageResolutionForeign.java:503)
        from org.truffleruby.interop.RubyMessageResolutionForeignFactory$ForeignToNativeSubNodeGen.executeWithTarget(RubyMessageResolutionForeignFactory.java:585)
        from org.truffleruby.interop.RubyMessageResolutionForeign$ForeignToNativeSubNode$TO_NATIVERootNode.execute(RubyMessageResolutionForeign.java:520)
        from org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callProxy(OptimizedCallTarget.java:289)
       Translated to internal error
     # /Users/samuel/.rvm/rubies/truffleruby-1.0.0-rc9/lib/truffle/truffle/cext.rb:221:in `execute_without_conversion'
     # /Users/samuel/.rvm/rubies/truffleruby-1.0.0-rc9/lib/truffle/truffle/cext.rb:221:in `execute_with_mutex'
     # /Users/samuel/.rvm/rubies/truffleruby-1.0.0-rc9/lib/truffle/truffle/cext_ruby.rb:36:in `close'
     # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/debug/selector.rb:73:in `close'
     # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/reactor.rb:208:in `close'
     # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-rspec-1.11.1/lib/async/rspec/reactor.rb:84:in `block (2 levels) in RSpec'
     # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-rspec-1.11.1/lib/async/rspec/leaks.rb:42:in `block (2 levels) in RSpec'

  6) Falcon::Server http client can POST application/x-www-form-urlencoded
     Got 0 failures and 3 other errors:

     6.1) Failure/Error: server_task = reactor.async do

          RuntimeError:
            Cannot convert LLVMTypedForeignObject+0x0 to LLVMNativePointer (IllegalStateException)
                from java.lang.Throwable.<init>(Throwable.java:287)
                from java.lang.Exception.<init>(Exception.java:84)
                from java.lang.RuntimeException.<init>(RuntimeException.java:80)
                from java.lang.IllegalStateException.<init>(IllegalStateException.java:75)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNode$LLVMObjectToNativeNode.transitionToNative(LLVMToNativeNode.java:117)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen$LLVMObjectToNativeNodeGen.executeWithTarget(LLVMToNativeNodeGen.java:194)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNode.doOther(LLVMToNativeNode.java:78)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen.executeWithTarget(LLVMToNativeNodeGen.java:46)
                from com.oracle.truffle.llvm.nodes.memory.store.LLVMPointerStoreNode.doAddress(LLVMPointerStoreNode.java:68)
                from com.oracle.truffle.llvm.nodes.memory.store.LLVMPointerStoreNodeGen.execute_generic1(LLVMPointerStoreNodeGen.java:165)
            Caused by:
            Message not supported: TO_NATIVE (UnsupportedMessageException)
                from java.lang.Throwable.<init>(Throwable.java:265)
                from java.lang.Exception.<init>(Exception.java:66)
                from com.oracle.truffle.api.interop.InteropException.<init>(InteropException.java:52)
                from com.oracle.truffle.api.interop.UnsupportedMessageException.<init>(UnsupportedMessageException.java:57)
                from com.oracle.truffle.api.interop.UnsupportedMessageException.raise(UnsupportedMessageException.java:84)
                from org.truffleruby.interop.RubyMessageResolution$ForeignToNativeNode.access(RubyMessageResolution.java:190)
                from org.truffleruby.interop.RubyMessageResolutionForeign$ForeignToNativeSubNode.accessWithTarget(RubyMessageResolutionForeign.java:503)
                from org.truffleruby.interop.RubyMessageResolutionForeignFactory$ForeignToNativeSubNodeGen.executeWithTarget(RubyMessageResolutionForeignFactory.java:585)
                from org.truffleruby.interop.RubyMessageResolutionForeign$ForeignToNativeSubNode$TO_NATIVERootNode.execute(RubyMessageResolutionForeign.java:520)
                from org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callProxy(OptimizedCallTarget.java:289)
            Translated to internal error
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:85:in `internal_raise'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:85:in `raise'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:85:in `block in initialize'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:117:in `resume'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:117:in `run'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/reactor.rb:104:in `async'
          # ./spec/spec_helper.rb:33:in `server_task'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-rspec-1.11.1/lib/async/rspec/reactor.rb:55:in `block (2 levels) in run_example'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:74:in `block in initialize'

     6.2) Failure/Error: server_task = reactor.async do

          RuntimeError:
            Cannot convert LLVMTypedForeignObject+0x0 to LLVMNativePointer (IllegalStateException)
                from java.lang.Throwable.<init>(Throwable.java:287)
                from java.lang.Exception.<init>(Exception.java:84)
                from java.lang.RuntimeException.<init>(RuntimeException.java:80)
                from java.lang.IllegalStateException.<init>(IllegalStateException.java:75)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNode$LLVMObjectToNativeNode.transitionToNative(LLVMToNativeNode.java:117)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen$LLVMObjectToNativeNodeGen.executeWithTarget(LLVMToNativeNodeGen.java:194)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNode.doOther(LLVMToNativeNode.java:78)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen.executeWithTarget(LLVMToNativeNodeGen.java:46)
                from com.oracle.truffle.llvm.nodes.memory.store.LLVMPointerStoreNode.doAddress(LLVMPointerStoreNode.java:68)
                from com.oracle.truffle.llvm.nodes.memory.store.LLVMPointerStoreNodeGen.execute_generic1(LLVMPointerStoreNodeGen.java:165)
            Caused by:
            Message not supported: TO_NATIVE (UnsupportedMessageException)
                from java.lang.Throwable.<init>(Throwable.java:265)
                from java.lang.Exception.<init>(Exception.java:66)
                from com.oracle.truffle.api.interop.InteropException.<init>(InteropException.java:52)
                from com.oracle.truffle.api.interop.UnsupportedMessageException.<init>(UnsupportedMessageException.java:57)
                from com.oracle.truffle.api.interop.UnsupportedMessageException.raise(UnsupportedMessageException.java:84)
                from org.truffleruby.interop.RubyMessageResolution$ForeignToNativeNode.access(RubyMessageResolution.java:190)
                from org.truffleruby.interop.RubyMessageResolutionForeign$ForeignToNativeSubNode.accessWithTarget(RubyMessageResolutionForeign.java:503)
                from org.truffleruby.interop.RubyMessageResolutionForeignFactory$ForeignToNativeSubNodeGen.executeWithTarget(RubyMessageResolutionForeignFactory.java:585)
                from org.truffleruby.interop.RubyMessageResolutionForeign$ForeignToNativeSubNode$TO_NATIVERootNode.execute(RubyMessageResolutionForeign.java:520)
                from org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callProxy(OptimizedCallTarget.java:289)
            Translated to internal error
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:85:in `internal_raise'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:85:in `raise'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:85:in `block in initialize'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:117:in `resume'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:117:in `run'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/reactor.rb:104:in `async'
          # ./spec/spec_helper.rb:33:in `server_task'
          # ./spec/spec_helper.rb:39:in `block (2 levels) in <top (required)>'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-rspec-1.11.1/lib/async/rspec/reactor.rb:55:in `block (2 levels) in run_example'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:74:in `block in initialize'

     6.3) Failure/Error: Truffle::Interop.execute_without_conversion(function, *args)

          RuntimeError:
            Cannot convert LLVMTypedForeignObject+0x0 to LLVMNativePointer (IllegalStateException)
                from java.lang.Throwable.<init>(Throwable.java:287)
                from java.lang.Exception.<init>(Exception.java:84)
                from java.lang.RuntimeException.<init>(RuntimeException.java:80)
                from java.lang.IllegalStateException.<init>(IllegalStateException.java:75)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNode$LLVMObjectToNativeNode.transitionToNative(LLVMToNativeNode.java:117)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen$LLVMObjectToNativeNodeGen.executeWithTarget(LLVMToNativeNodeGen.java:194)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNode.doOther(LLVMToNativeNode.java:78)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen.executeWithTarget(LLVMToNativeNodeGen.java:46)
                from com.oracle.truffle.llvm.nodes.memory.store.LLVMPointerStoreNode.doAddress(LLVMPointerStoreNode.java:68)
                from com.oracle.truffle.llvm.nodes.memory.store.LLVMPointerStoreNodeGen.execute_generic1(LLVMPointerStoreNodeGen.java:165)
            Caused by:
            Message not supported: TO_NATIVE (UnsupportedMessageException)
                from java.lang.Throwable.<init>(Throwable.java:265)
                from java.lang.Exception.<init>(Exception.java:66)
                from com.oracle.truffle.api.interop.InteropException.<init>(InteropException.java:52)
                from com.oracle.truffle.api.interop.UnsupportedMessageException.<init>(UnsupportedMessageException.java:57)
                from com.oracle.truffle.api.interop.UnsupportedMessageException.raise(UnsupportedMessageException.java:84)
                from org.truffleruby.interop.RubyMessageResolution$ForeignToNativeNode.access(RubyMessageResolution.java:190)
                from org.truffleruby.interop.RubyMessageResolutionForeign$ForeignToNativeSubNode.accessWithTarget(RubyMessageResolutionForeign.java:503)
                from org.truffleruby.interop.RubyMessageResolutionForeignFactory$ForeignToNativeSubNodeGen.executeWithTarget(RubyMessageResolutionForeignFactory.java:585)
                from org.truffleruby.interop.RubyMessageResolutionForeign$ForeignToNativeSubNode$TO_NATIVERootNode.execute(RubyMessageResolutionForeign.java:520)
                from org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callProxy(OptimizedCallTarget.java:289)
            Translated to internal error
          # /Users/samuel/.rvm/rubies/truffleruby-1.0.0-rc9/lib/truffle/truffle/cext.rb:221:in `execute_without_conversion'
          # /Users/samuel/.rvm/rubies/truffleruby-1.0.0-rc9/lib/truffle/truffle/cext.rb:221:in `execute_with_mutex'
          # /Users/samuel/.rvm/rubies/truffleruby-1.0.0-rc9/lib/truffle/truffle/cext_ruby.rb:36:in `close'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/debug/selector.rb:73:in `close'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/reactor.rb:208:in `close'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-rspec-1.11.1/lib/async/rspec/reactor.rb:84:in `block (2 levels) in RSpec'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-rspec-1.11.1/lib/async/rspec/leaks.rb:42:in `block (2 levels) in RSpec'

  7) Falcon::Server http client can POST multipart/form-data
     Got 0 failures and 3 other errors:

     7.1) Failure/Error: server_task = reactor.async do

          RuntimeError:
            Cannot convert LLVMTypedForeignObject+0x0 to LLVMNativePointer (IllegalStateException)
                from java.lang.Throwable.<init>(Throwable.java:287)
                from java.lang.Exception.<init>(Exception.java:84)
                from java.lang.RuntimeException.<init>(RuntimeException.java:80)
                from java.lang.IllegalStateException.<init>(IllegalStateException.java:75)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNode$LLVMObjectToNativeNode.transitionToNative(LLVMToNativeNode.java:117)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen$LLVMObjectToNativeNodeGen.executeWithTarget(LLVMToNativeNodeGen.java:194)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNode.doOther(LLVMToNativeNode.java:78)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen.executeWithTarget(LLVMToNativeNodeGen.java:46)
                from com.oracle.truffle.llvm.nodes.memory.store.LLVMPointerStoreNode.doAddress(LLVMPointerStoreNode.java:68)
                from com.oracle.truffle.llvm.nodes.memory.store.LLVMPointerStoreNodeGen.execute_generic1(LLVMPointerStoreNodeGen.java:165)
            Caused by:
            Message not supported: TO_NATIVE (UnsupportedMessageException)
                from java.lang.Throwable.<init>(Throwable.java:265)
                from java.lang.Exception.<init>(Exception.java:66)
                from com.oracle.truffle.api.interop.InteropException.<init>(InteropException.java:52)
                from com.oracle.truffle.api.interop.UnsupportedMessageException.<init>(UnsupportedMessageException.java:57)
                from com.oracle.truffle.api.interop.UnsupportedMessageException.raise(UnsupportedMessageException.java:84)
                from org.truffleruby.interop.RubyMessageResolution$ForeignToNativeNode.access(RubyMessageResolution.java:190)
                from org.truffleruby.interop.RubyMessageResolutionForeign$ForeignToNativeSubNode.accessWithTarget(RubyMessageResolutionForeign.java:503)
                from org.truffleruby.interop.RubyMessageResolutionForeignFactory$ForeignToNativeSubNodeGen.executeWithTarget(RubyMessageResolutionForeignFactory.java:585)
                from org.truffleruby.interop.RubyMessageResolutionForeign$ForeignToNativeSubNode$TO_NATIVERootNode.execute(RubyMessageResolutionForeign.java:520)
                from org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callProxy(OptimizedCallTarget.java:289)
            Translated to internal error
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:85:in `internal_raise'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:85:in `raise'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:85:in `block in initialize'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:117:in `resume'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:117:in `run'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/reactor.rb:104:in `async'
          # ./spec/spec_helper.rb:33:in `server_task'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-rspec-1.11.1/lib/async/rspec/reactor.rb:55:in `block (2 levels) in run_example'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:74:in `block in initialize'

     7.2) Failure/Error: server_task = reactor.async do

          RuntimeError:
            Cannot convert LLVMTypedForeignObject+0x0 to LLVMNativePointer (IllegalStateException)
                from java.lang.Throwable.<init>(Throwable.java:287)
                from java.lang.Exception.<init>(Exception.java:84)
                from java.lang.RuntimeException.<init>(RuntimeException.java:80)
                from java.lang.IllegalStateException.<init>(IllegalStateException.java:75)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNode$LLVMObjectToNativeNode.transitionToNative(LLVMToNativeNode.java:117)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen$LLVMObjectToNativeNodeGen.executeWithTarget(LLVMToNativeNodeGen.java:194)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNode.doOther(LLVMToNativeNode.java:78)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen.executeWithTarget(LLVMToNativeNodeGen.java:46)
                from com.oracle.truffle.llvm.nodes.memory.store.LLVMPointerStoreNode.doAddress(LLVMPointerStoreNode.java:68)
                from com.oracle.truffle.llvm.nodes.memory.store.LLVMPointerStoreNodeGen.execute_generic1(LLVMPointerStoreNodeGen.java:165)
            Caused by:
            Message not supported: TO_NATIVE (UnsupportedMessageException)
                from java.lang.Throwable.<init>(Throwable.java:265)
                from java.lang.Exception.<init>(Exception.java:66)
                from com.oracle.truffle.api.interop.InteropException.<init>(InteropException.java:52)
                from com.oracle.truffle.api.interop.UnsupportedMessageException.<init>(UnsupportedMessageException.java:57)
                from com.oracle.truffle.api.interop.UnsupportedMessageException.raise(UnsupportedMessageException.java:84)
                from org.truffleruby.interop.RubyMessageResolution$ForeignToNativeNode.access(RubyMessageResolution.java:190)
                from org.truffleruby.interop.RubyMessageResolutionForeign$ForeignToNativeSubNode.accessWithTarget(RubyMessageResolutionForeign.java:503)
                from org.truffleruby.interop.RubyMessageResolutionForeignFactory$ForeignToNativeSubNodeGen.executeWithTarget(RubyMessageResolutionForeignFactory.java:585)
                from org.truffleruby.interop.RubyMessageResolutionForeign$ForeignToNativeSubNode$TO_NATIVERootNode.execute(RubyMessageResolutionForeign.java:520)
                from org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callProxy(OptimizedCallTarget.java:289)
            Translated to internal error
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:85:in `internal_raise'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:85:in `raise'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:85:in `block in initialize'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:117:in `resume'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:117:in `run'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/reactor.rb:104:in `async'
          # ./spec/spec_helper.rb:33:in `server_task'
          # ./spec/spec_helper.rb:39:in `block (2 levels) in <top (required)>'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-rspec-1.11.1/lib/async/rspec/reactor.rb:55:in `block (2 levels) in run_example'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:74:in `block in initialize'

     7.3) Failure/Error: Truffle::Interop.execute_without_conversion(function, *args)

          RuntimeError:
            Cannot convert LLVMTypedForeignObject+0x0 to LLVMNativePointer (IllegalStateException)
                from java.lang.Throwable.<init>(Throwable.java:287)
                from java.lang.Exception.<init>(Exception.java:84)
                from java.lang.RuntimeException.<init>(RuntimeException.java:80)
                from java.lang.IllegalStateException.<init>(IllegalStateException.java:75)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNode$LLVMObjectToNativeNode.transitionToNative(LLVMToNativeNode.java:117)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen$LLVMObjectToNativeNodeGen.executeWithTarget(LLVMToNativeNodeGen.java:194)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNode.doOther(LLVMToNativeNode.java:78)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen.executeWithTarget(LLVMToNativeNodeGen.java:46)
                from com.oracle.truffle.llvm.nodes.memory.store.LLVMPointerStoreNode.doAddress(LLVMPointerStoreNode.java:68)
                from com.oracle.truffle.llvm.nodes.memory.store.LLVMPointerStoreNodeGen.execute_generic1(LLVMPointerStoreNodeGen.java:165)
            Caused by:
            Message not supported: TO_NATIVE (UnsupportedMessageException)
                from java.lang.Throwable.<init>(Throwable.java:265)
                from java.lang.Exception.<init>(Exception.java:66)
                from com.oracle.truffle.api.interop.InteropException.<init>(InteropException.java:52)
                from com.oracle.truffle.api.interop.UnsupportedMessageException.<init>(UnsupportedMessageException.java:57)
                from com.oracle.truffle.api.interop.UnsupportedMessageException.raise(UnsupportedMessageException.java:84)
                from org.truffleruby.interop.RubyMessageResolution$ForeignToNativeNode.access(RubyMessageResolution.java:190)
                from org.truffleruby.interop.RubyMessageResolutionForeign$ForeignToNativeSubNode.accessWithTarget(RubyMessageResolutionForeign.java:503)
                from org.truffleruby.interop.RubyMessageResolutionForeignFactory$ForeignToNativeSubNodeGen.executeWithTarget(RubyMessageResolutionForeignFactory.java:585)
                from org.truffleruby.interop.RubyMessageResolutionForeign$ForeignToNativeSubNode$TO_NATIVERootNode.execute(RubyMessageResolutionForeign.java:520)
                from org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callProxy(OptimizedCallTarget.java:289)
            Translated to internal error
          # /Users/samuel/.rvm/rubies/truffleruby-1.0.0-rc9/lib/truffle/truffle/cext.rb:221:in `execute_without_conversion'
          # /Users/samuel/.rvm/rubies/truffleruby-1.0.0-rc9/lib/truffle/truffle/cext.rb:221:in `execute_with_mutex'
          # /Users/samuel/.rvm/rubies/truffleruby-1.0.0-rc9/lib/truffle/truffle/cext_ruby.rb:36:in `close'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/debug/selector.rb:73:in `close'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/reactor.rb:208:in `close'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-rspec-1.11.1/lib/async/rspec/reactor.rb:84:in `block (2 levels) in RSpec'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-rspec-1.11.1/lib/async/rspec/leaks.rb:42:in `block (2 levels) in RSpec'

  8) Falcon::Server http client GET / generates successful response
     Got 0 failures and 3 other errors:

     8.1) Failure/Error: server_task = reactor.async do

          RuntimeError:
            Cannot convert LLVMTypedForeignObject+0x0 to LLVMNativePointer (IllegalStateException)
                from java.lang.Throwable.<init>(Throwable.java:287)
                from java.lang.Exception.<init>(Exception.java:84)
                from java.lang.RuntimeException.<init>(RuntimeException.java:80)
                from java.lang.IllegalStateException.<init>(IllegalStateException.java:75)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNode$LLVMObjectToNativeNode.transitionToNative(LLVMToNativeNode.java:117)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen$LLVMObjectToNativeNodeGen.executeWithTarget(LLVMToNativeNodeGen.java:194)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNode.doOther(LLVMToNativeNode.java:78)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen.executeWithTarget(LLVMToNativeNodeGen.java:46)
                from com.oracle.truffle.llvm.nodes.memory.store.LLVMPointerStoreNode.doAddress(LLVMPointerStoreNode.java:68)
                from com.oracle.truffle.llvm.nodes.memory.store.LLVMPointerStoreNodeGen.execute_generic1(LLVMPointerStoreNodeGen.java:165)
            Caused by:
            Message not supported: TO_NATIVE (UnsupportedMessageException)
                from java.lang.Throwable.<init>(Throwable.java:265)
                from java.lang.Exception.<init>(Exception.java:66)
                from com.oracle.truffle.api.interop.InteropException.<init>(InteropException.java:52)
                from com.oracle.truffle.api.interop.UnsupportedMessageException.<init>(UnsupportedMessageException.java:57)
                from com.oracle.truffle.api.interop.UnsupportedMessageException.raise(UnsupportedMessageException.java:84)
                from org.truffleruby.interop.RubyMessageResolution$ForeignToNativeNode.access(RubyMessageResolution.java:190)
                from org.truffleruby.interop.RubyMessageResolutionForeign$ForeignToNativeSubNode.accessWithTarget(RubyMessageResolutionForeign.java:503)
                from org.truffleruby.interop.RubyMessageResolutionForeignFactory$ForeignToNativeSubNodeGen.executeWithTarget(RubyMessageResolutionForeignFactory.java:585)
                from org.truffleruby.interop.RubyMessageResolutionForeign$ForeignToNativeSubNode$TO_NATIVERootNode.execute(RubyMessageResolutionForeign.java:520)
                from org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callProxy(OptimizedCallTarget.java:289)
            Translated to internal error
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:85:in `internal_raise'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:85:in `raise'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:85:in `block in initialize'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:117:in `resume'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:117:in `run'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/reactor.rb:104:in `async'
          # ./spec/spec_helper.rb:33:in `server_task'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-rspec-1.11.1/lib/async/rspec/reactor.rb:55:in `block (2 levels) in run_example'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:74:in `block in initialize'

     8.2) Failure/Error: server_task = reactor.async do

          RuntimeError:
            Cannot convert LLVMTypedForeignObject+0x0 to LLVMNativePointer (IllegalStateException)
                from java.lang.Throwable.<init>(Throwable.java:287)
                from java.lang.Exception.<init>(Exception.java:84)
                from java.lang.RuntimeException.<init>(RuntimeException.java:80)
                from java.lang.IllegalStateException.<init>(IllegalStateException.java:75)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNode$LLVMObjectToNativeNode.transitionToNative(LLVMToNativeNode.java:117)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen$LLVMObjectToNativeNodeGen.executeWithTarget(LLVMToNativeNodeGen.java:194)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNode.doOther(LLVMToNativeNode.java:78)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen.executeWithTarget(LLVMToNativeNodeGen.java:46)
                from com.oracle.truffle.llvm.nodes.memory.store.LLVMPointerStoreNode.doAddress(LLVMPointerStoreNode.java:68)
                from com.oracle.truffle.llvm.nodes.memory.store.LLVMPointerStoreNodeGen.execute_generic1(LLVMPointerStoreNodeGen.java:165)
            Caused by:
            Message not supported: TO_NATIVE (UnsupportedMessageException)
                from java.lang.Throwable.<init>(Throwable.java:265)
                from java.lang.Exception.<init>(Exception.java:66)
                from com.oracle.truffle.api.interop.InteropException.<init>(InteropException.java:52)
                from com.oracle.truffle.api.interop.UnsupportedMessageException.<init>(UnsupportedMessageException.java:57)
                from com.oracle.truffle.api.interop.UnsupportedMessageException.raise(UnsupportedMessageException.java:84)
                from org.truffleruby.interop.RubyMessageResolution$ForeignToNativeNode.access(RubyMessageResolution.java:190)
                from org.truffleruby.interop.RubyMessageResolutionForeign$ForeignToNativeSubNode.accessWithTarget(RubyMessageResolutionForeign.java:503)
                from org.truffleruby.interop.RubyMessageResolutionForeignFactory$ForeignToNativeSubNodeGen.executeWithTarget(RubyMessageResolutionForeignFactory.java:585)
                from org.truffleruby.interop.RubyMessageResolutionForeign$ForeignToNativeSubNode$TO_NATIVERootNode.execute(RubyMessageResolutionForeign.java:520)
                from org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callProxy(OptimizedCallTarget.java:289)
            Translated to internal error
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:85:in `internal_raise'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:85:in `raise'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:85:in `block in initialize'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:117:in `resume'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:117:in `run'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/reactor.rb:104:in `async'
          # ./spec/spec_helper.rb:33:in `server_task'
          # ./spec/spec_helper.rb:39:in `block (2 levels) in <top (required)>'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-rspec-1.11.1/lib/async/rspec/reactor.rb:55:in `block (2 levels) in run_example'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:74:in `block in initialize'

     8.3) Failure/Error: Truffle::Interop.execute_without_conversion(function, *args)

          RuntimeError:
            Cannot convert LLVMTypedForeignObject+0x0 to LLVMNativePointer (IllegalStateException)
                from java.lang.Throwable.<init>(Throwable.java:287)
                from java.lang.Exception.<init>(Exception.java:84)
                from java.lang.RuntimeException.<init>(RuntimeException.java:80)
                from java.lang.IllegalStateException.<init>(IllegalStateException.java:75)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNode$LLVMObjectToNativeNode.transitionToNative(LLVMToNativeNode.java:117)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen$LLVMObjectToNativeNodeGen.executeWithTarget(LLVMToNativeNodeGen.java:194)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNode.doOther(LLVMToNativeNode.java:78)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen.executeWithTarget(LLVMToNativeNodeGen.java:46)
                from com.oracle.truffle.llvm.nodes.memory.store.LLVMPointerStoreNode.doAddress(LLVMPointerStoreNode.java:68)
                from com.oracle.truffle.llvm.nodes.memory.store.LLVMPointerStoreNodeGen.execute_generic1(LLVMPointerStoreNodeGen.java:165)
            Caused by:
            Message not supported: TO_NATIVE (UnsupportedMessageException)
                from java.lang.Throwable.<init>(Throwable.java:265)
                from java.lang.Exception.<init>(Exception.java:66)
                from com.oracle.truffle.api.interop.InteropException.<init>(InteropException.java:52)
                from com.oracle.truffle.api.interop.UnsupportedMessageException.<init>(UnsupportedMessageException.java:57)
                from com.oracle.truffle.api.interop.UnsupportedMessageException.raise(UnsupportedMessageException.java:84)
                from org.truffleruby.interop.RubyMessageResolution$ForeignToNativeNode.access(RubyMessageResolution.java:190)
                from org.truffleruby.interop.RubyMessageResolutionForeign$ForeignToNativeSubNode.accessWithTarget(RubyMessageResolutionForeign.java:503)
                from org.truffleruby.interop.RubyMessageResolutionForeignFactory$ForeignToNativeSubNodeGen.executeWithTarget(RubyMessageResolutionForeignFactory.java:585)
                from org.truffleruby.interop.RubyMessageResolutionForeign$ForeignToNativeSubNode$TO_NATIVERootNode.execute(RubyMessageResolutionForeign.java:520)
                from org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callProxy(OptimizedCallTarget.java:289)
            Translated to internal error
          # /Users/samuel/.rvm/rubies/truffleruby-1.0.0-rc9/lib/truffle/truffle/cext.rb:221:in `execute_without_conversion'
          # /Users/samuel/.rvm/rubies/truffleruby-1.0.0-rc9/lib/truffle/truffle/cext.rb:221:in `execute_with_mutex'
          # /Users/samuel/.rvm/rubies/truffleruby-1.0.0-rc9/lib/truffle/truffle/cext_ruby.rb:36:in `close'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/debug/selector.rb:73:in `close'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/reactor.rb:208:in `close'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-rspec-1.11.1/lib/async/rspec/reactor.rb:84:in `block (2 levels) in RSpec'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-rspec-1.11.1/lib/async/rspec/leaks.rb:42:in `block (2 levels) in RSpec'

  9) Falcon::Server http client GET / generates server and date headers
     Got 0 failures and 3 other errors:

     9.1) Failure/Error: server_task = reactor.async do

          RuntimeError:
            Cannot convert LLVMTypedForeignObject+0x0 to LLVMNativePointer (IllegalStateException)
                from java.lang.Throwable.<init>(Throwable.java:287)
                from java.lang.Exception.<init>(Exception.java:84)
                from java.lang.RuntimeException.<init>(RuntimeException.java:80)
                from java.lang.IllegalStateException.<init>(IllegalStateException.java:75)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNode$LLVMObjectToNativeNode.transitionToNative(LLVMToNativeNode.java:117)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen$LLVMObjectToNativeNodeGen.executeWithTarget(LLVMToNativeNodeGen.java:194)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNode.doOther(LLVMToNativeNode.java:78)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen.executeWithTarget(LLVMToNativeNodeGen.java:46)
                from com.oracle.truffle.llvm.nodes.memory.store.LLVMPointerStoreNode.doAddress(LLVMPointerStoreNode.java:68)
                from com.oracle.truffle.llvm.nodes.memory.store.LLVMPointerStoreNodeGen.execute_generic1(LLVMPointerStoreNodeGen.java:165)
            Caused by:
            Message not supported: TO_NATIVE (UnsupportedMessageException)
                from java.lang.Throwable.<init>(Throwable.java:265)
                from java.lang.Exception.<init>(Exception.java:66)
                from com.oracle.truffle.api.interop.InteropException.<init>(InteropException.java:52)
                from com.oracle.truffle.api.interop.UnsupportedMessageException.<init>(UnsupportedMessageException.java:57)
                from com.oracle.truffle.api.interop.UnsupportedMessageException.raise(UnsupportedMessageException.java:84)
                from org.truffleruby.interop.RubyMessageResolution$ForeignToNativeNode.access(RubyMessageResolution.java:190)
                from org.truffleruby.interop.RubyMessageResolutionForeign$ForeignToNativeSubNode.accessWithTarget(RubyMessageResolutionForeign.java:503)
                from org.truffleruby.interop.RubyMessageResolutionForeignFactory$ForeignToNativeSubNodeGen.executeWithTarget(RubyMessageResolutionForeignFactory.java:585)
                from org.truffleruby.interop.RubyMessageResolutionForeign$ForeignToNativeSubNode$TO_NATIVERootNode.execute(RubyMessageResolutionForeign.java:520)
                from org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callProxy(OptimizedCallTarget.java:289)
            Translated to internal error
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:85:in `internal_raise'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:85:in `raise'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:85:in `block in initialize'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:117:in `resume'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:117:in `run'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/reactor.rb:104:in `async'
          # ./spec/spec_helper.rb:33:in `server_task'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-rspec-1.11.1/lib/async/rspec/reactor.rb:55:in `block (2 levels) in run_example'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:74:in `block in initialize'

     9.2) Failure/Error: server_task = reactor.async do

          RuntimeError:
            Cannot convert LLVMTypedForeignObject+0x0 to LLVMNativePointer (IllegalStateException)
                from java.lang.Throwable.<init>(Throwable.java:287)
                from java.lang.Exception.<init>(Exception.java:84)
                from java.lang.RuntimeException.<init>(RuntimeException.java:80)
                from java.lang.IllegalStateException.<init>(IllegalStateException.java:75)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNode$LLVMObjectToNativeNode.transitionToNative(LLVMToNativeNode.java:117)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen$LLVMObjectToNativeNodeGen.executeWithTarget(LLVMToNativeNodeGen.java:194)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNode.doOther(LLVMToNativeNode.java:78)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen.executeWithTarget(LLVMToNativeNodeGen.java:46)
                from com.oracle.truffle.llvm.nodes.memory.store.LLVMPointerStoreNode.doAddress(LLVMPointerStoreNode.java:68)
                from com.oracle.truffle.llvm.nodes.memory.store.LLVMPointerStoreNodeGen.execute_generic1(LLVMPointerStoreNodeGen.java:165)
            Caused by:
            Message not supported: TO_NATIVE (UnsupportedMessageException)
                from java.lang.Throwable.<init>(Throwable.java:265)
                from java.lang.Exception.<init>(Exception.java:66)
                from com.oracle.truffle.api.interop.InteropException.<init>(InteropException.java:52)
                from com.oracle.truffle.api.interop.UnsupportedMessageException.<init>(UnsupportedMessageException.java:57)
                from com.oracle.truffle.api.interop.UnsupportedMessageException.raise(UnsupportedMessageException.java:84)
                from org.truffleruby.interop.RubyMessageResolution$ForeignToNativeNode.access(RubyMessageResolution.java:190)
                from org.truffleruby.interop.RubyMessageResolutionForeign$ForeignToNativeSubNode.accessWithTarget(RubyMessageResolutionForeign.java:503)
                from org.truffleruby.interop.RubyMessageResolutionForeignFactory$ForeignToNativeSubNodeGen.executeWithTarget(RubyMessageResolutionForeignFactory.java:585)
                from org.truffleruby.interop.RubyMessageResolutionForeign$ForeignToNativeSubNode$TO_NATIVERootNode.execute(RubyMessageResolutionForeign.java:520)
                from org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callProxy(OptimizedCallTarget.java:289)
            Translated to internal error
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:85:in `internal_raise'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:85:in `raise'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:85:in `block in initialize'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:117:in `resume'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:117:in `run'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/reactor.rb:104:in `async'
          # ./spec/spec_helper.rb:33:in `server_task'
          # ./spec/spec_helper.rb:39:in `block (2 levels) in <top (required)>'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-rspec-1.11.1/lib/async/rspec/reactor.rb:55:in `block (2 levels) in run_example'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:74:in `block in initialize'

     9.3) Failure/Error: Truffle::Interop.execute_without_conversion(function, *args)

          RuntimeError:
            Cannot convert LLVMTypedForeignObject+0x0 to LLVMNativePointer (IllegalStateException)
                from java.lang.Throwable.<init>(Throwable.java:287)
                from java.lang.Exception.<init>(Exception.java:84)
                from java.lang.RuntimeException.<init>(RuntimeException.java:80)
                from java.lang.IllegalStateException.<init>(IllegalStateException.java:75)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNode$LLVMObjectToNativeNode.transitionToNative(LLVMToNativeNode.java:117)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen$LLVMObjectToNativeNodeGen.executeWithTarget(LLVMToNativeNodeGen.java:194)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNode.doOther(LLVMToNativeNode.java:78)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen.executeWithTarget(LLVMToNativeNodeGen.java:46)
                from com.oracle.truffle.llvm.nodes.memory.store.LLVMPointerStoreNode.doAddress(LLVMPointerStoreNode.java:68)
                from com.oracle.truffle.llvm.nodes.memory.store.LLVMPointerStoreNodeGen.execute_generic1(LLVMPointerStoreNodeGen.java:165)
            Caused by:
            Message not supported: TO_NATIVE (UnsupportedMessageException)
                from java.lang.Throwable.<init>(Throwable.java:265)
                from java.lang.Exception.<init>(Exception.java:66)
                from com.oracle.truffle.api.interop.InteropException.<init>(InteropException.java:52)
                from com.oracle.truffle.api.interop.UnsupportedMessageException.<init>(UnsupportedMessageException.java:57)
                from com.oracle.truffle.api.interop.UnsupportedMessageException.raise(UnsupportedMessageException.java:84)
                from org.truffleruby.interop.RubyMessageResolution$ForeignToNativeNode.access(RubyMessageResolution.java:190)
                from org.truffleruby.interop.RubyMessageResolutionForeign$ForeignToNativeSubNode.accessWithTarget(RubyMessageResolutionForeign.java:503)
                from org.truffleruby.interop.RubyMessageResolutionForeignFactory$ForeignToNativeSubNodeGen.executeWithTarget(RubyMessageResolutionForeignFactory.java:585)
                from org.truffleruby.interop.RubyMessageResolutionForeign$ForeignToNativeSubNode$TO_NATIVERootNode.execute(RubyMessageResolutionForeign.java:520)
                from org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callProxy(OptimizedCallTarget.java:289)
            Translated to internal error
          # /Users/samuel/.rvm/rubies/truffleruby-1.0.0-rc9/lib/truffle/truffle/cext.rb:221:in `execute_without_conversion'
          # /Users/samuel/.rvm/rubies/truffleruby-1.0.0-rc9/lib/truffle/truffle/cext.rb:221:in `execute_with_mutex'
          # /Users/samuel/.rvm/rubies/truffleruby-1.0.0-rc9/lib/truffle/truffle/cext_ruby.rb:36:in `close'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/debug/selector.rb:73:in `close'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/reactor.rb:208:in `close'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-rspec-1.11.1/lib/async/rspec/reactor.rb:84:in `block (2 levels) in RSpec'
          # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-rspec-1.11.1/lib/async/rspec/leaks.rb:42:in `block (2 levels) in RSpec'

  10) Falcon::Server broken middleware results in a 500 error if middleware raises an exception
      Got 0 failures and 3 other errors:

      10.1) Failure/Error: server_task = reactor.async do

            RuntimeError:
              Cannot convert LLVMTypedForeignObject+0x0 to LLVMNativePointer (IllegalStateException)
                from java.lang.Throwable.<init>(Throwable.java:287)
                from java.lang.Exception.<init>(Exception.java:84)
                from java.lang.RuntimeException.<init>(RuntimeException.java:80)
                from java.lang.IllegalStateException.<init>(IllegalStateException.java:75)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNode$LLVMObjectToNativeNode.transitionToNative(LLVMToNativeNode.java:117)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen$LLVMObjectToNativeNodeGen.executeWithTarget(LLVMToNativeNodeGen.java:194)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNode.doOther(LLVMToNativeNode.java:78)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen.executeWithTarget(LLVMToNativeNodeGen.java:46)
                from com.oracle.truffle.llvm.nodes.memory.store.LLVMPointerStoreNode.doAddress(LLVMPointerStoreNode.java:68)
                from com.oracle.truffle.llvm.nodes.memory.store.LLVMPointerStoreNodeGen.execute_generic1(LLVMPointerStoreNodeGen.java:165)
              Caused by:
              Message not supported: TO_NATIVE (UnsupportedMessageException)
                from java.lang.Throwable.<init>(Throwable.java:265)
                from java.lang.Exception.<init>(Exception.java:66)
                from com.oracle.truffle.api.interop.InteropException.<init>(InteropException.java:52)
                from com.oracle.truffle.api.interop.UnsupportedMessageException.<init>(UnsupportedMessageException.java:57)
                from com.oracle.truffle.api.interop.UnsupportedMessageException.raise(UnsupportedMessageException.java:84)
                from org.truffleruby.interop.RubyMessageResolution$ForeignToNativeNode.access(RubyMessageResolution.java:190)
                from org.truffleruby.interop.RubyMessageResolutionForeign$ForeignToNativeSubNode.accessWithTarget(RubyMessageResolutionForeign.java:503)
                from org.truffleruby.interop.RubyMessageResolutionForeignFactory$ForeignToNativeSubNodeGen.executeWithTarget(RubyMessageResolutionForeignFactory.java:585)
                from org.truffleruby.interop.RubyMessageResolutionForeign$ForeignToNativeSubNode$TO_NATIVERootNode.execute(RubyMessageResolutionForeign.java:520)
                from org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callProxy(OptimizedCallTarget.java:289)
              Translated to internal error
            # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:85:in `internal_raise'
            # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:85:in `raise'
            # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:85:in `block in initialize'
            # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:117:in `resume'
            # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:117:in `run'
            # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/reactor.rb:104:in `async'
            # ./spec/spec_helper.rb:33:in `server_task'
            # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-rspec-1.11.1/lib/async/rspec/reactor.rb:55:in `block (2 levels) in run_example'
            # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:74:in `block in initialize'

      10.2) Failure/Error: server_task = reactor.async do

            RuntimeError:
              Cannot convert LLVMTypedForeignObject+0x0 to LLVMNativePointer (IllegalStateException)
                from java.lang.Throwable.<init>(Throwable.java:287)
                from java.lang.Exception.<init>(Exception.java:84)
                from java.lang.RuntimeException.<init>(RuntimeException.java:80)
                from java.lang.IllegalStateException.<init>(IllegalStateException.java:75)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNode$LLVMObjectToNativeNode.transitionToNative(LLVMToNativeNode.java:117)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen$LLVMObjectToNativeNodeGen.executeWithTarget(LLVMToNativeNodeGen.java:194)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNode.doOther(LLVMToNativeNode.java:78)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen.executeWithTarget(LLVMToNativeNodeGen.java:46)
                from com.oracle.truffle.llvm.nodes.memory.store.LLVMPointerStoreNode.doAddress(LLVMPointerStoreNode.java:68)
                from com.oracle.truffle.llvm.nodes.memory.store.LLVMPointerStoreNodeGen.execute_generic1(LLVMPointerStoreNodeGen.java:165)
              Caused by:
              Message not supported: TO_NATIVE (UnsupportedMessageException)
                from java.lang.Throwable.<init>(Throwable.java:265)
                from java.lang.Exception.<init>(Exception.java:66)
                from com.oracle.truffle.api.interop.InteropException.<init>(InteropException.java:52)
                from com.oracle.truffle.api.interop.UnsupportedMessageException.<init>(UnsupportedMessageException.java:57)
                from com.oracle.truffle.api.interop.UnsupportedMessageException.raise(UnsupportedMessageException.java:84)
                from org.truffleruby.interop.RubyMessageResolution$ForeignToNativeNode.access(RubyMessageResolution.java:190)
                from org.truffleruby.interop.RubyMessageResolutionForeign$ForeignToNativeSubNode.accessWithTarget(RubyMessageResolutionForeign.java:503)
                from org.truffleruby.interop.RubyMessageResolutionForeignFactory$ForeignToNativeSubNodeGen.executeWithTarget(RubyMessageResolutionForeignFactory.java:585)
                from org.truffleruby.interop.RubyMessageResolutionForeign$ForeignToNativeSubNode$TO_NATIVERootNode.execute(RubyMessageResolutionForeign.java:520)
                from org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callProxy(OptimizedCallTarget.java:289)
              Translated to internal error
            # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:85:in `internal_raise'
            # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:85:in `raise'
            # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:85:in `block in initialize'
            # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:117:in `resume'
            # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:117:in `run'
            # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/reactor.rb:104:in `async'
            # ./spec/spec_helper.rb:33:in `server_task'
            # ./spec/spec_helper.rb:39:in `block (2 levels) in <top (required)>'
            # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-rspec-1.11.1/lib/async/rspec/reactor.rb:55:in `block (2 levels) in run_example'
            # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:74:in `block in initialize'

      10.3) Failure/Error: Truffle::Interop.execute_without_conversion(function, *args)

            RuntimeError:
              Cannot convert LLVMTypedForeignObject+0x0 to LLVMNativePointer (IllegalStateException)
                from java.lang.Throwable.<init>(Throwable.java:287)
                from java.lang.Exception.<init>(Exception.java:84)
                from java.lang.RuntimeException.<init>(RuntimeException.java:80)
                from java.lang.IllegalStateException.<init>(IllegalStateException.java:75)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNode$LLVMObjectToNativeNode.transitionToNative(LLVMToNativeNode.java:117)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen$LLVMObjectToNativeNodeGen.executeWithTarget(LLVMToNativeNodeGen.java:194)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNode.doOther(LLVMToNativeNode.java:78)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen.executeWithTarget(LLVMToNativeNodeGen.java:46)
                from com.oracle.truffle.llvm.nodes.memory.store.LLVMPointerStoreNode.doAddress(LLVMPointerStoreNode.java:68)
                from com.oracle.truffle.llvm.nodes.memory.store.LLVMPointerStoreNodeGen.execute_generic1(LLVMPointerStoreNodeGen.java:165)
              Caused by:
              Message not supported: TO_NATIVE (UnsupportedMessageException)
                from java.lang.Throwable.<init>(Throwable.java:265)
                from java.lang.Exception.<init>(Exception.java:66)
                from com.oracle.truffle.api.interop.InteropException.<init>(InteropException.java:52)
                from com.oracle.truffle.api.interop.UnsupportedMessageException.<init>(UnsupportedMessageException.java:57)
                from com.oracle.truffle.api.interop.UnsupportedMessageException.raise(UnsupportedMessageException.java:84)
                from org.truffleruby.interop.RubyMessageResolution$ForeignToNativeNode.access(RubyMessageResolution.java:190)
                from org.truffleruby.interop.RubyMessageResolutionForeign$ForeignToNativeSubNode.accessWithTarget(RubyMessageResolutionForeign.java:503)
                from org.truffleruby.interop.RubyMessageResolutionForeignFactory$ForeignToNativeSubNodeGen.executeWithTarget(RubyMessageResolutionForeignFactory.java:585)
                from org.truffleruby.interop.RubyMessageResolutionForeign$ForeignToNativeSubNode$TO_NATIVERootNode.execute(RubyMessageResolutionForeign.java:520)
                from org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callProxy(OptimizedCallTarget.java:289)
              Translated to internal error
            # /Users/samuel/.rvm/rubies/truffleruby-1.0.0-rc9/lib/truffle/truffle/cext.rb:221:in `execute_without_conversion'
            # /Users/samuel/.rvm/rubies/truffleruby-1.0.0-rc9/lib/truffle/truffle/cext.rb:221:in `execute_with_mutex'
            # /Users/samuel/.rvm/rubies/truffleruby-1.0.0-rc9/lib/truffle/truffle/cext_ruby.rb:36:in `close'
            # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/debug/selector.rb:73:in `close'
            # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/reactor.rb:208:in `close'
            # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-rspec-1.11.1/lib/async/rspec/reactor.rb:84:in `block (2 levels) in RSpec'
            # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-rspec-1.11.1/lib/async/rspec/leaks.rb:42:in `block (2 levels) in RSpec'

  11) Falcon::Server with SSL basic middleware client can get resource
      Failure/Error: Truffle::Interop.execute_without_conversion(function, *args)

      RuntimeError:
        Cannot convert LLVMTypedForeignObject+0x0 to LLVMNativePointer (IllegalStateException)
            from java.lang.Throwable.<init>(Throwable.java:287)
            from java.lang.Exception.<init>(Exception.java:84)
            from java.lang.RuntimeException.<init>(RuntimeException.java:80)
            from java.lang.IllegalStateException.<init>(IllegalStateException.java:75)
            from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNode$LLVMObjectToNativeNode.transitionToNative(LLVMToNativeNode.java:117)
            from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen$LLVMObjectToNativeNodeGen.executeWithTarget(LLVMToNativeNodeGen.java:194)
            from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNode.doOther(LLVMToNativeNode.java:78)
            from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen.executeWithTarget(LLVMToNativeNodeGen.java:46)
            from com.oracle.truffle.llvm.nodes.memory.store.LLVMPointerStoreNode.doAddress(LLVMPointerStoreNode.java:68)
            from com.oracle.truffle.llvm.nodes.memory.store.LLVMPointerStoreNodeGen.execute_generic1(LLVMPointerStoreNodeGen.java:165)
        Caused by:
        Message not supported: TO_NATIVE (UnsupportedMessageException)
            from java.lang.Throwable.<init>(Throwable.java:265)
            from java.lang.Exception.<init>(Exception.java:66)
            from com.oracle.truffle.api.interop.InteropException.<init>(InteropException.java:52)
            from com.oracle.truffle.api.interop.UnsupportedMessageException.<init>(UnsupportedMessageException.java:57)
            from com.oracle.truffle.api.interop.UnsupportedMessageException.raise(UnsupportedMessageException.java:84)
            from org.truffleruby.interop.RubyMessageResolution$ForeignToNativeNode.access(RubyMessageResolution.java:190)
            from org.truffleruby.interop.RubyMessageResolutionForeign$ForeignToNativeSubNode.accessWithTarget(RubyMessageResolutionForeign.java:503)
            from org.truffleruby.interop.RubyMessageResolutionForeignFactory$ForeignToNativeSubNodeGen.executeWithTarget(RubyMessageResolutionForeignFactory.java:585)
            from org.truffleruby.interop.RubyMessageResolutionForeign$ForeignToNativeSubNode$TO_NATIVERootNode.execute(RubyMessageResolutionForeign.java:520)
            from org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callProxy(OptimizedCallTarget.java:289)
        Translated to internal error
      # /Users/samuel/.rvm/rubies/truffleruby-1.0.0-rc9/lib/truffle/truffle/cext.rb:221:in `execute_without_conversion'
      # /Users/samuel/.rvm/rubies/truffleruby-1.0.0-rc9/lib/truffle/truffle/cext.rb:221:in `execute_with_mutex'
      # /Users/samuel/.rvm/rubies/truffleruby-1.0.0-rc9/lib/truffle/truffle/cext_ruby.rb:36:in `close'
      # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/debug/selector.rb:73:in `close'
      # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/reactor.rb:208:in `close'
      # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-rspec-1.11.1/lib/async/rspec/reactor.rb:84:in `block (2 levels) in RSpec'
      # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-rspec-1.11.1/lib/async/rspec/leaks.rb:42:in `block (2 levels) in RSpec'

  12) Falcon::Server can start server
      Got 0 failures and 2 other errors:

      12.1) Failure/Error: server_task = reactor.async do

            RuntimeError:
              Cannot convert LLVMTypedForeignObject+0x0 to LLVMNativePointer (IllegalStateException)
                from java.lang.Throwable.<init>(Throwable.java:287)
                from java.lang.Exception.<init>(Exception.java:84)
                from java.lang.RuntimeException.<init>(RuntimeException.java:80)
                from java.lang.IllegalStateException.<init>(IllegalStateException.java:75)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNode$LLVMObjectToNativeNode.transitionToNative(LLVMToNativeNode.java:117)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen$LLVMObjectToNativeNodeGen.executeWithTarget(LLVMToNativeNodeGen.java:194)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNode.doOther(LLVMToNativeNode.java:78)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen.executeWithTarget(LLVMToNativeNodeGen.java:46)
                from com.oracle.truffle.llvm.nodes.memory.store.LLVMPointerStoreNode.doAddress(LLVMPointerStoreNode.java:68)
                from com.oracle.truffle.llvm.nodes.memory.store.LLVMPointerStoreNodeGen.execute_generic1(LLVMPointerStoreNodeGen.java:165)
              Caused by:
              Message not supported: TO_NATIVE (UnsupportedMessageException)
                from java.lang.Throwable.<init>(Throwable.java:265)
                from java.lang.Exception.<init>(Exception.java:66)
                from com.oracle.truffle.api.interop.InteropException.<init>(InteropException.java:52)
                from com.oracle.truffle.api.interop.UnsupportedMessageException.<init>(UnsupportedMessageException.java:57)
                from com.oracle.truffle.api.interop.UnsupportedMessageException.raise(UnsupportedMessageException.java:84)
                from org.truffleruby.interop.RubyMessageResolution$ForeignToNativeNode.access(RubyMessageResolution.java:190)
                from org.truffleruby.interop.RubyMessageResolutionForeign$ForeignToNativeSubNode.accessWithTarget(RubyMessageResolutionForeign.java:503)
                from org.truffleruby.interop.RubyMessageResolutionForeignFactory$ForeignToNativeSubNodeGen.executeWithTarget(RubyMessageResolutionForeignFactory.java:585)
                from org.truffleruby.interop.RubyMessageResolutionForeign$ForeignToNativeSubNode$TO_NATIVERootNode.execute(RubyMessageResolutionForeign.java:520)
                from org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callProxy(OptimizedCallTarget.java:289)
              Translated to internal error
            # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:85:in `internal_raise'
            # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:85:in `raise'
            # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:85:in `block in initialize'
            # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:117:in `resume'
            # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:117:in `run'
            # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/reactor.rb:104:in `async'
            # ./spec/rack/handler/falcon_spec.rb:37:in `block (2 levels) in <top (required)>'
            # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-rspec-1.11.1/lib/async/rspec/reactor.rb:55:in `block (2 levels) in run_example'
            # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/task.rb:74:in `block in initialize'

      12.2) Failure/Error: Truffle::Interop.execute_without_conversion(function, *args)

            RuntimeError:
              Cannot convert LLVMTypedForeignObject+0x0 to LLVMNativePointer (IllegalStateException)
                from java.lang.Throwable.<init>(Throwable.java:287)
                from java.lang.Exception.<init>(Exception.java:84)
                from java.lang.RuntimeException.<init>(RuntimeException.java:80)
                from java.lang.IllegalStateException.<init>(IllegalStateException.java:75)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNode$LLVMObjectToNativeNode.transitionToNative(LLVMToNativeNode.java:117)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen$LLVMObjectToNativeNodeGen.executeWithTarget(LLVMToNativeNodeGen.java:194)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNode.doOther(LLVMToNativeNode.java:78)
                from com.oracle.truffle.llvm.runtime.nodes.api.LLVMToNativeNodeGen.executeWithTarget(LLVMToNativeNodeGen.java:46)
                from com.oracle.truffle.llvm.nodes.memory.store.LLVMPointerStoreNode.doAddress(LLVMPointerStoreNode.java:68)
                from com.oracle.truffle.llvm.nodes.memory.store.LLVMPointerStoreNodeGen.execute_generic1(LLVMPointerStoreNodeGen.java:165)
              Caused by:
              Message not supported: TO_NATIVE (UnsupportedMessageException)
                from java.lang.Throwable.<init>(Throwable.java:265)
                from java.lang.Exception.<init>(Exception.java:66)
                from com.oracle.truffle.api.interop.InteropException.<init>(InteropException.java:52)
                from com.oracle.truffle.api.interop.UnsupportedMessageException.<init>(UnsupportedMessageException.java:57)
                from com.oracle.truffle.api.interop.UnsupportedMessageException.raise(UnsupportedMessageException.java:84)
                from org.truffleruby.interop.RubyMessageResolution$ForeignToNativeNode.access(RubyMessageResolution.java:190)
                from org.truffleruby.interop.RubyMessageResolutionForeign$ForeignToNativeSubNode.accessWithTarget(RubyMessageResolutionForeign.java:503)
                from org.truffleruby.interop.RubyMessageResolutionForeignFactory$ForeignToNativeSubNodeGen.executeWithTarget(RubyMessageResolutionForeignFactory.java:585)
                from org.truffleruby.interop.RubyMessageResolutionForeign$ForeignToNativeSubNode$TO_NATIVERootNode.execute(RubyMessageResolutionForeign.java:520)
                from org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callProxy(OptimizedCallTarget.java:289)
              Translated to internal error
            # /Users/samuel/.rvm/rubies/truffleruby-1.0.0-rc9/lib/truffle/truffle/cext.rb:221:in `execute_without_conversion'
            # /Users/samuel/.rvm/rubies/truffleruby-1.0.0-rc9/lib/truffle/truffle/cext.rb:221:in `execute_with_mutex'
            # /Users/samuel/.rvm/rubies/truffleruby-1.0.0-rc9/lib/truffle/truffle/cext_ruby.rb:36:in `close'
            # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/debug/selector.rb:73:in `close'
            # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-1.10.3/lib/async/reactor.rb:208:in `close'
            # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-rspec-1.11.1/lib/async/rspec/reactor.rb:84:in `block (2 levels) in RSpec'
            # /Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-rspec-1.11.1/lib/async/rspec/leaks.rb:42:in `block (2 levels) in RSpec'

Finished in 8.53 seconds (files took 3.97 seconds to load)
40 examples, 12 failures

Failed examples:

rspec ./spec/falcon/adapters/rack_spec.rb:51 # Falcon::Adapters::Rack HTTP_HOST get valid HTTP_HOST
rspec ./spec/falcon/adapters/rack_spec.rb:80 # Falcon::Adapters::Rack websockets can send and receive messages using websockets
rspec ./spec/falcon/command/serve_spec.rb:24 # Falcon::Command::Serve can listen on specified port
rspec ./spec/falcon/proxy_spec.rb:38 # Falcon::Proxy can select client based on authority
rspec ./spec/falcon/proxy_spec.rb:53 # Falcon::Proxy defers if no host is available
rspec ./spec/falcon/server_spec.rb:58 # Falcon::Server http client can POST application/x-www-form-urlencoded
rspec ./spec/falcon/server_spec.rb:65 # Falcon::Server http client can POST multipart/form-data
rspec ./spec/falcon/server_spec.rb:46 # Falcon::Server http client GET / generates successful response
rspec ./spec/falcon/server_spec.rb:51 # Falcon::Server http client GET / generates server and date headers
rspec ./spec/falcon/server_spec.rb:80 # Falcon::Server broken middleware results in a 500 error if middleware raises an exception
rspec ./spec/falcon/ssl_server_spec.rb:62 # Falcon::Server with SSL basic middleware client can get resource
rspec ./spec/rack/handler/falcon_spec.rb:36 # Falcon::Server can start server

If I specify NIO4R_PURE=true, it still fails, but it's due to timeout because sever didn't respond. Not sure why.

It seems like Async::Reactor issue or something wrong at IO layer. Let me check.

So you got similar results to me but I decreased timeout to 1s to avoid waiting a long time to fail.

Let me dissect it a bit:

          # Async::TimeoutError:
          #   run time exceeded duration 60s:
          #   <Async::Reactor:0x1a74 stopped=false>
          #     <Async::Task:0x1a78 RSpec::ExampleGroups::FalconAdaptersRack::Websockets status=running>
          #         <Async::Task:0x1a7c timer task duration=60 status=running>
          #         <Async::Task:0x1a80 connecting to #<Addrinfo: 127.0.0.1:9294 TCP> status=running>
          #             <Async::Task:0x1a84 status=complete>
          #                 <Async::Task:0x1a88 accepting connections #<Addrinfo: 127.0.0.1:9294 TCP> status=running>
          #                     <Async::Task:0x1a8c incoming connection #<Addrinfo: 127.0.0.1:51771 TCP> status=running>

This is actually the hierarchy of concurrent tasks within async.

We can see it was accepting connections and that it had one incoming connection.

That's good.

But for some reason, data was not flowing.

Not sure why yet.

Okay, so async is all green.

 > NIO4R_PURE=true rspec
/Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-rspec-1.11.1/lib/async/rspec/reactor.rb:39: warning: shadowing outer local variable - task
/Users/samuel/.rvm/gems/truffleruby-1.0.0-rc9/gems/async-rspec-1.11.1/lib/async/rspec/memory/limit_allocations.rb:41: warning: shadowing outer local variable - count
/Users/samuel/Documents/socketry/async/spec/async/reactor/nested_spec.rb:29: warning: shadowing outer local variable - task
/Users/samuel/Documents/socketry/async/spec/async/reactor/nested_spec.rb:43: warning: shadowing outer local variable - task
/Users/samuel/Documents/socketry/async/spec/async/task_spec.rb:28: warning: shadowing outer local variable - task
/Users/samuel/Documents/socketry/async/spec/async/task_spec.rb:52: warning: shadowing outer local variable - task
/Users/samuel/Documents/socketry/async/spec/async/task_spec.rb:63: warning: shadowing outer local variable - task
/Users/samuel/Documents/socketry/async/spec/async/task_spec.rb:79: warning: shadowing outer local variable - task
/Users/samuel/Documents/socketry/async/spec/async/task_spec.rb:93: warning: shadowing outer local variable - task
/Users/samuel/Documents/socketry/async/spec/async/task_spec.rb:95: warning: shadowing outer local variable - task
/Users/samuel/Documents/socketry/async/spec/async/task_spec.rb:118: warning: shadowing outer local variable - task
/Users/samuel/Documents/socketry/async/spec/async/task_spec.rb:119: warning: shadowing outer local variable - task
/Users/samuel/Documents/socketry/async/spec/async/task_spec.rb:138: warning: shadowing outer local variable - task
/Users/samuel/Documents/socketry/async/spec/async/task_spec.rb:158: warning: shadowing outer local variable - task
/Users/samuel/Documents/socketry/async/spec/async/task_spec.rb:178: warning: shadowing outer local variable - task

Async::Clock
  can measure durations
  can get current offset

Async::Condition
  should continue after condition is signalled
  behaves like Async::Condition
    can signal waiting task
    should be able to signal stopped task

#<Logger:0x232c>
  ::default_log_level
    should set default log level
    should set default log level based on $DEBUG
    should set default log level based on $VERBOSE

Async::Node
  #parent=
    should construct nested tree
    should break nested tree
    can consume bottom to top
  #print_hierarchy
    can print hierarchy to bufffer
  #consume
    can't consume middle node
  #annotate
    should have no annotation by default
    should output annotation when invoking #to_s
    can assign annotation

Async::Notification
  should continue after notification is signalled
  behaves like Async::Condition
    can signal waiting task
    should be able to signal stopped task

Async::Wrapper
Warming up --------------------------------------
Wrapper#wait_readable
                        62.000  i/100ms
    Reactor#register    90.000  i/100ms
Calculating -------------------------------------
Wrapper#wait_readable
                          4.723k (±51.8%) i/s -     14.322k in   5.031616s
    Reactor#register     19.935k (±39.1%) i/s -     60.120k in   4.990682s

Comparison:
    Reactor#register:    19935.3 i/s
Wrapper#wait_readable:     4722.6 i/s - 4.22x  slower

  should be fast to wait until readable

Async::Queue
  should process items in order

Async::Reactor
  ::run (in existing reactor)
    should nest reactor
  ::run
    should nest reactor

Async::Reactor
  can't return
  is closed after running
  should return a task
  #run
    can run tasks on different fibers
  #stop
    can be stop reactor
    can stop reactor from different thread
  #async
    can pass in arguments
    passes in the correct number of arguments
  #timeout
    stops immediately
  #to_s
    shows stopped=

Async::Semaphore
  #async
    should process work in batches
    only allows one task at a time
    allows tasks to execute concurrently
  #count
    should count number of current acquisitions
  #limit
    should have a default limit
  #empty?
    should be empty unless acquired
  #blocking?
    will be blocking when acquired
  #acquire/#release
    works when called without block

Async::Task
  #run
    can't be invoked twice
  #async
    can start child async tasks
    can pass in arguments
  #yield
    can yield back to reactor
  #stop
    can be stopped
    should kill direct child
    should not remove running task
  #sleep
    can sleep for the requested duration
  #timeout
    will timeout if execution takes too long
    won't timeout if execution completes in time
  #wait
    will wait on another task to complete
    will propagate exceptions
  #to_s
    should show running
    should show complete

Async::Wrapper
  #wait_readable
    can wait to be readable
    can timeout if no event occurs
    can wait for readability in sequential tasks
    can be cancelled
  #wait_writable
    can wait to be writable
    can be cancelled while waiting to be readable
    can be cancelled
  #wait_any
    can wait for any events
    can wait for readability in one task and writability in another
    fails if waiting on from multiple tasks
  #reactor=
    can assign a wrapper to a reactor
    assigns current reactor when waiting for events
  #dup
    dups the underlying io
  #close
    closes monitor when closing wrapper
    can't wait on closed wrapper

Enumerator
  should play well with Enumerator as internal iterator
  should play well with Enumerator as external iterator (PENDING: expected failure)
  should play well with Enumerator.zip(Enumerator) method (PENDING: expected failure)
  should play with explicit Fiber usage (PENDING: expected failure)

Pending: (Failures listed here are expected and do not affect your suite's status)

  1) Enumerator should play well with Enumerator as external iterator
     # expected failure
     Failure/Error: expect(ar[1]).to be == 2

       expected: == 2
            got:    nil
     # ./spec/enumerator_spec.rb:52:in `block (2 levels) in <top (required)>'

  2) Enumerator should play well with Enumerator.zip(Enumerator) method
     # expected failure
     Failure/Error: raise

       expected: == [[:a, 1], [:b, 2], [:c, nil], [:d, nil]]
            got:    [[:a, 1], [:b, nil], [:c, 2], [:d, nil]]
     # ./lib/async/task.rb:85:in `block in initialize'
     # ./lib/async/task.rb:117:in `resume'
     # ./lib/async/task.rb:117:in `run'
     # ./lib/async/reactor.rb:104:in `async'
     # ./lib/async/reactor.rb:150:in `run'
     # ./lib/async/reactor.rb:54:in `run'
     # ./spec/enumerator_spec.rb:57:in `block (2 levels) in <top (required)>'

  3) Enumerator should play with explicit Fiber usage
     # expected failure
     Failure/Error: expect(ar[1]).to be == 2

       expected: == 2
            got:    nil
     # ./spec/enumerator_spec.rb:77:in `block (2 levels) in <top (required)>'

Finished in 52.12 seconds (files took 1.87 seconds to load)
74 examples, 0 failures, 3 pending

async-io has soe failures.. it's the place to start digging.

Okay, so the problem is pretty simple:

truffleruby-1.0.0-rc9 :001 > $stdout.write_nonblock("Hello World")
Hello World => 11 
truffleruby-1.0.0-rc9 :002 > $stdout.write_nonblock("Hello World", exception: false)
ArgumentError: wrong number of arguments (2 for 1)
    from (irb):2:in `write_nonblock'
    from (irb):2
    from /Users/samuel/.rvm/rubies/truffleruby-1.0.0-rc9/bin/irb:29:in `<main>'
2.6.0-preview2 :001 > $stdout.write_nonblock("Hello World", exception: false)
Hello World => 11 

Also, it doesn't seem like it's logging exceptions Exception#cause is not logged?

Hm, it's still not running under RC10 :(

@deepj What's not working? Could you post a backtrace?
The default nio4r mode is not expected to work yet (it's a C extension), but I thought it'd work with NIO4R_PURE=true.

@eregon

It fails inside async-io @ioquatix will know more about that

$ NIO4R_PURE=true falcon --verbose serve --threaded
config.ru:2: warning: `frozen_string_literal' is ignored after any tokens
config.ru:2: warning: `frozen_string_literal' is ignored after any tokens
config.ru:2: warning: `frozen_string_literal' is ignored after any tokens
config.ru:2: warning: `frozen_string_literal' is ignored after any tokens
D, [2018-12-10T15:34:35.060000 #7467] DEBUG -- Async::IO::Socket: Binding to #<Addrinfo: [::1]:9292 TCP>
D, [2018-12-10T15:34:35.291000 #7467] DEBUG -- Async::IO::Socket: Binding to #<Addrinfo: 127.0.0.1:9292 TCP>
D, [2018-12-10T15:34:35.299000 #7467] DEBUG -- <Async::Reactor:0xcfa stopped=false>: Exiting run-loop because finished.
I, [2018-12-10T15:34:35.317000 #7467]  INFO -- : Falcon taking flight! Binding to #<Falcon::Endpoint https://localhost:9292/> [Async::Container::Threaded with concurrency: 4]
I, [2018-12-10T15:34:35.352000 #7467]  INFO -- : Send `kill -USR1 7467` for detailed status :)
I, [2018-12-10T15:34:35.356000 #7467]  INFO -- : Send `kill -USR1 7467` for detailed status :)
I, [2018-12-10T15:34:35.359000 #7467]  INFO -- : Send `kill -USR1 7467` for detailed status :)
I, [2018-12-10T15:34:35.351000 #7467]  INFO -- : Send `kill -USR1 7467` for detailed status :)
D, [2018-12-10T15:34:35.444000 #7467] DEBUG -- <Async::Task:0xd1c status=failed>: org.truffleruby.core.FinalizationService$FinalizerReference cannot be cast to com.oracle.truffle.api.interop.TruffleObject (ClassCastException)
    from org.truffleruby.language.dispatch.UncachedDispatchNode.megamorphicForeignCall(UncachedDispatchNode.java:137)
    from org.truffleruby.language.dispatch.UncachedDispatchNode.executeDispatch(UncachedDispatchNode.java:84)
    from org.truffleruby.language.dispatch.DispatchHeadNode.dispatch(DispatchHeadNode.java:43)
    from org.truffleruby.language.dispatch.RubyCallNode.executeWithArgumentsEvaluated(RubyCallNode.java:108)
    from org.truffleruby.language.dispatch.RubyCallNode.execute(RubyCallNode.java:99)
    from org.truffleruby.core.cast.ToSNodeGen.execute(ToSNodeGen.java:31)
    from org.truffleruby.core.string.InterpolatedStringNode.execute(InterpolatedStringNode.java:50)
    from org.truffleruby.language.dispatch.RubyCallNode.executeArguments(RubyCallNode.java:129)
    from org.truffleruby.language.dispatch.RubyCallNode.execute(RubyCallNode.java:87)
    from org.truffleruby.language.control.SequenceNode.execute(SequenceNode.java:34)
Translated to internal error (RuntimeError)
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `inspect'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `each'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `inspect'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `recursion_guard'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `inspect'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `inspect'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `each'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `inspect'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `recursion_guard'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `inspect'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `inspect'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `each'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `inspect'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `recursion_guard'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `inspect'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `block (2 levels) in bind'
~/.gem/truffleruby/2.4.4/gems/async-1.11.0/lib/async/task.rb:74:in `block in initialize'
D, [2018-12-10T15:34:35.449000 #7467] DEBUG -- <Async::Task:0xd22 status=failed>: org.truffleruby.core.FinalizationService$FinalizerReference cannot be cast to com.oracle.truffle.api.interop.TruffleObject (ClassCastException)
    from org.truffleruby.language.dispatch.UncachedDispatchNode.megamorphicForeignCall(UncachedDispatchNode.java:137)
    from org.truffleruby.language.dispatch.UncachedDispatchNode.executeDispatch(UncachedDispatchNode.java:84)
    from org.truffleruby.language.dispatch.DispatchHeadNode.dispatch(DispatchHeadNode.java:43)
    from org.truffleruby.language.dispatch.RubyCallNode.executeWithArgumentsEvaluated(RubyCallNode.java:108)
    from org.truffleruby.language.dispatch.RubyCallNode.execute(RubyCallNode.java:99)
    from org.truffleruby.core.cast.ToSNodeGen.execute(ToSNodeGen.java:31)
    from org.truffleruby.core.string.InterpolatedStringNode.execute(InterpolatedStringNode.java:50)
    from org.truffleruby.language.dispatch.RubyCallNode.executeArguments(RubyCallNode.java:129)
    from org.truffleruby.language.dispatch.RubyCallNode.execute(RubyCallNode.java:87)
    from org.truffleruby.language.control.SequenceNode.execute(SequenceNode.java:34)
Translated to internal error (RuntimeError)
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `inspect'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `each'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `inspect'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `recursion_guard'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `inspect'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `inspect'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `each'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `inspect'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `recursion_guard'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `inspect'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `inspect'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `each'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `inspect'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `recursion_guard'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `inspect'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `block (2 levels) in bind'
~/.gem/truffleruby/2.4.4/gems/async-1.11.0/lib/async/task.rb:74:in `block in initialize'
D, [2018-12-10T15:34:35.455000 #7467] DEBUG -- <Async::Task:0xd24 status=failed>: org.truffleruby.core.FinalizationService$FinalizerReference cannot be cast to com.oracle.truffle.api.interop.TruffleObject (ClassCastException)
    from org.truffleruby.language.dispatch.UncachedDispatchNode.megamorphicForeignCall(UncachedDispatchNode.java:137)
    from org.truffleruby.language.dispatch.UncachedDispatchNode.executeDispatch(UncachedDispatchNode.java:84)
    from org.truffleruby.language.dispatch.DispatchHeadNode.dispatch(DispatchHeadNode.java:43)
    from org.truffleruby.language.dispatch.RubyCallNode.executeWithArgumentsEvaluated(RubyCallNode.java:108)
    from org.truffleruby.language.dispatch.RubyCallNode.execute(RubyCallNode.java:99)
    from org.truffleruby.core.cast.ToSNodeGen.execute(ToSNodeGen.java:31)
    from org.truffleruby.core.string.InterpolatedStringNode.execute(InterpolatedStringNode.java:50)
    from org.truffleruby.language.dispatch.RubyCallNode.executeArguments(RubyCallNode.java:129)
    from org.truffleruby.language.dispatch.RubyCallNode.execute(RubyCallNode.java:87)
    from org.truffleruby.language.control.SequenceNode.execute(SequenceNode.java:34)
Translated to internal error (RuntimeError)
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `inspect'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `each'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `inspect'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `recursion_guard'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `inspect'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `inspect'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `each'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `inspect'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `recursion_guard'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `inspect'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `inspect'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `each'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `inspect'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `recursion_guard'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `inspect'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `block (2 levels) in bind'
~/.gem/truffleruby/2.4.4/gems/async-1.11.0/lib/async/task.rb:74:in `block in initialize'
D, [2018-12-10T15:34:35.457000 #7467] DEBUG -- <Async::Task:0xd28 status=failed>: org.truffleruby.core.FinalizationService$FinalizerReference cannot be cast to com.oracle.truffle.api.interop.TruffleObject (ClassCastException)
    from org.truffleruby.language.dispatch.UncachedDispatchNode.megamorphicForeignCall(UncachedDispatchNode.java:137)
    from org.truffleruby.language.dispatch.UncachedDispatchNode.executeDispatch(UncachedDispatchNode.java:84)
    from org.truffleruby.language.dispatch.DispatchHeadNode.dispatch(DispatchHeadNode.java:43)
    from org.truffleruby.language.dispatch.RubyCallNode.executeWithArgumentsEvaluated(RubyCallNode.java:108)
    from org.truffleruby.language.dispatch.RubyCallNode.execute(RubyCallNode.java:99)
    from org.truffleruby.core.cast.ToSNodeGen.execute(ToSNodeGen.java:31)
    from org.truffleruby.core.string.InterpolatedStringNode.execute(InterpolatedStringNode.java:50)
    from org.truffleruby.language.dispatch.RubyCallNode.executeArguments(RubyCallNode.java:129)
    from org.truffleruby.language.dispatch.RubyCallNode.execute(RubyCallNode.java:87)
    from org.truffleruby.language.control.SequenceNode.execute(SequenceNode.java:34)
Translated to internal error (RuntimeError)
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `inspect'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `each'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `inspect'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `recursion_guard'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `inspect'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `inspect'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `each'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `inspect'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `recursion_guard'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `inspect'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `inspect'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `each'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `inspect'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `recursion_guard'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `inspect'
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `block (2 levels) in bind'
~/.gem/truffleruby/2.4.4/gems/async-1.11.0/lib/async/task.rb:74:in `block in initialize'
D, [2018-12-10T15:34:35.466000 #7467] DEBUG -- <Async::Reactor:0xd2e stopped=false>: Exiting run-loop because #<RuntimeError: org.truffleruby.core.FinalizationService$FinalizerReference cannot be cast to com.oracle.truffle.api.interop.TruffleObject (ClassCastException)
    from org.truffleruby.language.dispatch.UncachedDispatchNode.megamorphicForeignCall(UncachedDispatchNode.java:137)
    from org.truffleruby.language.dispatch.UncachedDispatchNode.executeDispatch(UncachedDispatchNode.java:84)
    from org.truffleruby.language.dispatch.DispatchHeadNode.dispatch(DispatchHeadNode.java:43)
    from org.truffleruby.language.dispatch.RubyCallNode.executeWithArgumentsEvaluated(RubyCallNode.java:108)
    from org.truffleruby.language.dispatch.RubyCallNode.execute(RubyCallNode.java:99)
    from org.truffleruby.core.cast.ToSNodeGen.execute(ToSNodeGen.java:31)
    from org.truffleruby.core.string.InterpolatedStringNode.execute(InterpolatedStringNode.java:50)
    from org.truffleruby.language.dispatch.RubyCallNode.executeArguments(RubyCallNode.java:129)
    from org.truffleruby.language.dispatch.RubyCallNode.execute(RubyCallNode.java:87)
    from org.truffleruby.language.control.SequenceNode.execute(SequenceNode.java:34)
Translated to internal error>.
~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `inspect': org.truffleruby.core.FinalizationService$FinalizerReference cannot be cast to com.oracle.truffle.api.interop.TruffleObject (ClassCastException) (RuntimeError)
    from org.truffleruby.language.dispatch.UncachedDispatchNode.megamorphicForeignCall(UncachedDispatchNode.java:137)
    from org.truffleruby.language.dispatch.UncachedDispatchNode.executeDispatch(UncachedDispatchNode.java:84)
    from org.truffleruby.language.dispatch.DispatchHeadNode.dispatch(DispatchHeadNode.java:43)
    from org.truffleruby.language.dispatch.RubyCallNode.executeWithArgumentsEvaluated(RubyCallNode.java:108)
    from org.truffleruby.language.dispatch.RubyCallNode.execute(RubyCallNode.java:99)
    from org.truffleruby.core.cast.ToSNodeGen.execute(ToSNodeGen.java:31)
    from org.truffleruby.core.string.InterpolatedStringNode.execute(InterpolatedStringNode.java:50)
    from org.truffleruby.language.dispatch.RubyCallNode.executeArguments(RubyCallNode.java:129)
    from org.truffleruby.language.dispatch.RubyCallNode.execute(RubyCallNode.java:87)
    from org.truffleruby.language.control.SequenceNode.execute(SequenceNode.java:34)
Translated to internal error
    from ~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `each'
    from ~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `inspect'
    from ~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `recursion_guard'
    from ~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `inspect'
    from ~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `inspect'
    from ~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `each'
    from ~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `inspect'
    from ~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `recursion_guard'
    from ~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `inspect'
    from ~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `inspect'
    from ~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `each'
    from ~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `inspect'
    from ~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `recursion_guard'
    from ~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `inspect'
    from ~/.gem/truffleruby/2.4.4/gems/async-io-1.17.2/lib/async/io/shared_endpoint.rb:71:in `block (2 levels) in bind'
    from ~/.gem/truffleruby/2.4.4/gems/async-1.11.0/lib/async/task.rb:74:in `block in initialize'
D, [2018-12-10T15:34:35.508000 #7467] DEBUG -- <Async::Reactor:0xd30 stopped=false>: Exiting run-loop because finished.
D, [2018-12-10T15:34:35.509000 #7467] DEBUG -- <Async::Reactor:0xd32 stopped=false>: Exiting run-loop because finished.

@deepj Thanks, I can reproduce with

NIO4R_PURE=true jt ruby -S falcon --verbose serve --threaded -n 1

It seems a bug related to finalizers, I'll dig into it.

@deepj The fix for finalizers should land soon.
The next issue is a bug on our side in the OpenSSL C-ext.
Running without HTTPS seems to work fine with:

NIO4R_PURE=true jt ruby -S falcon --verbose serve --bind http://localhost:9292 --threaded

@eregon Yes, I can confirm, it works without HTTPS. Anyway, good job. And sorry for the spamming of "issues" in the last few days :)

NIO4R_PURE=true falcon --verbose serve --bind http://localhost:9292 --threaded
config.ru:2: warning: `frozen_string_literal' is ignored after any tokens
config.ru:2: warning: `frozen_string_literal' is ignored after any tokens
config.ru:2: warning: `frozen_string_literal' is ignored after any tokens
config.ru:2: warning: `frozen_string_literal' is ignored after any tokens
D, [2018-12-10T19:11:47.162000 #9038] DEBUG -- Async::IO::Socket: Binding to #<Addrinfo: [::1]:9292 TCP>
D, [2018-12-10T19:11:47.208000 #9038] DEBUG -- Async::IO::Socket: Binding to #<Addrinfo: 127.0.0.1:9292 TCP>
D, [2018-12-10T19:11:47.230000 #9038] DEBUG -- <Async::Reactor:0xcfa stopped=false>: Exiting run-loop because finished.
I, [2018-12-10T19:11:47.242000 #9038]  INFO -- : Falcon taking flight! Binding to #<Falcon::Endpoint http://localhost:9292/> [Async::Container::Threaded with concurrency: 4]
I, [2018-12-10T19:11:47.317000 #9038]  INFO -- : Send `kill -USR1 9038` for detailed status :)
I, [2018-12-10T19:11:47.319000 #9038]  INFO -- : Send `kill -USR1 9038` for detailed status :)
I, [2018-12-10T19:11:47.319000 #9038]  INFO -- : Send `kill -USR1 9038` for detailed status :)
I, [2018-12-10T19:11:47.319000 #9038]  INFO -- : Send `kill -USR1 9038` for detailed status :)
D, [2018-12-10T19:16:15.143000 #9038] DEBUG -- #<Falcon::Server:0xd32>: Incoming connnection from #<Addrinfo: 127.0.0.1:58582 TCP> to #<Async::HTTP::Protocol::HTTP1::Server:0xd30>
I, [2018-12-10T19:16:15.539000 #9038]  INFO -- localhost:9292: GET / HTTP/1.1 {"user-agent"=>"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:60.0) Gecko/20100101 Firefox/60.0", "accept"=>["text/html", "application/xhtml+xml", "application/xml;q=0.9", "*/*;q=0.8"], "accept-language"=>["en-US", "en;q=0.5"], "accept-encoding"=>["gzip", "deflate"], "dnt"=>["1"], "connection"=>["keep-alive"], "cookie"=>[], "upgrade-insecure-requests"=>["1"]} from #<Addrinfo: 127.0.0.1:58582 TCP>
I, [2018-12-10T19:16:16.144000 #9038]  INFO -- localhost:9292: 3398] GET / HTTP/1.1 -> 200 {"content-type"=>"text/plain", "server"=>["falcon/0.19.6"], "date"=>["Mon", "10 Dec 2018 18:16:15 GMT"], "content-encoding"=>["gzip"]}; #<Falcon::Adapters::Output length=nil body=Array> | #<Async::HTTP::Body::Deflate 2700.0%> | #<Async::HTTP::Body::Statistics sent 27 bytes; took 560.55ms in total; took 482.95ms until first chunk>
I, [2018-12-10T19:16:16.628000 #9038]  INFO -- localhost:9292: GET /favicon.ico HTTP/1.1 {"user-agent"=>"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:60.0) Gecko/20100101 Firefox/60.0", "accept"=>["text/html", "application/xhtml+xml", "application/xml;q=0.9", "*/*;q=0.8"], "accept-language"=>["en-US", "en;q=0.5"], "accept-encoding"=>["gzip", "deflate"], "dnt"=>["1"], "connection"=>["keep-alive"], "cookie"=>[]} from #<Addrinfo: 127.0.0.1:58582 TCP>
I, [2018-12-10T19:16:16.721000 #9038]  INFO -- localhost:9292: 3428] GET /favicon.ico HTTP/1.1 -> 200 {"content-type"=>"text/plain", "server"=>["falcon/0.19.6"], "date"=>["Mon", "10 Dec 2018 18:16:16 GMT"], "content-encoding"=>["gzip"]}; #<Falcon::Adapters::Output length=nil body=Array> | #<Async::HTTP::Body::Deflate 2700.0%> | #<Async::HTTP::Body::Statistics sent 27 bytes; took 68.96ms in total; took 48.32ms until first chunk>

Thanks for everyone's effort on this.

Will this be in the next RC? when is that due for release?

Releases are around the start of each month, every month. Commits from up to a few days before are usually available.

With fac6b63a93f6c43e1fd1ee73a28c7d7c195b1803, the example hello world app now works with OpenSSL enabled (default):

$ NIO4R_PURE=true jt ruby -S falcon --verbose serve --threaded

There are still a couple further steps, like using NIO4R_PURE automatically with TruffleRuby, and maybe setting threaded as default on TruffleRuby, but the original report should work now, so I closed this issue.
@ioquatix What do you think about these 2 changes?

NIO4R_PURE is slow so it shouldn't be the default.

It should use the native code path where possible.

Threaded can be default but it should be auto detected some how. i.e. you should expose that fork doesn't work. Not sure what the best way is. Perhaps just don't define the function?

@ioquatix

NIO4R_PURE is slow so it shouldn't be the default.

Why is it slow? Because it uses IO.select instead of poll?
If it's just that, maybe it's naive but it sounds like we could internally implement IO.select with poll/epoll/kqueue. I don't know much about those though.

Process.respond_to? :fork is the correct check for this, it's also used in Puma: https://github.com/puma/puma/pull/1630

Why is it slow? Because it uses IO.select instead of poll?

Yes. It's okay for a handful of connections but doesn't scale up very well.

Yes. It's okay for a handful of connections but doesn't scale up very well.

select(2) wouldn't, but maybe the Ruby IO.select could use epoll/kqueue.
What would be the problem then? The cost of re-doing the epoll/kqueue setup on each IO.select call maybe?

select is almost always internally implemented in the OS in terms of epoll/kqueue. Yes, it's slow because the O(N) performance bound for N connections. If N is small, it's okay.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

ivoanjo picture ivoanjo  Â·  31Comments

chrisseaton picture chrisseaton  Â·  27Comments

Ichaelus picture Ichaelus  Â·  21Comments

eregon picture eregon  Â·  35Comments

andrewsheelan picture andrewsheelan  Â·  22Comments