socketry / async-http

MIT License
320 stars 46 forks source link

Issue with JRuby/SSL #30

Open ioquatix opened 5 years ago

ioquatix commented 5 years ago

Hey @ioquatix,

Sorry for the delay, I finally got back to digging into this. I'm not sure if this is jruby specific or if it is something else, but I get these errors when I try to use the cloudflare gem with a proxy:

40.67s    error: <Async::Task:0x80e pipe writer failed> [pid=36119] [2019-10-04 08:59:40 -0400]
               |   ArgumentError: mode not supported for this object: r
               |   → org/nio4r/Selector.java:124 in `register'
               |     /Users/robert.widmer/.rvm/gems/jruby-9.2.8.0/gems/async-1.21.0/lib/async/reactor.rb:129 in `register'
               |     /Users/robert.widmer/.rvm/gems/jruby-9.2.8.0/gems/async-1.21.0/lib/async/wrapper.rb:222 in `wait_for'
               |     /Users/robert.widmer/.rvm/gems/jruby-9.2.8.0/gems/async-1.21.0/lib/async/wrapper.rb:122 in `wait_readable'
               |     /Users/robert.widmer/.rvm/gems/jruby-9.2.8.0/gems/async-io-1.25.0/lib/async/io/generic.rb:218 in `async_send'
               |     /Users/robert.widmer/.rvm/gems/jruby-9.2.8.0/gems/async-io-1.25.0/lib/async/io/generic.rb:67 in `block in read_nonblock'
               |     /Users/robert.widmer/.rvm/gems/jruby-9.2.8.0/gems/async-io-1.25.0/lib/async/io/stream.rb:242 in `fill_read_buffer'
               |     /Users/robert.widmer/.rvm/gems/jruby-9.2.8.0/gems/async-io-1.25.0/lib/async/io/stream.rb:87 in `read_partial'
               |     /Users/robert.widmer/.rvm/gems/jruby-9.2.8.0/gems/async-http-0.48.2/lib/async/http/body/pipe.rb:88 in `writer'
               |     /Users/robert.widmer/.rvm/gems/jruby-9.2.8.0/gems/async-1.21.0/lib/async/task.rb:248 in `block in make_fiber'
40.81s    error: <Async::Task:0x810 pipe writer failed> [pid=36119] [2019-10-04 08:59:40 -0400]
               |   ArgumentError: mode not supported for this object: r
               |   → org/nio4r/Selector.java:124 in `register'
               |     /Users/robert.widmer/.rvm/gems/jruby-9.2.8.0/gems/async-1.21.0/lib/async/reactor.rb:129 in `register'
               |     /Users/robert.widmer/.rvm/gems/jruby-9.2.8.0/gems/async-1.21.0/lib/async/wrapper.rb:222 in `wait_for'
               |     /Users/robert.widmer/.rvm/gems/jruby-9.2.8.0/gems/async-1.21.0/lib/async/wrapper.rb:122 in `wait_readable'
               |     /Users/robert.widmer/.rvm/gems/jruby-9.2.8.0/gems/async-io-1.25.0/lib/async/io/generic.rb:218 in `async_send'
               |     /Users/robert.widmer/.rvm/gems/jruby-9.2.8.0/gems/async-io-1.25.0/lib/async/io/generic.rb:67 in `block in read_nonblock'
               |     /Users/robert.widmer/.rvm/gems/jruby-9.2.8.0/gems/async-io-1.25.0/lib/async/io/stream.rb:242 in `fill_read_buffer'
               |     /Users/robert.widmer/.rvm/gems/jruby-9.2.8.0/gems/async-io-1.25.0/lib/async/io/stream.rb:87 in `read_partial'
               |     /Users/robert.widmer/.rvm/gems/jruby-9.2.8.0/gems/async-http-0.48.2/lib/async/http/body/pipe.rb:88 in `writer'
               |     /Users/robert.widmer/.rvm/gems/jruby-9.2.8.0/gems/async-1.21.0/lib/async/task.rb:248 in `block in make_fiber'
40.87s    error: <Async::Task:0x812 pipe writer failed> [pid=36119] [2019-10-04 08:59:40 -0400]
               |   ArgumentError: mode not supported for this object: r
               |   → org/nio4r/Selector.java:124 in `register'
               |     /Users/robert.widmer/.rvm/gems/jruby-9.2.8.0/gems/async-1.21.0/lib/async/reactor.rb:129 in `register'
               |     /Users/robert.widmer/.rvm/gems/jruby-9.2.8.0/gems/async-1.21.0/lib/async/wrapper.rb:222 in `wait_for'
               |     /Users/robert.widmer/.rvm/gems/jruby-9.2.8.0/gems/async-1.21.0/lib/async/wrapper.rb:122 in `wait_readable'
               |     /Users/robert.widmer/.rvm/gems/jruby-9.2.8.0/gems/async-io-1.25.0/lib/async/io/generic.rb:218 in `async_send'
               |     /Users/robert.widmer/.rvm/gems/jruby-9.2.8.0/gems/async-io-1.25.0/lib/async/io/generic.rb:67 in `block in read_nonblock'
               |     /Users/robert.widmer/.rvm/gems/jruby-9.2.8.0/gems/async-io-1.25.0/lib/async/io/stream.rb:242 in `fill_read_buffer'
               |     /Users/robert.widmer/.rvm/gems/jruby-9.2.8.0/gems/async-io-1.25.0/lib/async/io/stream.rb:87 in `read_partial'
               |     /Users/robert.widmer/.rvm/gems/jruby-9.2.8.0/gems/async-http-0.48.2/lib/async/http/body/pipe.rb:88 in `writer'
               |     /Users/robert.widmer/.rvm/gems/jruby-9.2.8.0/gems/async-1.21.0/lib/async/task.rb:248 in `block in make_fiber'

It appears that it is making a connection to the proxy (from the squid access logs):

1570193980.519    305 127.0.0.1 TCP_TUNNEL/200 39 CONNECT api.cloudflare.com:443 - HIER_DIRECT/2606:4700::6810:1f5a -
1570193980.581     53 127.0.0.1 TCP_TUNNEL/200 39 CONNECT api.cloudflare.com:443 - HIER_DIRECT/2606:4700::6810:1f5a -
1570193980.657     68 127.0.0.1 TCP_TUNNEL/200 39 CONNECT api.cloudflare.com:443 - HIER_DIRECT/2606:4700::6810:1f5a -

This is how I am configuring the cloudflare connection (simplified version):

endpoint = Async::HTTP::Endpoint.new(URI::HTTP.build(Settings.http_proxy.to_h))
client = Async::HTTP::Client.new(endpoint).proxied_endpoint(::Cloudflare::DEFAULT_ENDPOINT)
Cloudflare.connect(endpoint, Settings.cloudflare.credentials, &block)

Any thoughts on things that could potentially be misconfigured?

Originally posted by @rdubya in https://github.com/socketry/async-http/issues/25#issuecomment-538390826

ioquatix commented 5 years ago

What platform are you running on?

ioquatix commented 5 years ago

@headius are there any limitations using pipes on JRuby? i.e. can't select for readability on windows or some other weird shit?

ioquatix commented 5 years ago

@rdubya can you try using NIO4R_PURE=true environment before running your script/command and let me know if that changes anything.

headius commented 5 years ago

@ioquatix Nothing comes to mind, but Windows pipes are a little weird at times. If we can get a reproduction with -Xbacktrace.style=full passed to JRuby I can look into it (probably best as a JRuby issue).

rdubya commented 5 years ago

@ioquatix I am running on os x 10.14 with JRuby 9.2.8.0. My java env is:

java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)

I ran with the pure env variable and got this result:

52.77s    error: <Async::Task:0x80e connected to #<Addrinfo: 127.0.0.1:3128> [fd=56] failed> [pid=59724] [2019-10-07 10:47:06 -0400]
               |   Java::JavaNioChannels::IllegalSelectorException: 
               |   → sun.nio.ch.SelectorImpl.register(SelectorImpl.java:128) 
               |     java.nio.channels.spi.AbstractSelectableChannel.register(AbstractSelectableChannel.java:212) 
               |     java.nio.channels.SelectableChannel.register(SelectableChannel.java:280) 
               |     org.jruby.ext.openssl.SSLSocket$JavaSocketChannel.register(SSLSocket.java:1267) 
               |     org.jruby.ext.openssl.SSLSocket.waitSelect(SSLSocket.java:453) 
               |     org.jruby.ext.openssl.SSLSocket.doHandshake(SSLSocket.java:573) 
               |     org.jruby.ext.openssl.SSLSocket.connectImpl(SSLSocket.java:294) 
               |     org.jruby.ext.openssl.SSLSocket.connect_nonblock(SSLSocket.java:276) 
               |     org.jruby.ext.openssl.SSLSocket$INVOKER$i$connect_nonblock.call(SSLSocket$INVOKER$i$connect_nonblock.gen): 
               |     org.jruby.internal.runtime.methods.JavaMethod$JavaMethodN.call(JavaMethod.java:833) 
               |     org.jruby.RubyClass.finvoke(RubyClass.java:505) 
               |     org.jruby.RubyBasicObject.send(RubyBasicObject.java:1741) 
               |     org.jruby.RubyBasicObject$INVOKER$i$send.call(RubyBasicObject$INVOKER$i$send.gen): 
               |     org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:332) 
               |     org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:86) 
               |     org.jruby.ir.instructions.CallBase.interpret(CallBase.java:540) 
               |     org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:361) 
               |     org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:105) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:92) 
               |     org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:332) 
               |     org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:86) 
               |     org.jruby.ir.instructions.CallBase.interpret(CallBase.java:540) 
               |     org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:361) 
               |     org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72) 
               |     org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:114) 
               |     org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:151) 
               |     org.jruby.runtime.IRBlockBody.call(IRBlockBody.java:79) 
               |     org.jruby.runtime.Block.call(Block.java:129) 
               |     org.jruby.RubyProc.call(RubyProc.java:295) 
               |     org.jruby.internal.runtime.methods.ProcMethod.call(ProcMethod.java:64) 
               |     org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:196) 
               |     org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:192) 
               |     org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:141) 
               |     org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:345) 
               |     org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:105) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:92) 
               |     org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:84) 
               |     org.jruby.ir.instructions.CallBase.interpret(CallBase.java:540) 
               |     org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:361) 
               |     org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:105) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:92) 
               |     org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:332) 
               |     org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:86) 
               |     org.jruby.ir.instructions.CallBase.interpret(CallBase.java:540) 
               |     org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:361) 
               |     org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72) 
               |     org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:80) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:138) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:125) 
               |     org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:192) 
               |     org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:141) 
               |     org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:345) 
               |     org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72) 
               |     org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:114) 
               |     org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:151) 
               |     org.jruby.runtime.IRBlockBody.call(IRBlockBody.java:79) 
               |     org.jruby.runtime.Block.call(Block.java:129) 
               |     org.jruby.RubyProc.call(RubyProc.java:295) 
               |     org.jruby.RubyProc.call(RubyProc.java:274) 
               |     org.jruby.RubyProc.call(RubyProc.java:266) 
               |     org.jruby.RubyProc$INVOKER$i$0$0$call.call(RubyProc$INVOKER$i$0$0$call.gen): 
               |     org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:196) 
               |     org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:192) 
               |     org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:141) 
               |     org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:345) 
               |     org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72) 
               |     org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:80) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:138) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:125) 
               |     org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:192) 
               |     org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:141) 
               |     org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:345) 
               |     org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72) 
               |     org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:80) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:138) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:125) 
               |     org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:192) 
               |     org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:141) 
               |     org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:345) 
               |     org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72) 
               |     org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:80) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:138) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:125) 
               |     org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:192) 
               |     org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:141) 
               |     org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:345) 
               |     org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72) 
               |     org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:80) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:138) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:125) 
               |     org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:192) 
               |     org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:141) 
               |     org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:345) 
               |     org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72) 
               |     org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:86) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:171) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:158) 
               |     org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:200) 
               |     org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:375) 
               |     org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:174) 
               |     org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:316) 
               |     org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:105) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:92) 
               |     org.jruby.ir.runtime.IRRuntimeHelpers.instanceSuper(IRRuntimeHelpers.java:1156) 
               |     org.jruby.ir.instructions.InstanceSuperInstr.interpret(InstanceSuperInstr.java:84) 
               |     org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:361) 
               |     org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72) 
               |     org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:86) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:171) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:158) 
               |     org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:200) 
               |     org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:375) 
               |     org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:174) 
               |     org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:316) 
               |     org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72) 
               |     org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:86) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:171) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:158) 
               |     org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:200) 
               |     org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:375) 
               |     org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:174) 
               |     org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:316) 
               |     org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72) 
               |     org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:114) 
               |     org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:151) 
               |     org.jruby.runtime.IRBlockBody.call(IRBlockBody.java:79) 
               |     org.jruby.runtime.Block.call(Block.java:129) 
               |     org.jruby.RubyProc.call(RubyProc.java:295) 
               |     org.jruby.internal.runtime.methods.ProcMethod.call(ProcMethod.java:64) 
               |     org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:196) 
               |     org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:192) 
               |     org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:354) 
               |     org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:143) 
               |     org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:345) 
               |     org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72) 
               |     org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:80) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:138) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:125) 
               |     org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:192) 
               |     org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:354) 
               |     org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:143) 
               |     org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:345) 
               |     org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:105) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:92) 
               |     org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:332) 
               |     org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:86) 
               |     org.jruby.RubySymbol$SymbolProcBody.yieldInner(RubySymbol.java:1435) 
               |     org.jruby.RubySymbol$SymbolProcBody.yield(RubySymbol.java:1441) 
               |     org.jruby.runtime.BlockBody.call(BlockBody.java:108) 
               |     org.jruby.runtime.Block.call(Block.java:129) 
               |     org.jruby.RubyProc.call(RubyProc.java:295) 
               |     org.jruby.RubyProc.call(RubyProc.java:274) 
               |     org.jruby.RubyProc.call(RubyProc.java:270) 
               |     org.jruby.RubyKernel.tap(RubyKernel.java:1883) 
               |     org.jruby.RubyKernel$INVOKER$s$0$0$tap.call(RubyKernel$INVOKER$s$0$0$tap.gen): 
               |     org.jruby.internal.runtime.methods.JavaMethod$JavaMethodZeroBlock.call(JavaMethod.java:555) 
               |     org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:332) 
               |     org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:86) 
               |     org.jruby.ir.instructions.CallBase.interpret(CallBase.java:540) 
               |     org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:361) 
               |     org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72) 
               |     org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:92) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:204) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:191) 
               |     org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:208) 
               |     org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:396) 
               |     org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:205) 
               |     org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:325) 
               |     org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:105) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:92) 
               |     org.jruby.RubyClass.finvoke(RubyClass.java:505) 
               |     org.jruby.runtime.Helpers.invoke(Helpers.java:442) 
               |     org.jruby.RubyBasicObject.callMethod(RubyBasicObject.java:394) 
               |     org.jruby.RubyEnumerator.each(RubyEnumerator.java:329) 
               |     org.jruby.RubyEnumerator$INVOKER$i$each.call(RubyEnumerator$INVOKER$i$each.gen): 
               |     org.jruby.RubyClass.finvoke(RubyClass.java:493) 
               |     org.jruby.runtime.Helpers.invoke(Helpers.java:430) 
               |     org.jruby.RubyEnumerable.each(RubyEnumerable.java:129) 
               |     org.jruby.RubyEnumerable.first(RubyEnumerable.java:409) 
               |     org.jruby.RubyEnumerable$INVOKER$s$first.call(RubyEnumerable$INVOKER$s$first.gen): 
               |     org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:354) 
               |     org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:143) 
               |     org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:345) 
               |     org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72) 
               |     org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:86) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:171) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:158) 
               |     org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:200) 
               |     org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:375) 
               |     org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:174) 
               |     org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:316) 
               |     org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:105) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:92) 
               |     org.jruby.runtime.MethodBlockBody.doYield(MethodBlockBody.java:70) 
               |     org.jruby.runtime.BlockBody.yield(BlockBody.java:116) 
               |     org.jruby.runtime.Block.yield(Block.java:170) 
               |     org.jruby.ir.runtime.IRRuntimeHelpers.yield(IRRuntimeHelpers.java:477) 
               |     org.jruby.ir.instructions.YieldInstr.interpret(YieldInstr.java:85) 
               |     org.jruby.ir.interpreter.StartupInterpreterEngine.processOtherOp(StartupInterpreterEngine.java:178) 
               |     org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:104) 
               |     org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:114) 
               |     org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:151) 
               |     org.jruby.runtime.IRBlockBody.doYield(IRBlockBody.java:194) 
               |     org.jruby.runtime.BlockBody.yield(BlockBody.java:125) 
               |     org.jruby.runtime.Block.yieldArray(Block.java:182) 
               |     org.jruby.ir.runtime.IRRuntimeHelpers.yield(IRRuntimeHelpers.java:477) 
               |     org.jruby.ir.instructions.YieldInstr.interpret(YieldInstr.java:85) 
               |     org.jruby.ir.interpreter.StartupInterpreterEngine.processOtherOp(StartupInterpreterEngine.java:178) 
               |     org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:104) 
               |     org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:114) 
               |     org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:151) 
               |     org.jruby.runtime.IRBlockBody.yieldSpecific(IRBlockBody.java:89) 
               |     org.jruby.runtime.Block.yieldSpecific(Block.java:139) 
               |     org.jruby.ext.fiber.ThreadFiber.lambda$createThread$0(ThreadFiber.java:299) 
               |     java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 
               |     java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 
               |     java.lang.Thread.run(Thread.java:748) 
Traceback (most recent call last):
       16: from org.jruby.ir.instructions.CallBase.interpret(CallBase.java:540)
       15: from org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:86)
       14: from org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:332)
       13: from org.jruby.RubyBasicObject$INVOKER$i$send.call(RubyBasicObject$INVOKER$i$send.gen)
       12: from org.jruby.RubyBasicObject.send(RubyBasicObject.java:1741)
       11: from org.jruby.RubyClass.finvoke(RubyClass.java:505)
       10: from org.jruby.internal.runtime.methods.JavaMethod$JavaMethodN.call(JavaMethod.java:833)
        9: from org.jruby.ext.openssl.SSLSocket$INVOKER$i$connect_nonblock.call(SSLSocket$INVOKER$i$connect_nonblock.gen)
        8: from org.jruby.ext.openssl.SSLSocket.connect_nonblock(SSLSocket.java:276)
        7: from org.jruby.ext.openssl.SSLSocket.connectImpl(SSLSocket.java:294)
        6: from org.jruby.ext.openssl.SSLSocket.doHandshake(SSLSocket.java:573)
        5: from org.jruby.ext.openssl.SSLSocket.waitSelect(SSLSocket.java:453)
        4: from org.jruby.ext.openssl.SSLSocket$JavaSocketChannel.register(SSLSocket.java:1267)
        3: from java.nio.channels.SelectableChannel.register(SelectableChannel.java:280)
        2: from java.nio.channels.spi.AbstractSelectableChannel.register(AbstractSelectableChannel.java:212)
        1: from sun.nio.ch.SelectorImpl.register(SelectorImpl.java:128)
Java::JavaNioChannels::IllegalSelectorException ()

@headius When I run it with the backtrace style as full (and the native option off), I get this output:

 7.17s    error: <Async::Task:0x80e pipe writer failed> [pid=60403] [2019-10-07 10:55:45 -0400]
               |   ArgumentError: mode not supported for this object: r
               |   → java/lang/Thread.java:1559 in `getStackTrace'
               |     org/jruby/runtime/backtrace/TraceType.java:237 in `getBacktraceData'
               |     org/jruby/runtime/backtrace/TraceType.java:48 in `getBacktrace'
               |     org/jruby/RubyException.java:409 in `captureBacktrace'
               |     org/jruby/exceptions/RaiseException.java:114 in `preRaise'
               |     org/jruby/exceptions/RaiseException.java:95 in `preRaise'
               |     org/jruby/exceptions/RaiseException.java:61 in `<init>'
               |     org/jruby/exceptions/Exception.java:38 in `<init>'
               |     org/jruby/exceptions/StandardError.java:38 in `<init>'
               |     org/jruby/exceptions/ArgumentError.java:38 in `<init>'
               |     org/jruby/RubyArgumentError.java:56 in `constructThrowable'
               |     org/jruby/RubyException.java:387 in `toThrowable'
               |     org/jruby/exceptions/RaiseException.java:71 in `from'
               |     org/jruby/Ruby.java:4300 in `newRaiseException'
               |     org/jruby/Ruby.java:3657 in `newArgumentError'
               |     org/nio4r/Selector.java:124 in `register'
               |     org/nio4r/Selector$INVOKER$i$2$0$register.gen:-1 in `call'
               |     org/jruby/runtime/callsite/CachingCallSite.java:203 in `call'
               |     org/jruby/ir/interpreter/InterpreterEngine.java:325 in `processCall'
               |     org/jruby/ir/interpreter/StartupInterpreterEngine.java:72 in `interpret'
               |     org/jruby/internal/runtime/methods/MixedModeIRMethod.java:105 in `INTERPRET_METHOD'
               |     /Users/robert.widmer/.rvm/gems/jruby-9.2.8.0/gems/async-1.21.0/lib/async/reactor.rb:129 in `register'
               |     org/jruby/internal/runtime/methods/MixedModeIRMethod.java:92 in `call'
               |     org/jruby/runtime/callsite/CachingCallSite.java:84 in `call'
               |     org/jruby/ir/instructions/CallBase.java:540 in `interpret'
               |     org/jruby/ir/interpreter/InterpreterEngine.java:361 in `processCall'
               |     org/jruby/ir/interpreter/StartupInterpreterEngine.java:72 in `interpret'
               |     org/jruby/ir/interpreter/InterpreterEngine.java:86 in `interpret'
               |     org/jruby/internal/runtime/methods/MixedModeIRMethod.java:171 in `INTERPRET_METHOD'
               |     /Users/robert.widmer/.rvm/gems/jruby-9.2.8.0/gems/async-1.21.0/lib/async/wrapper.rb:222 in `wait_for'
               |     org/jruby/internal/runtime/methods/MixedModeIRMethod.java:158 in `call'
               |     org/jruby/internal/runtime/methods/DynamicMethod.java:200 in `call'
               |     org/jruby/runtime/callsite/CachingCallSite.java:172 in `call'
               |     org/jruby/ir/interpreter/InterpreterEngine.java:316 in `processCall'
               |     org/jruby/ir/interpreter/StartupInterpreterEngine.java:72 in `interpret'
               |     org/jruby/ir/interpreter/InterpreterEngine.java:86 in `interpret'
               |     org/jruby/internal/runtime/methods/MixedModeIRMethod.java:171 in `INTERPRET_METHOD'
               |     /Users/robert.widmer/.rvm/gems/jruby-9.2.8.0/gems/async-1.21.0/lib/async/wrapper.rb:122 in `wait_readable'
               |     org/jruby/internal/runtime/methods/MixedModeIRMethod.java:158 in `call'
               |     org/jruby/internal/runtime/methods/DynamicMethod.java:200 in `call'
               |     org/jruby/runtime/callsite/CachingCallSite.java:172 in `call'
               |     org/jruby/ir/interpreter/InterpreterEngine.java:316 in `processCall'
               |     org/jruby/ir/interpreter/StartupInterpreterEngine.java:72 in `interpret'
               |     org/jruby/internal/runtime/methods/MixedModeIRMethod.java:105 in `INTERPRET_METHOD'
               |     /Users/robert.widmer/.rvm/gems/jruby-9.2.8.0/gems/async-io-1.25.0/lib/async/io/generic.rb:218 in `async_send'
               |     org/jruby/internal/runtime/methods/MixedModeIRMethod.java:92 in `call'
               |     org/jruby/runtime/callsite/CachingCallSite.java:84 in `call'
               |     org/jruby/ir/instructions/CallBase.java:540 in `interpret'
               |     org/jruby/ir/interpreter/InterpreterEngine.java:361 in `processCall'
               |     org/jruby/ir/interpreter/StartupInterpreterEngine.java:72 in `interpret'
               |     org/jruby/ir/interpreter/Interpreter.java:114 in `INTERPRET_BLOCK'
               |     /Users/robert.widmer/.rvm/gems/jruby-9.2.8.0/gems/async-io-1.25.0/lib/async/io/generic.rb:67 in `block in read_nonblock'
               |     org/jruby/runtime/MixedModeIRBlockBody.java:151 in `commonYieldPath'
               |     org/jruby/runtime/IRBlockBody.java:79 in `call'
               |     org/jruby/runtime/Block.java:129 in `call'
               |     org/jruby/RubyProc.java:295 in `call'
               |     org/jruby/internal/runtime/methods/ProcMethod.java:64 in `call'
               |     org/jruby/runtime/callsite/CachingCallSite.java:84 in `call'
               |     org/jruby/ir/instructions/CallBase.java:540 in `interpret'
               |     org/jruby/ir/interpreter/InterpreterEngine.java:361 in `processCall'
               |     org/jruby/ir/interpreter/StartupInterpreterEngine.java:72 in `interpret'
               |     org/jruby/ir/interpreter/InterpreterEngine.java:80 in `interpret'
               |     org/jruby/internal/runtime/methods/MixedModeIRMethod.java:138 in `INTERPRET_METHOD'
               |     /Users/robert.widmer/.rvm/gems/jruby-9.2.8.0/gems/async-io-1.25.0/lib/async/io/stream.rb:242 in `fill_read_buffer'
               |     org/jruby/internal/runtime/methods/MixedModeIRMethod.java:125 in `call'
               |     org/jruby/internal/runtime/methods/DynamicMethod.java:192 in `call'
               |     org/jruby/runtime/callsite/CachingCallSite.java:141 in `call'
               |     org/jruby/ir/interpreter/InterpreterEngine.java:345 in `processCall'
               |     org/jruby/ir/interpreter/StartupInterpreterEngine.java:72 in `interpret'
               |     org/jruby/ir/interpreter/InterpreterEngine.java:80 in `interpret'
               |     org/jruby/internal/runtime/methods/MixedModeIRMethod.java:138 in `INTERPRET_METHOD'
               |     /Users/robert.widmer/.rvm/gems/jruby-9.2.8.0/gems/async-io-1.25.0/lib/async/io/stream.rb:87 in `read_partial'
               |     org/jruby/internal/runtime/methods/MixedModeIRMethod.java:125 in `call'
               |     org/jruby/internal/runtime/methods/DynamicMethod.java:192 in `call'
               |     org/jruby/runtime/callsite/CachingCallSite.java:354 in `cacheAndCall'
               |     org/jruby/runtime/callsite/CachingCallSite.java:143 in `call'
               |     org/jruby/ir/interpreter/InterpreterEngine.java:345 in `processCall'
               |     org/jruby/ir/interpreter/StartupInterpreterEngine.java:72 in `interpret'
               |     org/jruby/internal/runtime/methods/MixedModeIRMethod.java:105 in `INTERPRET_METHOD'
               |     /Users/robert.widmer/.rvm/gems/jruby-9.2.8.0/gems/async-http-0.48.2/lib/async/http/body/pipe.rb:88 in `writer'
               |     org/jruby/internal/runtime/methods/MixedModeIRMethod.java:92 in `call'
               |     org/jruby/runtime/MethodBlockBody.java:75 in `doYield'
               |     org/jruby/runtime/BlockBody.java:125 in `yield'
               |     org/jruby/runtime/Block.java:182 in `yieldArray'
               |     org/jruby/ir/runtime/IRRuntimeHelpers.java:477 in `yield'
               |     org/jruby/ir/instructions/YieldInstr.java:85 in `interpret'
               |     org/jruby/ir/interpreter/StartupInterpreterEngine.java:178 in `processOtherOp'
               |     org/jruby/ir/interpreter/StartupInterpreterEngine.java:104 in `interpret'
               |     org/jruby/ir/interpreter/Interpreter.java:114 in `INTERPRET_BLOCK'
               |     /Users/robert.widmer/.rvm/gems/jruby-9.2.8.0/gems/async-1.21.0/lib/async/task.rb:248 in `block in make_fiber'
               |     org/jruby/runtime/MixedModeIRBlockBody.java:151 in `commonYieldPath'
               |     org/jruby/runtime/IRBlockBody.java:89 in `yieldSpecific'
               |     org/jruby/runtime/Block.java:139 in `yieldSpecific'
               |     org/jruby/ext/fiber/ThreadFiber.java:299 in `lambda$createThread$0'
               |     java/util/concurrent/ThreadPoolExecutor.java:1149 in `runWorker'
               |     java/util/concurrent/ThreadPoolExecutor.java:624 in `run'
               |     java/lang/Thread.java:748 in `run'
 7.34s    error: <Async::Task:0x810 pipe writer failed> [pid=60403] [2019-10-07 10:55:45 -0400]
               |   ArgumentError: mode not supported for this object: r
               |   → java/lang/Thread.java:1559 in `getStackTrace'
               |     org/jruby/runtime/backtrace/TraceType.java:237 in `getBacktraceData'
               |     org/jruby/runtime/backtrace/TraceType.java:48 in `getBacktrace'
               |     org/jruby/RubyException.java:409 in `captureBacktrace'
               |     org/jruby/exceptions/RaiseException.java:114 in `preRaise'
               |     org/jruby/exceptions/RaiseException.java:95 in `preRaise'
               |     org/jruby/exceptions/RaiseException.java:61 in `<init>'
               |     org/jruby/exceptions/Exception.java:38 in `<init>'
               |     org/jruby/exceptions/StandardError.java:38 in `<init>'
               |     org/jruby/exceptions/ArgumentError.java:38 in `<init>'
               |     org/jruby/RubyArgumentError.java:56 in `constructThrowable'
               |     org/jruby/RubyException.java:387 in `toThrowable'
               |     org/jruby/exceptions/RaiseException.java:71 in `from'
               |     org/jruby/Ruby.java:4300 in `newRaiseException'
               |     org/jruby/Ruby.java:3657 in `newArgumentError'
               |     org/nio4r/Selector.java:124 in `register'
               |     org/nio4r/Selector$INVOKER$i$2$0$register.gen:-1 in `call'
               |     org/jruby/runtime/callsite/CachingCallSite.java:203 in `call'
               |     org/jruby/ir/interpreter/InterpreterEngine.java:325 in `processCall'
               |     org/jruby/ir/interpreter/StartupInterpreterEngine.java:72 in `interpret'
               |     org/jruby/internal/runtime/methods/MixedModeIRMethod.java:105 in `INTERPRET_METHOD'
               |     /Users/robert.widmer/.rvm/gems/jruby-9.2.8.0/gems/async-1.21.0/lib/async/reactor.rb:129 in `register'
               |     org/jruby/internal/runtime/methods/MixedModeIRMethod.java:92 in `call'
               |     org/jruby/runtime/callsite/CachingCallSite.java:84 in `call'
               |     org/jruby/ir/instructions/CallBase.java:540 in `interpret'
               |     org/jruby/ir/interpreter/InterpreterEngine.java:361 in `processCall'
               |     org/jruby/ir/interpreter/StartupInterpreterEngine.java:72 in `interpret'
               |     org/jruby/ir/interpreter/InterpreterEngine.java:86 in `interpret'
               |     org/jruby/internal/runtime/methods/MixedModeIRMethod.java:171 in `INTERPRET_METHOD'
               |     /Users/robert.widmer/.rvm/gems/jruby-9.2.8.0/gems/async-1.21.0/lib/async/wrapper.rb:222 in `wait_for'
               |     org/jruby/internal/runtime/methods/MixedModeIRMethod.java:158 in `call'
               |     org/jruby/internal/runtime/methods/DynamicMethod.java:200 in `call'
               |     org/jruby/runtime/callsite/CachingCallSite.java:172 in `call'
               |     org/jruby/ir/interpreter/InterpreterEngine.java:316 in `processCall'
               |     org/jruby/ir/interpreter/StartupInterpreterEngine.java:72 in `interpret'
               |     org/jruby/ir/interpreter/InterpreterEngine.java:86 in `interpret'
               |     org/jruby/internal/runtime/methods/MixedModeIRMethod.java:171 in `INTERPRET_METHOD'
               |     /Users/robert.widmer/.rvm/gems/jruby-9.2.8.0/gems/async-1.21.0/lib/async/wrapper.rb:122 in `wait_readable'
               |     org/jruby/internal/runtime/methods/MixedModeIRMethod.java:158 in `call'
               |     org/jruby/internal/runtime/methods/DynamicMethod.java:200 in `call'
               |     org/jruby/runtime/callsite/CachingCallSite.java:172 in `call'
               |     org/jruby/ir/interpreter/InterpreterEngine.java:316 in `processCall'
               |     org/jruby/ir/interpreter/StartupInterpreterEngine.java:72 in `interpret'
               |     org/jruby/internal/runtime/methods/MixedModeIRMethod.java:105 in `INTERPRET_METHOD'
               |     /Users/robert.widmer/.rvm/gems/jruby-9.2.8.0/gems/async-io-1.25.0/lib/async/io/generic.rb:218 in `async_send'
               |     org/jruby/internal/runtime/methods/MixedModeIRMethod.java:92 in `call'
               |     org/jruby/runtime/callsite/CachingCallSite.java:84 in `call'
               |     org/jruby/ir/instructions/CallBase.java:540 in `interpret'
               |     org/jruby/ir/interpreter/InterpreterEngine.java:361 in `processCall'
               |     org/jruby/ir/interpreter/StartupInterpreterEngine.java:72 in `interpret'
               |     org/jruby/ir/interpreter/Interpreter.java:114 in `INTERPRET_BLOCK'
               |     /Users/robert.widmer/.rvm/gems/jruby-9.2.8.0/gems/async-io-1.25.0/lib/async/io/generic.rb:67 in `block in read_nonblock'
               |     org/jruby/runtime/MixedModeIRBlockBody.java:151 in `commonYieldPath'
               |     org/jruby/runtime/IRBlockBody.java:79 in `call'
               |     org/jruby/runtime/Block.java:129 in `call'
               |     org/jruby/RubyProc.java:295 in `call'
               |     org/jruby/internal/runtime/methods/ProcMethod.java:64 in `call'
               |     org/jruby/runtime/callsite/CachingCallSite.java:84 in `call'
               |     org/jruby/ir/instructions/CallBase.java:540 in `interpret'
               |     org/jruby/ir/interpreter/InterpreterEngine.java:361 in `processCall'
               |     org/jruby/ir/interpreter/StartupInterpreterEngine.java:72 in `interpret'
               |     org/jruby/ir/interpreter/InterpreterEngine.java:80 in `interpret'
               |     org/jruby/internal/runtime/methods/MixedModeIRMethod.java:138 in `INTERPRET_METHOD'
               |     /Users/robert.widmer/.rvm/gems/jruby-9.2.8.0/gems/async-io-1.25.0/lib/async/io/stream.rb:242 in `fill_read_buffer'
               |     org/jruby/internal/runtime/methods/MixedModeIRMethod.java:125 in `call'
               |     org/jruby/internal/runtime/methods/DynamicMethod.java:192 in `call'
               |     org/jruby/runtime/callsite/CachingCallSite.java:141 in `call'
               |     org/jruby/ir/interpreter/InterpreterEngine.java:345 in `processCall'
               |     org/jruby/ir/interpreter/StartupInterpreterEngine.java:72 in `interpret'
               |     org/jruby/ir/interpreter/InterpreterEngine.java:80 in `interpret'
               |     org/jruby/internal/runtime/methods/MixedModeIRMethod.java:138 in `INTERPRET_METHOD'
               |     /Users/robert.widmer/.rvm/gems/jruby-9.2.8.0/gems/async-io-1.25.0/lib/async/io/stream.rb:87 in `read_partial'
               |     org/jruby/internal/runtime/methods/MixedModeIRMethod.java:125 in `call'
               |     org/jruby/internal/runtime/methods/DynamicMethod.java:192 in `call'
               |     org/jruby/runtime/callsite/CachingCallSite.java:141 in `call'
               |     org/jruby/ir/interpreter/InterpreterEngine.java:345 in `processCall'
               |     org/jruby/ir/interpreter/StartupInterpreterEngine.java:72 in `interpret'
               |     org/jruby/internal/runtime/methods/MixedModeIRMethod.java:105 in `INTERPRET_METHOD'
               |     /Users/robert.widmer/.rvm/gems/jruby-9.2.8.0/gems/async-http-0.48.2/lib/async/http/body/pipe.rb:88 in `writer'
               |     org/jruby/internal/runtime/methods/MixedModeIRMethod.java:92 in `call'
               |     org/jruby/runtime/MethodBlockBody.java:75 in `doYield'
               |     org/jruby/runtime/BlockBody.java:125 in `yield'
               |     org/jruby/runtime/Block.java:182 in `yieldArray'
               |     org/jruby/ir/runtime/IRRuntimeHelpers.java:477 in `yield'
               |     org/jruby/ir/instructions/YieldInstr.java:85 in `interpret'
               |     org/jruby/ir/interpreter/StartupInterpreterEngine.java:178 in `processOtherOp'
               |     org/jruby/ir/interpreter/StartupInterpreterEngine.java:104 in `interpret'
               |     org/jruby/ir/interpreter/Interpreter.java:114 in `INTERPRET_BLOCK'
               |     /Users/robert.widmer/.rvm/gems/jruby-9.2.8.0/gems/async-1.21.0/lib/async/task.rb:248 in `block in make_fiber'
               |     org/jruby/runtime/MixedModeIRBlockBody.java:151 in `commonYieldPath'
               |     org/jruby/runtime/IRBlockBody.java:89 in `yieldSpecific'
               |     org/jruby/runtime/Block.java:139 in `yieldSpecific'
               |     org/jruby/ext/fiber/ThreadFiber.java:299 in `lambda$createThread$0'
               |     java/util/concurrent/ThreadPoolExecutor.java:1149 in `runWorker'
               |     java/util/concurrent/ThreadPoolExecutor.java:624 in `run'
               |     java/lang/Thread.java:748 in `run'
 7.39s    error: <Async::Task:0x812 pipe writer failed> [pid=60403] [2019-10-07 10:55:45 -0400]
               |   ArgumentError: mode not supported for this object: r
               |   → java/lang/Thread.java:1559 in `getStackTrace'
               |     org/jruby/runtime/backtrace/TraceType.java:237 in `getBacktraceData'
               |     org/jruby/runtime/backtrace/TraceType.java:48 in `getBacktrace'
               |     org/jruby/RubyException.java:409 in `captureBacktrace'
               |     org/jruby/exceptions/RaiseException.java:114 in `preRaise'
               |     org/jruby/exceptions/RaiseException.java:95 in `preRaise'
               |     org/jruby/exceptions/RaiseException.java:61 in `<init>'
               |     org/jruby/exceptions/Exception.java:38 in `<init>'
               |     org/jruby/exceptions/StandardError.java:38 in `<init>'
               |     org/jruby/exceptions/ArgumentError.java:38 in `<init>'
               |     org/jruby/RubyArgumentError.java:56 in `constructThrowable'
               |     org/jruby/RubyException.java:387 in `toThrowable'
               |     org/jruby/exceptions/RaiseException.java:71 in `from'
               |     org/jruby/Ruby.java:4300 in `newRaiseException'
               |     org/jruby/Ruby.java:3657 in `newArgumentError'
               |     org/nio4r/Selector.java:124 in `register'
               |     org/nio4r/Selector$INVOKER$i$2$0$register.gen:-1 in `call'
               |     org/jruby/runtime/callsite/CachingCallSite.java:203 in `call'
               |     org/jruby/ir/interpreter/InterpreterEngine.java:325 in `processCall'
               |     org/jruby/ir/interpreter/StartupInterpreterEngine.java:72 in `interpret'
               |     org/jruby/internal/runtime/methods/MixedModeIRMethod.java:105 in `INTERPRET_METHOD'
               |     /Users/robert.widmer/.rvm/gems/jruby-9.2.8.0/gems/async-1.21.0/lib/async/reactor.rb:129 in `register'
               |     org/jruby/internal/runtime/methods/MixedModeIRMethod.java:92 in `call'
               |     org/jruby/runtime/callsite/CachingCallSite.java:84 in `call'
               |     org/jruby/ir/instructions/CallBase.java:540 in `interpret'
               |     org/jruby/ir/interpreter/InterpreterEngine.java:361 in `processCall'
               |     org/jruby/ir/interpreter/StartupInterpreterEngine.java:72 in `interpret'
               |     org/jruby/ir/interpreter/InterpreterEngine.java:86 in `interpret'
               |     org/jruby/internal/runtime/methods/MixedModeIRMethod.java:171 in `INTERPRET_METHOD'
               |     /Users/robert.widmer/.rvm/gems/jruby-9.2.8.0/gems/async-1.21.0/lib/async/wrapper.rb:222 in `wait_for'
               |     org/jruby/internal/runtime/methods/MixedModeIRMethod.java:158 in `call'
               |     org/jruby/internal/runtime/methods/DynamicMethod.java:200 in `call'
               |     org/jruby/runtime/callsite/CachingCallSite.java:172 in `call'
               |     org/jruby/ir/interpreter/InterpreterEngine.java:316 in `processCall'
               |     org/jruby/ir/interpreter/StartupInterpreterEngine.java:72 in `interpret'
               |     org/jruby/ir/interpreter/InterpreterEngine.java:86 in `interpret'
               |     org/jruby/internal/runtime/methods/MixedModeIRMethod.java:171 in `INTERPRET_METHOD'
               |     /Users/robert.widmer/.rvm/gems/jruby-9.2.8.0/gems/async-1.21.0/lib/async/wrapper.rb:122 in `wait_readable'
               |     org/jruby/internal/runtime/methods/MixedModeIRMethod.java:158 in `call'
               |     org/jruby/internal/runtime/methods/DynamicMethod.java:200 in `call'
               |     org/jruby/runtime/callsite/CachingCallSite.java:172 in `call'
               |     org/jruby/ir/interpreter/InterpreterEngine.java:316 in `processCall'
               |     org/jruby/ir/interpreter/StartupInterpreterEngine.java:72 in `interpret'
               |     org/jruby/internal/runtime/methods/MixedModeIRMethod.java:105 in `INTERPRET_METHOD'
               |     /Users/robert.widmer/.rvm/gems/jruby-9.2.8.0/gems/async-io-1.25.0/lib/async/io/generic.rb:218 in `async_send'
               |     org/jruby/internal/runtime/methods/MixedModeIRMethod.java:92 in `call'
               |     org/jruby/runtime/callsite/CachingCallSite.java:84 in `call'
               |     org/jruby/ir/instructions/CallBase.java:540 in `interpret'
               |     org/jruby/ir/interpreter/InterpreterEngine.java:361 in `processCall'
               |     org/jruby/ir/interpreter/StartupInterpreterEngine.java:72 in `interpret'
               |     org/jruby/ir/interpreter/Interpreter.java:114 in `INTERPRET_BLOCK'
               |     /Users/robert.widmer/.rvm/gems/jruby-9.2.8.0/gems/async-io-1.25.0/lib/async/io/generic.rb:67 in `block in read_nonblock'
               |     org/jruby/runtime/MixedModeIRBlockBody.java:151 in `commonYieldPath'
               |     org/jruby/runtime/IRBlockBody.java:79 in `call'
               |     org/jruby/runtime/Block.java:129 in `call'
               |     org/jruby/RubyProc.java:295 in `call'
               |     org/jruby/internal/runtime/methods/ProcMethod.java:64 in `call'
               |     org/jruby/runtime/callsite/CachingCallSite.java:84 in `call'
               |     org/jruby/ir/instructions/CallBase.java:540 in `interpret'
               |     org/jruby/ir/interpreter/InterpreterEngine.java:361 in `processCall'
               |     org/jruby/ir/interpreter/StartupInterpreterEngine.java:72 in `interpret'
               |     org/jruby/ir/interpreter/InterpreterEngine.java:80 in `interpret'
               |     org/jruby/internal/runtime/methods/MixedModeIRMethod.java:138 in `INTERPRET_METHOD'
               |     /Users/robert.widmer/.rvm/gems/jruby-9.2.8.0/gems/async-io-1.25.0/lib/async/io/stream.rb:242 in `fill_read_buffer'
               |     org/jruby/internal/runtime/methods/MixedModeIRMethod.java:125 in `call'
               |     org/jruby/internal/runtime/methods/DynamicMethod.java:192 in `call'
               |     org/jruby/runtime/callsite/CachingCallSite.java:141 in `call'
               |     org/jruby/ir/interpreter/InterpreterEngine.java:345 in `processCall'
               |     org/jruby/ir/interpreter/StartupInterpreterEngine.java:72 in `interpret'
               |     org/jruby/ir/interpreter/InterpreterEngine.java:80 in `interpret'
               |     org/jruby/internal/runtime/methods/MixedModeIRMethod.java:138 in `INTERPRET_METHOD'
               |     /Users/robert.widmer/.rvm/gems/jruby-9.2.8.0/gems/async-io-1.25.0/lib/async/io/stream.rb:87 in `read_partial'
               |     org/jruby/internal/runtime/methods/MixedModeIRMethod.java:125 in `call'
               |     org/jruby/internal/runtime/methods/DynamicMethod.java:192 in `call'
               |     org/jruby/runtime/callsite/CachingCallSite.java:141 in `call'
               |     org/jruby/ir/interpreter/InterpreterEngine.java:345 in `processCall'
               |     org/jruby/ir/interpreter/StartupInterpreterEngine.java:72 in `interpret'
               |     org/jruby/internal/runtime/methods/MixedModeIRMethod.java:105 in `INTERPRET_METHOD'
               |     /Users/robert.widmer/.rvm/gems/jruby-9.2.8.0/gems/async-http-0.48.2/lib/async/http/body/pipe.rb:88 in `writer'
               |     org/jruby/internal/runtime/methods/MixedModeIRMethod.java:92 in `call'
               |     org/jruby/runtime/MethodBlockBody.java:75 in `doYield'
               |     org/jruby/runtime/BlockBody.java:125 in `yield'
               |     org/jruby/runtime/Block.java:182 in `yieldArray'
               |     org/jruby/ir/runtime/IRRuntimeHelpers.java:477 in `yield'
               |     org/jruby/ir/instructions/YieldInstr.java:85 in `interpret'
               |     org/jruby/ir/interpreter/StartupInterpreterEngine.java:178 in `processOtherOp'
               |     org/jruby/ir/interpreter/StartupInterpreterEngine.java:104 in `interpret'
               |     org/jruby/ir/interpreter/Interpreter.java:114 in `INTERPRET_BLOCK'
               |     /Users/robert.widmer/.rvm/gems/jruby-9.2.8.0/gems/async-1.21.0/lib/async/task.rb:248 in `block in make_fiber'
               |     org/jruby/runtime/MixedModeIRBlockBody.java:151 in `commonYieldPath'
               |     org/jruby/runtime/IRBlockBody.java:89 in `yieldSpecific'
               |     org/jruby/runtime/Block.java:139 in `yieldSpecific'
               |     org/jruby/ext/fiber/ThreadFiber.java:299 in `lambda$createThread$0'
               |     java/util/concurrent/ThreadPoolExecutor.java:1149 in `runWorker'
               |     java/util/concurrent/ThreadPoolExecutor.java:624 in `run'
               |     java/lang/Thread.java:748 in `run'
  7.4s    error: <Async::Task:0x814 connected to #<Addrinfo: 127.0.0.1:3128> [fd=55] failed> [pid=60403] [2019-10-07 10:55:45 -0400]
               |   Java::JavaNioChannels::IllegalSelectorException: 
               |   → sun.nio.ch.SelectorImpl.register(SelectorImpl.java:128) 
               |     java.nio.channels.spi.AbstractSelectableChannel.register(AbstractSelectableChannel.java:212) 
               |     java.nio.channels.SelectableChannel.register(SelectableChannel.java:280) 
               |     org.jruby.ext.openssl.SSLSocket$JavaSocketChannel.register(SSLSocket.java:1267) 
               |     org.jruby.ext.openssl.SSLSocket.waitSelect(SSLSocket.java:453) 
               |     org.jruby.ext.openssl.SSLSocket.doHandshake(SSLSocket.java:573) 
               |     org.jruby.ext.openssl.SSLSocket.connectImpl(SSLSocket.java:294) 
               |     org.jruby.ext.openssl.SSLSocket.connect_nonblock(SSLSocket.java:276) 
               |     org.jruby.ext.openssl.SSLSocket$INVOKER$i$connect_nonblock.call(SSLSocket$INVOKER$i$connect_nonblock.gen): 
               |     org.jruby.internal.runtime.methods.JavaMethod$JavaMethodN.call(JavaMethod.java:833) 
               |     org.jruby.RubyClass.finvoke(RubyClass.java:505) 
               |     org.jruby.RubyBasicObject.send(RubyBasicObject.java:1741) 
               |     org.jruby.RubyBasicObject$INVOKER$i$send.call(RubyBasicObject$INVOKER$i$send.gen): 
               |     org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:332) 
               |     org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:86) 
               |     org.jruby.ir.instructions.CallBase.interpret(CallBase.java:540) 
               |     org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:361) 
               |     org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:105) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:92) 
               |     org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:332) 
               |     org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:86) 
               |     org.jruby.ir.instructions.CallBase.interpret(CallBase.java:540) 
               |     org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:361) 
               |     org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72) 
               |     org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:114) 
               |     org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:151) 
               |     org.jruby.runtime.IRBlockBody.call(IRBlockBody.java:79) 
               |     org.jruby.runtime.Block.call(Block.java:129) 
               |     org.jruby.RubyProc.call(RubyProc.java:295) 
               |     org.jruby.internal.runtime.methods.ProcMethod.call(ProcMethod.java:64) 
               |     org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:196) 
               |     org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:192) 
               |     org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:141) 
               |     org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:345) 
               |     org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:105) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:92) 
               |     org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:84) 
               |     org.jruby.ir.instructions.CallBase.interpret(CallBase.java:540) 
               |     org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:361) 
               |     org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:105) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:92) 
               |     org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:332) 
               |     org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:86) 
               |     org.jruby.ir.instructions.CallBase.interpret(CallBase.java:540) 
               |     org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:361) 
               |     org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72) 
               |     org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:80) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:138) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:125) 
               |     org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:192) 
               |     org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:141) 
               |     org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:345) 
               |     org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72) 
               |     org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:114) 
               |     org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:151) 
               |     org.jruby.runtime.IRBlockBody.call(IRBlockBody.java:79) 
               |     org.jruby.runtime.Block.call(Block.java:129) 
               |     org.jruby.RubyProc.call(RubyProc.java:295) 
               |     org.jruby.RubyProc.call(RubyProc.java:274) 
               |     org.jruby.RubyProc.call(RubyProc.java:266) 
               |     org.jruby.RubyProc$INVOKER$i$0$0$call.call(RubyProc$INVOKER$i$0$0$call.gen): 
               |     org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:196) 
               |     org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:192) 
               |     org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:141) 
               |     org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:345) 
               |     org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72) 
               |     org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:80) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:138) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:125) 
               |     org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:192) 
               |     org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:141) 
               |     org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:345) 
               |     org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72) 
               |     org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:80) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:138) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:125) 
               |     org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:192) 
               |     org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:141) 
               |     org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:345) 
               |     org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72) 
               |     org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:80) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:138) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:125) 
               |     org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:192) 
               |     org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:141) 
               |     org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:345) 
               |     org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72) 
               |     org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:80) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:138) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:125) 
               |     org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:192) 
               |     org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:141) 
               |     org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:345) 
               |     org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72) 
               |     org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:86) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:171) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:158) 
               |     org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:200) 
               |     org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:375) 
               |     org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:174) 
               |     org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:316) 
               |     org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:105) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:92) 
               |     org.jruby.ir.runtime.IRRuntimeHelpers.instanceSuper(IRRuntimeHelpers.java:1156) 
               |     org.jruby.ir.instructions.InstanceSuperInstr.interpret(InstanceSuperInstr.java:84) 
               |     org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:361) 
               |     org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72) 
               |     org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:86) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:171) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:158) 
               |     org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:200) 
               |     org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:375) 
               |     org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:174) 
               |     org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:316) 
               |     org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72) 
               |     org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:86) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:171) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:158) 
               |     org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:200) 
               |     org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:375) 
               |     org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:174) 
               |     org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:316) 
               |     org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72) 
               |     org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:114) 
               |     org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:151) 
               |     org.jruby.runtime.IRBlockBody.call(IRBlockBody.java:79) 
               |     org.jruby.runtime.Block.call(Block.java:129) 
               |     org.jruby.RubyProc.call(RubyProc.java:295) 
               |     org.jruby.internal.runtime.methods.ProcMethod.call(ProcMethod.java:64) 
               |     org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:196) 
               |     org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:192) 
               |     org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:354) 
               |     org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:143) 
               |     org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:345) 
               |     org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72) 
               |     org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:80) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:138) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:125) 
               |     org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:192) 
               |     org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:354) 
               |     org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:143) 
               |     org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:345) 
               |     org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:105) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:92) 
               |     org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:332) 
               |     org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:86) 
               |     org.jruby.RubySymbol$SymbolProcBody.yieldInner(RubySymbol.java:1435) 
               |     org.jruby.RubySymbol$SymbolProcBody.yield(RubySymbol.java:1441) 
               |     org.jruby.runtime.BlockBody.call(BlockBody.java:108) 
               |     org.jruby.runtime.Block.call(Block.java:129) 
               |     org.jruby.RubyProc.call(RubyProc.java:295) 
               |     org.jruby.RubyProc.call(RubyProc.java:274) 
               |     org.jruby.RubyProc.call(RubyProc.java:270) 
               |     org.jruby.RubyKernel.tap(RubyKernel.java:1883) 
               |     org.jruby.RubyKernel$INVOKER$s$0$0$tap.call(RubyKernel$INVOKER$s$0$0$tap.gen): 
               |     org.jruby.internal.runtime.methods.JavaMethod$JavaMethodZeroBlock.call(JavaMethod.java:555) 
               |     org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:332) 
               |     org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:86) 
               |     org.jruby.ir.instructions.CallBase.interpret(CallBase.java:540) 
               |     org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:361) 
               |     org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72) 
               |     org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:92) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:204) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:191) 
               |     org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:208) 
               |     org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:396) 
               |     org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:205) 
               |     org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:325) 
               |     org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:105) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:92) 
               |     org.jruby.RubyClass.finvoke(RubyClass.java:505) 
               |     org.jruby.runtime.Helpers.invoke(Helpers.java:442) 
               |     org.jruby.RubyBasicObject.callMethod(RubyBasicObject.java:394) 
               |     org.jruby.RubyEnumerator.each(RubyEnumerator.java:329) 
               |     org.jruby.RubyEnumerator$INVOKER$i$each.call(RubyEnumerator$INVOKER$i$each.gen): 
               |     org.jruby.RubyClass.finvoke(RubyClass.java:493) 
               |     org.jruby.runtime.Helpers.invoke(Helpers.java:430) 
               |     org.jruby.RubyEnumerable.each(RubyEnumerable.java:129) 
               |     org.jruby.RubyEnumerable.first(RubyEnumerable.java:409) 
               |     org.jruby.RubyEnumerable$INVOKER$s$first.call(RubyEnumerable$INVOKER$s$first.gen): 
               |     org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:354) 
               |     org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:143) 
               |     org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:345) 
               |     org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72) 
               |     org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:86) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:171) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:158) 
               |     org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:200) 
               |     org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:375) 
               |     org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:174) 
               |     org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:316) 
               |     org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:105) 
               |     org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:92) 
               |     org.jruby.runtime.MethodBlockBody.doYield(MethodBlockBody.java:70) 
               |     org.jruby.runtime.BlockBody.yield(BlockBody.java:116) 
               |     org.jruby.runtime.Block.yield(Block.java:170) 
               |     org.jruby.ir.runtime.IRRuntimeHelpers.yield(IRRuntimeHelpers.java:477) 
               |     org.jruby.ir.instructions.YieldInstr.interpret(YieldInstr.java:85) 
               |     org.jruby.ir.interpreter.StartupInterpreterEngine.processOtherOp(StartupInterpreterEngine.java:178) 
               |     org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:104) 
               |     org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:114) 
               |     org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:151) 
               |     org.jruby.runtime.IRBlockBody.doYield(IRBlockBody.java:194) 
               |     org.jruby.runtime.BlockBody.yield(BlockBody.java:125) 
               |     org.jruby.runtime.Block.yieldArray(Block.java:182) 
               |     org.jruby.ir.runtime.IRRuntimeHelpers.yield(IRRuntimeHelpers.java:477) 
               |     org.jruby.ir.instructions.YieldInstr.interpret(YieldInstr.java:85) 
               |     org.jruby.ir.interpreter.StartupInterpreterEngine.processOtherOp(StartupInterpreterEngine.java:178) 
               |     org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:104) 
               |     org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:114) 
               |     org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:151) 
               |     org.jruby.runtime.IRBlockBody.yieldSpecific(IRBlockBody.java:89) 
               |     org.jruby.runtime.Block.yieldSpecific(Block.java:139) 
               |     org.jruby.ext.fiber.ThreadFiber.lambda$createThread$0(ThreadFiber.java:299) 
               |     java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 
               |     java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 
               |     java.lang.Thread.run(Thread.java:748) 
Traceback (most recent call last):
       16: from org.jruby.ir.instructions.CallBase.interpret(CallBase.java:540)
       15: from org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:86)
       14: from org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:332)
       13: from org.jruby.RubyBasicObject$INVOKER$i$send.call(RubyBasicObject$INVOKER$i$send.gen)
       12: from org.jruby.RubyBasicObject.send(RubyBasicObject.java:1741)
       11: from org.jruby.RubyClass.finvoke(RubyClass.java:505)
       10: from org.jruby.internal.runtime.methods.JavaMethod$JavaMethodN.call(JavaMethod.java:833)
        9: from org.jruby.ext.openssl.SSLSocket$INVOKER$i$connect_nonblock.call(SSLSocket$INVOKER$i$connect_nonblock.gen)
        8: from org.jruby.ext.openssl.SSLSocket.connect_nonblock(SSLSocket.java:276)
        7: from org.jruby.ext.openssl.SSLSocket.connectImpl(SSLSocket.java:294)
        6: from org.jruby.ext.openssl.SSLSocket.doHandshake(SSLSocket.java:573)
        5: from org.jruby.ext.openssl.SSLSocket.waitSelect(SSLSocket.java:453)
        4: from org.jruby.ext.openssl.SSLSocket$JavaSocketChannel.register(SSLSocket.java:1267)
        3: from java.nio.channels.SelectableChannel.register(SelectableChannel.java:280)
        2: from java.nio.channels.spi.AbstractSelectableChannel.register(AbstractSelectableChannel.java:212)
        1: from sun.nio.ch.SelectorImpl.register(SelectorImpl.java:128)
Java::JavaNioChannels::IllegalSelectorException ()

One interesting difference to note is that with NIO4R_PURE=true I only get 1 error but with it off I see 3 errors.

ioquatix commented 5 years ago

Okay this is enough information for me to repro, I'll try to do it.

rdubya commented 5 years ago

@ioquatix Have you had a chance to take a look at this? Is there anything else you need from me?

ioquatix commented 5 years ago

@rdubya Sorry, will review this weekend.

ioquatix commented 5 years ago

@rdubya sorry for the delay in attending to this issue, I have been completely snowed under with work and an upcoming presentation about async. I am working on this now.

ioquatix commented 5 years ago

@rdubya have you tried running your code using CRuby?

ioquatix commented 5 years ago

https://github.com/jruby/jruby/issues/5944 is blocking this issue.

rdubya commented 5 years ago

Awesome. Thanks for digging into it.