A rails engine for customer care.
Personal Homepage
user page
A modern datepicker
astjohn/coffee-script-project-template 1
Build system for CoffeeScript projects compiled with Google's Closure Compiler
Spell check dictionaries for Sublime Text.
astjohn/has_threaded_comments 1
Add an entire threaded comment system to your Rails application with only 7 lines of code.
pushState + ajax = pjax
A lightweight, flexible library for Facebook with support for OAuth authentication, the Graph and REST APIs, realtime updates, and test users.
Bare minimum websockets (hybi13/RFC) client for Android
issue closedjruby/jruby-openssl
"closing inbound before receiving peer's close_notify" errors
I've been getting intermittent javax.net.ssl.SSLException: closing inbound before receiving peer's close_notify
errors for a few months now, if memory serves I believe it was only after updating to JRuby 9.2.13.0 (I could be wrong about that though)
In any case, there's actually a good way to reliably reproduce it! I connect to my MySQL 8.0 database through SSL with a config like the following:
production:
adapter: mysql2
encoding: utf8mb4
collation: utf8mb4_unicode_ci
reconnect: false
database: xxx
pool: 10
username: xxx
password: xxx
host: db-8-0.xxxxx.us-east-1.rds.amazonaws.com
read_timeout: 120
write_timeout: 120
connect_timeout: 10
connection_alive_timeout: 120
properties:
useSSL: true
requireSSL: true
verifyServerCertificate: true
trustCertificateKeyStoreUrl: "file:/rds-ca/java-rds-ca"
trustCertificateKeyStorePassword: changeit
enabledTLSProtocols: "TLSv1.2"
enabledSSLCipherSuites: "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384"
autoReconnect: false
connectTimeout: 10000
socketTimeout: 120000
serverTimezone: "America/Los_Angeles"
and when I run RAILS_ENV=production bundle exec rake db:migrate
, every single time I get error reports like the following (although the command does exit with status 0):
Thu Dec 31 06:57:14 PST 2020 WARN: Caught while disconnecting...
EXCEPTION STACK TRACE:
** BEGIN NESTED EXCEPTION **
javax.net.ssl.SSLException
MESSAGE: closing inbound before receiving peer's close_notify
STACKTRACE:
javax.net.ssl.SSLException: closing inbound before receiving peer's close_notify
at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:133)
at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:117)
at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:337)
at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:293)
at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:284)
at java.base/sun.security.ssl.SSLSocketImpl.shutdownInput(SSLSocketImpl.java:742)
at java.base/sun.security.ssl.SSLSocketImpl.shutdownInput(SSLSocketImpl.java:721)
at com.mysql.jdbc.MysqlIO.quit(MysqlIO.java:2249)
at com.mysql.jdbc.ConnectionImpl.realClose(ConnectionImpl.java:4232)
at com.mysql.jdbc.ConnectionImpl.close(ConnectionImpl.java:1472)
at arjdbc.jdbc.RubyJdbcConnection.close(RubyJdbcConnection.java:3700)
at arjdbc.jdbc.RubyJdbcConnection.setConnection(RubyJdbcConnection.java:2890)
at arjdbc.jdbc.RubyJdbcConnection.disconnect(RubyJdbcConnection.java:661)
at arjdbc.jdbc.RubyJdbcConnection$INVOKER$i$0$0$disconnect.call(RubyJdbcConnection$INVOKER$i$0$0$disconnect.gen)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:354)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:143)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:345)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:80)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:121)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:108)
at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:192)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:354)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:143)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:345)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:116)
at org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:137)
at org.jruby.runtime.IRBlockBody.doYield(IRBlockBody.java:166)
at org.jruby.runtime.BlockBody.yield(BlockBody.java:108)
at org.jruby.runtime.Block.yield(Block.java:184)
at org.jruby.RubyArray.each(RubyArray.java:1809)
at org.jruby.RubyArray$INVOKER$i$0$0$each.call(RubyArray$INVOKER$i$0$0$each.gen)
at org.jruby.internal.runtime.methods.JavaMethod$JavaMethodZeroBlock.call(JavaMethod.java:555)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:332)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:86)
at org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:93)
at org.jruby.ir.instructions.CallBase.interpret(CallBase.java:546)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:361)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:116)
at org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:137)
at org.jruby.runtime.IRBlockBody.yieldSpecific(IRBlockBody.java:70)
at org.jruby.runtime.Block.yieldSpecific(Block.java:153)
at org.jruby.ir.targets.YieldSite.yieldSpecific(YieldSite.java:156)
at home.web.$_dot_rvm.rubies.jruby_minus_9_dot_2_dot_14_dot_0.lib.ruby.stdlib.monitor.RUBY$method$mon_synchronize$0(/home/web/.rvm/rubies/jruby-9.2.14.0/lib/ruby/stdlib/monitor.rb:235)
at home.web.$_dot_rvm.rubies.jruby_minus_9_dot_2_dot_14_dot_0.lib.ruby.stdlib.monitor.RUBY$method$mon_synchronize$0$__VARARGS__(/home/web/.rvm/rubies/jruby-9.2.14.0/lib/ruby/stdlib/monitor.rb)
at org.jruby.internal.runtime.methods.CompiledIRMethod.call(CompiledIRMethod.java:80)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:70)
at org.jruby.internal.runtime.methods.AliasMethod.call(AliasMethod.java:137)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:332)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:86)
at org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:93)
at org.jruby.ir.instructions.CallBase.interpret(CallBase.java:546)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:361)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:116)
at org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:137)
at org.jruby.runtime.IRBlockBody.yieldSpecific(IRBlockBody.java:70)
at org.jruby.runtime.Block.yieldSpecific(Block.java:153)
at org.jruby.ir.runtime.IRRuntimeHelpers.yieldSpecific(IRRuntimeHelpers.java:503)
at org.jruby.ir.instructions.YieldInstr.interpret(YieldInstr.java:76)
at org.jruby.ir.interpreter.StartupInterpreterEngine.processOtherOp(StartupInterpreterEngine.java:178)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:104)
at org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:116)
at org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:137)
at org.jruby.runtime.IRBlockBody.yieldSpecific(IRBlockBody.java:70)
at org.jruby.runtime.Block.yieldSpecific(Block.java:153)
at org.jruby.ir.runtime.IRRuntimeHelpers.yieldSpecific(IRRuntimeHelpers.java:503)
at org.jruby.ir.instructions.YieldInstr.interpret(YieldInstr.java:76)
at org.jruby.ir.interpreter.StartupInterpreterEngine.processOtherOp(StartupInterpreterEngine.java:178)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:104)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:86)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:73)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:332)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:86)
at org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:93)
at org.jruby.ir.instructions.CallBase.interpret(CallBase.java:546)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:361)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:86)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:156)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:143)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:386)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:184)
at org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:191)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:337)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:86)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:156)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:143)
at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:200)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:375)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:174)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:316)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:80)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:121)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:108)
at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:192)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:354)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:143)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:345)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:86)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:156)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:143)
at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:200)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:375)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:174)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:316)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:86)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:156)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:143)
at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:200)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:375)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:174)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:316)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:86)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:156)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:143)
at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:200)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:375)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:174)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:316)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:116)
at org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:137)
at org.jruby.runtime.IRBlockBody.call(IRBlockBody.java:60)
at org.jruby.runtime.Block.call(Block.java:143)
at org.jruby.RubyProc.call(RubyProc.java:299)
at org.jruby.RubyProc$INVOKER$i$call.call(RubyProc$INVOKER$i$call.gen)
at org.jruby.internal.runtime.methods.JavaMethod$JavaMethodZeroOrOneOrTwoOrNBlock.call(JavaMethod.java:371)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:203)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:325)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:116)
at org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:137)
at org.jruby.runtime.IRBlockBody.doYield(IRBlockBody.java:166)
at org.jruby.runtime.BlockBody.yield(BlockBody.java:108)
at org.jruby.runtime.Block.yield(Block.java:184)
at org.jruby.RubyArray.each(RubyArray.java:1809)
at org.jruby.RubyArray$INVOKER$i$0$0$each.call(RubyArray$INVOKER$i$0$0$each.gen)
at org.jruby.internal.runtime.methods.JavaMethod$JavaMethodZeroBlock.call(JavaMethod.java:555)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:84)
at org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:93)
at org.jruby.ir.instructions.CallBase.interpret(CallBase.java:546)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:361)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:86)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:156)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:143)
at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:200)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:172)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:316)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:116)
at org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:137)
at org.jruby.runtime.IRBlockBody.yieldSpecific(IRBlockBody.java:70)
at org.jruby.runtime.Block.yieldSpecific(Block.java:153)
at org.jruby.ir.runtime.IRRuntimeHelpers.yieldSpecific(IRRuntimeHelpers.java:503)
at org.jruby.ir.instructions.YieldInstr.interpret(YieldInstr.java:76)
at org.jruby.ir.interpreter.StartupInterpreterEngine.processOtherOp(StartupInterpreterEngine.java:178)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:104)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:86)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:73)
at org.jruby.internal.runtime.methods.AliasMethod.call(AliasMethod.java:137)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:332)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:86)
at org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:93)
at org.jruby.ir.instructions.CallBase.interpret(CallBase.java:546)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:361)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:92)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:191)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:178)
at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:208)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:396)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:205)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:325)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:86)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:73)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:332)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:86)
at org.jruby.ir.instructions.CallBase.interpret(CallBase.java:549)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:361)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:86)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:156)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:143)
at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:200)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:375)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:174)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:316)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:116)
at org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:137)
at org.jruby.runtime.IRBlockBody.doYield(IRBlockBody.java:166)
at org.jruby.runtime.BlockBody.yield(BlockBody.java:108)
at org.jruby.runtime.Block.yield(Block.java:184)
at org.jruby.RubyArray.each(RubyArray.java:1809)
at org.jruby.RubyArray$INVOKER$i$0$0$each.call(RubyArray$INVOKER$i$0$0$each.gen)
at org.jruby.internal.runtime.methods.JavaMethod$JavaMethodZeroBlock.call(JavaMethod.java:555)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:332)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:86)
at org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:93)
at org.jruby.ir.instructions.CallBase.interpret(CallBase.java:546)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:361)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:116)
at org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:137)
at org.jruby.runtime.IRBlockBody.yieldSpecific(IRBlockBody.java:70)
at org.jruby.runtime.Block.yieldSpecific(Block.java:153)
at org.jruby.ir.runtime.IRRuntimeHelpers.yieldSpecific(IRRuntimeHelpers.java:503)
at org.jruby.ir.instructions.YieldInstr.interpret(YieldInstr.java:76)
at org.jruby.ir.interpreter.StartupInterpreterEngine.processOtherOp(StartupInterpreterEngine.java:178)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:104)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:86)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:73)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:332)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:86)
at org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:93)
at org.jruby.ir.instructions.CallBase.interpret(CallBase.java:546)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:361)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:80)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:121)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:108)
at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:192)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:354)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:143)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:345)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:116)
at org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:137)
at org.jruby.runtime.IRBlockBody.yieldSpecific(IRBlockBody.java:70)
at org.jruby.runtime.Block.yieldSpecific(Block.java:153)
at org.jruby.ir.runtime.IRRuntimeHelpers.yieldSpecific(IRRuntimeHelpers.java:503)
at org.jruby.ir.instructions.YieldInstr.interpret(YieldInstr.java:76)
at org.jruby.ir.interpreter.StartupInterpreterEngine.processOtherOp(StartupInterpreterEngine.java:178)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:104)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:86)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:73)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:332)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:86)
at org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:93)
at org.jruby.ir.instructions.CallBase.interpret(CallBase.java:546)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:361)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:80)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:121)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:108)
at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:192)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:354)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:143)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:345)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.ir.interpreter.Interpreter.INTERPRET_ROOT(Interpreter.java:96)
at org.jruby.ir.interpreter.Interpreter.execute(Interpreter.java:81)
at org.jruby.ir.interpreter.Interpreter.execute(Interpreter.java:30)
at org.jruby.ir.IRTranslator.execute(IRTranslator.java:42)
at org.jruby.Ruby.runInterpreter(Ruby.java:1218)
at org.jruby.Ruby.loadFile(Ruby.java:2785)
at org.jruby.runtime.load.LibrarySearcher$ResourceLibrary.load(LibrarySearcher.java:234)
at org.jruby.runtime.load.LibrarySearcher$FoundLibrary.load(LibrarySearcher.java:34)
at org.jruby.runtime.load.LoadService.load(LoadService.java:343)
at org.jruby.RubyKernel.loadCommon(RubyKernel.java:1039)
at org.jruby.RubyKernel.load(RubyKernel.java:1009)
at org.jruby.RubyKernel$INVOKER$s$load.call(RubyKernel$INVOKER$s$load.gen)
at org.jruby.internal.runtime.methods.JavaMethod$JavaMethodOneOrNBlock.call(JavaMethod.java:417)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:375)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:174)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:316)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.ir.interpreter.Interpreter.INTERPRET_ROOT(Interpreter.java:96)
at org.jruby.ir.interpreter.Interpreter.execute(Interpreter.java:81)
at org.jruby.ir.interpreter.Interpreter.execute(Interpreter.java:30)
at org.jruby.ir.IRTranslator.execute(IRTranslator.java:42)
at org.jruby.Ruby.runInterpreter(Ruby.java:1218)
at org.jruby.Ruby.loadFile(Ruby.java:2785)
at org.jruby.runtime.load.LibrarySearcher$ResourceLibrary.load(LibrarySearcher.java:234)
at org.jruby.runtime.load.LibrarySearcher$FoundLibrary.load(LibrarySearcher.java:34)
at org.jruby.runtime.load.LoadService.load(LoadService.java:343)
at org.jruby.RubyKernel.loadCommon(RubyKernel.java:1039)
at org.jruby.RubyKernel.load(RubyKernel.java:1009)
at org.jruby.RubyKernel$INVOKER$s$load.call(RubyKernel$INVOKER$s$load.gen)
at org.jruby.internal.runtime.methods.JavaMethod$JavaMethodOneOrNBlock.call(JavaMethod.java:417)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:375)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:174)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:316)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:86)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:73)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:332)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:86)
at org.jruby.ir.instructions.CallBase.interpret(CallBase.java:549)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:361)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:80)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:121)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:108)
at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:192)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:354)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:143)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:345)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:86)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:73)
at org.jruby.RubyClass.finvokeWithRefinements(RubyClass.java:514)
at org.jruby.RubyBasicObject.send(RubyBasicObject.java:1755)
at org.jruby.RubyBasicObject$INVOKER$i$send.call(RubyBasicObject$INVOKER$i$send.gen)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:332)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:86)
at org.jruby.ir.instructions.CallBase.interpret(CallBase.java:549)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:361)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:86)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:73)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:332)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:86)
at org.jruby.ir.instructions.CallBase.interpret(CallBase.java:549)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:361)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:92)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:191)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:178)
at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:208)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:396)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:205)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:325)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:86)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:73)
at org.jruby.ir.runtime.IRRuntimeHelpers.unresolvedSuper(IRRuntimeHelpers.java:1206)
at org.jruby.ir.instructions.ClassSuperInstr.interpret(ClassSuperInstr.java:86)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:361)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:86)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:73)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:332)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:86)
at org.jruby.ir.instructions.CallBase.interpret(CallBase.java:549)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:361)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:86)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:73)
at org.jruby.ir.runtime.IRRuntimeHelpers.unresolvedSuper(IRRuntimeHelpers.java:1206)
at org.jruby.ir.instructions.ClassSuperInstr.interpret(ClassSuperInstr.java:86)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:361)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:92)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:191)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:178)
at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:208)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:396)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:205)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:325)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:116)
at org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:137)
at org.jruby.runtime.IRBlockBody.yieldSpecific(IRBlockBody.java:70)
at org.jruby.runtime.Block.yieldSpecific(Block.java:153)
at org.jruby.ir.runtime.IRRuntimeHelpers.yieldSpecific(IRRuntimeHelpers.java:503)
at org.jruby.ir.instructions.YieldInstr.interpret(YieldInstr.java:76)
at org.jruby.ir.interpreter.StartupInterpreterEngine.processOtherOp(StartupInterpreterEngine.java:178)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:104)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:86)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:73)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:332)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:86)
at org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:93)
at org.jruby.ir.instructions.CallBase.interpret(CallBase.java:546)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:361)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.ir.interpreter.Interpreter.INTERPRET_ROOT(Interpreter.java:96)
at org.jruby.ir.interpreter.Interpreter.execute(Interpreter.java:81)
at org.jruby.ir.interpreter.Interpreter.execute(Interpreter.java:30)
at org.jruby.ir.IRTranslator.execute(IRTranslator.java:42)
at org.jruby.Ruby.runInterpreter(Ruby.java:1218)
at org.jruby.Ruby.loadFile(Ruby.java:2785)
at org.jruby.runtime.load.LibrarySearcher$ResourceLibrary.load(LibrarySearcher.java:234)
at org.jruby.runtime.load.LibrarySearcher$FoundLibrary.load(LibrarySearcher.java:34)
at org.jruby.runtime.load.LoadService.load(LoadService.java:343)
at org.jruby.RubyKernel.loadCommon(RubyKernel.java:1039)
at org.jruby.RubyKernel.load(RubyKernel.java:1009)
at org.jruby.RubyKernel$INVOKER$s$load.call(RubyKernel$INVOKER$s$load.gen)
at org.jruby.internal.runtime.methods.JavaMethod$JavaMethodOneOrNBlock.call(JavaMethod.java:417)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:375)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:174)
at home.web.$_dot_rvm.rubies.jruby_minus_9_dot_2_dot_14_dot_0.bin.bundle.invokeOther8:load(/home/web/.rvm/rubies/jruby-9.2.14.0/bin/bundle:23)
at home.web.$_dot_rvm.rubies.jruby_minus_9_dot_2_dot_14_dot_0.bin.bundle.RUBY$script(/home/web/.rvm/rubies/jruby-9.2.14.0/bin/bundle:23)
at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:710)
at org.jruby.ir.Compiler$1.load(Compiler.java:89)
at org.jruby.Ruby.runScript(Ruby.java:1205)
at org.jruby.Ruby.runNormally(Ruby.java:1128)
at org.jruby.Ruby.runNormally(Ruby.java:1146)
at org.jruby.Ruby.runFromMain(Ruby.java:958)
at org.jruby.Main.doRunFromMain(Main.java:400)
at org.jruby.Main.internalRun(Main.java:292)
at org.jruby.Main.run(Main.java:234)
at org.jruby.Main.main(Main.java:206)
** END NESTED EXCEPTION **
Just to be clear, I am also seeing them a bunch in a background process that makes tons of SSL connections, although they aren't frequent enough to be a huge concern or anything.
The exception above is from my Ubuntu 18.04 machine running JRuby 9.2.14.0
closed time in 14 days
mohamedhafezissue commentjruby/jruby-openssl
"closing inbound before receiving peer's close_notify" errors
Taking a closer look at all my stack traces, I don't think this actually has anything to do with jruby-openssl, I think it's a mysql connector issue. Closing and moving to ar-jdbc
comment created time in 14 days
issue commentjruby/jruby-openssl
ECDSA key cannot be loaded / is not sent to server
I have found error OpenSSL::PKey::ECError: Neither PUB key nor PRIV key:
PKeyEC.java:326 to be correlated with https://github.com/jruby/jruby-openssl/issues/189
comment created time in 18 days
issue openedjruby/jruby-openssl
Add OpenSSL::PKey::EC::Point to_octet_string
to_octet_string
was added to ruby/openssl on Dec 14, 2017 and released in ruby/openssl 2.1.0.
It is only mentioned in jruby-openssl here.
created time in 19 days
issue openedjruby/jruby-openssl
"closing inbound before receiving peer's close_notify" errors
I've been getting intermittent javax.net.ssl.SSLException: closing inbound before receiving peer's close_notify
errors for a few months now, if memory serves I believe it was only after updating to JRuby 9.2.13.0 (I could be wrong about that though)
In any case, there's actually a good way to reliably reproduce it! I connect to my MySQL db through SSL with a config like the following:
production:
adapter: mysql2
encoding: utf8mb4
collation: utf8mb4_unicode_ci
reconnect: false
database: xxx
pool: 10
username: xxx
password: xxx
host: db-8-0.xxxxx.us-east-1.rds.amazonaws.com
read_timeout: 120
write_timeout: 120
connect_timeout: 10
connection_alive_timeout: 120
properties:
useSSL: true
requireSSL: true
verifyServerCertificate: true
trustCertificateKeyStoreUrl: "file:/rds-ca/java-rds-ca"
trustCertificateKeyStorePassword: changeit
enabledTLSProtocols: "TLSv1.2"
enabledSSLCipherSuites: "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384"
autoReconnect: false
connectTimeout: 10000
socketTimeout: 120000
serverTimezone: "America/Los_Angeles"
and when I run RAILS_ENV=production bundle exec rake db:migrate
, every single time I get error reports like the following (although the command does exit with status 0):
Thu Dec 31 06:57:14 PST 2020 WARN: Caught while disconnecting...
EXCEPTION STACK TRACE:
** BEGIN NESTED EXCEPTION **
javax.net.ssl.SSLException
MESSAGE: closing inbound before receiving peer's close_notify
STACKTRACE:
javax.net.ssl.SSLException: closing inbound before receiving peer's close_notify
at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:133)
at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:117)
at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:337)
at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:293)
at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:284)
at java.base/sun.security.ssl.SSLSocketImpl.shutdownInput(SSLSocketImpl.java:742)
at java.base/sun.security.ssl.SSLSocketImpl.shutdownInput(SSLSocketImpl.java:721)
at com.mysql.jdbc.MysqlIO.quit(MysqlIO.java:2249)
at com.mysql.jdbc.ConnectionImpl.realClose(ConnectionImpl.java:4232)
at com.mysql.jdbc.ConnectionImpl.close(ConnectionImpl.java:1472)
at arjdbc.jdbc.RubyJdbcConnection.close(RubyJdbcConnection.java:3700)
at arjdbc.jdbc.RubyJdbcConnection.setConnection(RubyJdbcConnection.java:2890)
at arjdbc.jdbc.RubyJdbcConnection.disconnect(RubyJdbcConnection.java:661)
at arjdbc.jdbc.RubyJdbcConnection$INVOKER$i$0$0$disconnect.call(RubyJdbcConnection$INVOKER$i$0$0$disconnect.gen)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:354)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:143)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:345)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:80)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:121)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:108)
at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:192)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:354)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:143)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:345)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:116)
at org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:137)
at org.jruby.runtime.IRBlockBody.doYield(IRBlockBody.java:166)
at org.jruby.runtime.BlockBody.yield(BlockBody.java:108)
at org.jruby.runtime.Block.yield(Block.java:184)
at org.jruby.RubyArray.each(RubyArray.java:1809)
at org.jruby.RubyArray$INVOKER$i$0$0$each.call(RubyArray$INVOKER$i$0$0$each.gen)
at org.jruby.internal.runtime.methods.JavaMethod$JavaMethodZeroBlock.call(JavaMethod.java:555)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:332)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:86)
at org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:93)
at org.jruby.ir.instructions.CallBase.interpret(CallBase.java:546)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:361)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:116)
at org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:137)
at org.jruby.runtime.IRBlockBody.yieldSpecific(IRBlockBody.java:70)
at org.jruby.runtime.Block.yieldSpecific(Block.java:153)
at org.jruby.ir.targets.YieldSite.yieldSpecific(YieldSite.java:156)
at home.web.$_dot_rvm.rubies.jruby_minus_9_dot_2_dot_14_dot_0.lib.ruby.stdlib.monitor.RUBY$method$mon_synchronize$0(/home/web/.rvm/rubies/jruby-9.2.14.0/lib/ruby/stdlib/monitor.rb:235)
at home.web.$_dot_rvm.rubies.jruby_minus_9_dot_2_dot_14_dot_0.lib.ruby.stdlib.monitor.RUBY$method$mon_synchronize$0$__VARARGS__(/home/web/.rvm/rubies/jruby-9.2.14.0/lib/ruby/stdlib/monitor.rb)
at org.jruby.internal.runtime.methods.CompiledIRMethod.call(CompiledIRMethod.java:80)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:70)
at org.jruby.internal.runtime.methods.AliasMethod.call(AliasMethod.java:137)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:332)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:86)
at org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:93)
at org.jruby.ir.instructions.CallBase.interpret(CallBase.java:546)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:361)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:116)
at org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:137)
at org.jruby.runtime.IRBlockBody.yieldSpecific(IRBlockBody.java:70)
at org.jruby.runtime.Block.yieldSpecific(Block.java:153)
at org.jruby.ir.runtime.IRRuntimeHelpers.yieldSpecific(IRRuntimeHelpers.java:503)
at org.jruby.ir.instructions.YieldInstr.interpret(YieldInstr.java:76)
at org.jruby.ir.interpreter.StartupInterpreterEngine.processOtherOp(StartupInterpreterEngine.java:178)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:104)
at org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:116)
at org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:137)
at org.jruby.runtime.IRBlockBody.yieldSpecific(IRBlockBody.java:70)
at org.jruby.runtime.Block.yieldSpecific(Block.java:153)
at org.jruby.ir.runtime.IRRuntimeHelpers.yieldSpecific(IRRuntimeHelpers.java:503)
at org.jruby.ir.instructions.YieldInstr.interpret(YieldInstr.java:76)
at org.jruby.ir.interpreter.StartupInterpreterEngine.processOtherOp(StartupInterpreterEngine.java:178)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:104)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:86)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:73)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:332)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:86)
at org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:93)
at org.jruby.ir.instructions.CallBase.interpret(CallBase.java:546)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:361)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:86)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:156)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:143)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:386)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:184)
at org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:191)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:337)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:86)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:156)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:143)
at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:200)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:375)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:174)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:316)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:80)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:121)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:108)
at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:192)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:354)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:143)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:345)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:86)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:156)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:143)
at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:200)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:375)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:174)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:316)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:86)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:156)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:143)
at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:200)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:375)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:174)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:316)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:86)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:156)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:143)
at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:200)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:375)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:174)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:316)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:116)
at org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:137)
at org.jruby.runtime.IRBlockBody.call(IRBlockBody.java:60)
at org.jruby.runtime.Block.call(Block.java:143)
at org.jruby.RubyProc.call(RubyProc.java:299)
at org.jruby.RubyProc$INVOKER$i$call.call(RubyProc$INVOKER$i$call.gen)
at org.jruby.internal.runtime.methods.JavaMethod$JavaMethodZeroOrOneOrTwoOrNBlock.call(JavaMethod.java:371)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:203)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:325)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:116)
at org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:137)
at org.jruby.runtime.IRBlockBody.doYield(IRBlockBody.java:166)
at org.jruby.runtime.BlockBody.yield(BlockBody.java:108)
at org.jruby.runtime.Block.yield(Block.java:184)
at org.jruby.RubyArray.each(RubyArray.java:1809)
at org.jruby.RubyArray$INVOKER$i$0$0$each.call(RubyArray$INVOKER$i$0$0$each.gen)
at org.jruby.internal.runtime.methods.JavaMethod$JavaMethodZeroBlock.call(JavaMethod.java:555)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:84)
at org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:93)
at org.jruby.ir.instructions.CallBase.interpret(CallBase.java:546)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:361)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:86)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:156)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:143)
at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:200)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:172)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:316)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:116)
at org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:137)
at org.jruby.runtime.IRBlockBody.yieldSpecific(IRBlockBody.java:70)
at org.jruby.runtime.Block.yieldSpecific(Block.java:153)
at org.jruby.ir.runtime.IRRuntimeHelpers.yieldSpecific(IRRuntimeHelpers.java:503)
at org.jruby.ir.instructions.YieldInstr.interpret(YieldInstr.java:76)
at org.jruby.ir.interpreter.StartupInterpreterEngine.processOtherOp(StartupInterpreterEngine.java:178)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:104)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:86)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:73)
at org.jruby.internal.runtime.methods.AliasMethod.call(AliasMethod.java:137)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:332)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:86)
at org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:93)
at org.jruby.ir.instructions.CallBase.interpret(CallBase.java:546)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:361)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:92)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:191)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:178)
at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:208)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:396)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:205)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:325)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:86)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:73)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:332)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:86)
at org.jruby.ir.instructions.CallBase.interpret(CallBase.java:549)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:361)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:86)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:156)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:143)
at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:200)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:375)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:174)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:316)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:116)
at org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:137)
at org.jruby.runtime.IRBlockBody.doYield(IRBlockBody.java:166)
at org.jruby.runtime.BlockBody.yield(BlockBody.java:108)
at org.jruby.runtime.Block.yield(Block.java:184)
at org.jruby.RubyArray.each(RubyArray.java:1809)
at org.jruby.RubyArray$INVOKER$i$0$0$each.call(RubyArray$INVOKER$i$0$0$each.gen)
at org.jruby.internal.runtime.methods.JavaMethod$JavaMethodZeroBlock.call(JavaMethod.java:555)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:332)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:86)
at org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:93)
at org.jruby.ir.instructions.CallBase.interpret(CallBase.java:546)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:361)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:116)
at org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:137)
at org.jruby.runtime.IRBlockBody.yieldSpecific(IRBlockBody.java:70)
at org.jruby.runtime.Block.yieldSpecific(Block.java:153)
at org.jruby.ir.runtime.IRRuntimeHelpers.yieldSpecific(IRRuntimeHelpers.java:503)
at org.jruby.ir.instructions.YieldInstr.interpret(YieldInstr.java:76)
at org.jruby.ir.interpreter.StartupInterpreterEngine.processOtherOp(StartupInterpreterEngine.java:178)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:104)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:86)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:73)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:332)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:86)
at org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:93)
at org.jruby.ir.instructions.CallBase.interpret(CallBase.java:546)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:361)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:80)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:121)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:108)
at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:192)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:354)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:143)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:345)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:116)
at org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:137)
at org.jruby.runtime.IRBlockBody.yieldSpecific(IRBlockBody.java:70)
at org.jruby.runtime.Block.yieldSpecific(Block.java:153)
at org.jruby.ir.runtime.IRRuntimeHelpers.yieldSpecific(IRRuntimeHelpers.java:503)
at org.jruby.ir.instructions.YieldInstr.interpret(YieldInstr.java:76)
at org.jruby.ir.interpreter.StartupInterpreterEngine.processOtherOp(StartupInterpreterEngine.java:178)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:104)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:86)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:73)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:332)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:86)
at org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:93)
at org.jruby.ir.instructions.CallBase.interpret(CallBase.java:546)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:361)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:80)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:121)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:108)
at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:192)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:354)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:143)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:345)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.ir.interpreter.Interpreter.INTERPRET_ROOT(Interpreter.java:96)
at org.jruby.ir.interpreter.Interpreter.execute(Interpreter.java:81)
at org.jruby.ir.interpreter.Interpreter.execute(Interpreter.java:30)
at org.jruby.ir.IRTranslator.execute(IRTranslator.java:42)
at org.jruby.Ruby.runInterpreter(Ruby.java:1218)
at org.jruby.Ruby.loadFile(Ruby.java:2785)
at org.jruby.runtime.load.LibrarySearcher$ResourceLibrary.load(LibrarySearcher.java:234)
at org.jruby.runtime.load.LibrarySearcher$FoundLibrary.load(LibrarySearcher.java:34)
at org.jruby.runtime.load.LoadService.load(LoadService.java:343)
at org.jruby.RubyKernel.loadCommon(RubyKernel.java:1039)
at org.jruby.RubyKernel.load(RubyKernel.java:1009)
at org.jruby.RubyKernel$INVOKER$s$load.call(RubyKernel$INVOKER$s$load.gen)
at org.jruby.internal.runtime.methods.JavaMethod$JavaMethodOneOrNBlock.call(JavaMethod.java:417)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:375)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:174)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:316)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.ir.interpreter.Interpreter.INTERPRET_ROOT(Interpreter.java:96)
at org.jruby.ir.interpreter.Interpreter.execute(Interpreter.java:81)
at org.jruby.ir.interpreter.Interpreter.execute(Interpreter.java:30)
at org.jruby.ir.IRTranslator.execute(IRTranslator.java:42)
at org.jruby.Ruby.runInterpreter(Ruby.java:1218)
at org.jruby.Ruby.loadFile(Ruby.java:2785)
at org.jruby.runtime.load.LibrarySearcher$ResourceLibrary.load(LibrarySearcher.java:234)
at org.jruby.runtime.load.LibrarySearcher$FoundLibrary.load(LibrarySearcher.java:34)
at org.jruby.runtime.load.LoadService.load(LoadService.java:343)
at org.jruby.RubyKernel.loadCommon(RubyKernel.java:1039)
at org.jruby.RubyKernel.load(RubyKernel.java:1009)
at org.jruby.RubyKernel$INVOKER$s$load.call(RubyKernel$INVOKER$s$load.gen)
at org.jruby.internal.runtime.methods.JavaMethod$JavaMethodOneOrNBlock.call(JavaMethod.java:417)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:375)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:174)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:316)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:86)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:73)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:332)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:86)
at org.jruby.ir.instructions.CallBase.interpret(CallBase.java:549)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:361)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:80)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:121)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:108)
at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:192)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:354)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:143)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:345)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:86)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:73)
at org.jruby.RubyClass.finvokeWithRefinements(RubyClass.java:514)
at org.jruby.RubyBasicObject.send(RubyBasicObject.java:1755)
at org.jruby.RubyBasicObject$INVOKER$i$send.call(RubyBasicObject$INVOKER$i$send.gen)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:332)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:86)
at org.jruby.ir.instructions.CallBase.interpret(CallBase.java:549)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:361)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:86)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:73)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:332)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:86)
at org.jruby.ir.instructions.CallBase.interpret(CallBase.java:549)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:361)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:92)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:191)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:178)
at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:208)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:396)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:205)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:325)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:86)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:73)
at org.jruby.ir.runtime.IRRuntimeHelpers.unresolvedSuper(IRRuntimeHelpers.java:1206)
at org.jruby.ir.instructions.ClassSuperInstr.interpret(ClassSuperInstr.java:86)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:361)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:86)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:73)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:332)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:86)
at org.jruby.ir.instructions.CallBase.interpret(CallBase.java:549)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:361)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:86)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:73)
at org.jruby.ir.runtime.IRRuntimeHelpers.unresolvedSuper(IRRuntimeHelpers.java:1206)
at org.jruby.ir.instructions.ClassSuperInstr.interpret(ClassSuperInstr.java:86)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:361)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:92)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:191)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:178)
at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:208)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:396)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:205)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:325)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:116)
at org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:137)
at org.jruby.runtime.IRBlockBody.yieldSpecific(IRBlockBody.java:70)
at org.jruby.runtime.Block.yieldSpecific(Block.java:153)
at org.jruby.ir.runtime.IRRuntimeHelpers.yieldSpecific(IRRuntimeHelpers.java:503)
at org.jruby.ir.instructions.YieldInstr.interpret(YieldInstr.java:76)
at org.jruby.ir.interpreter.StartupInterpreterEngine.processOtherOp(StartupInterpreterEngine.java:178)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:104)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:86)
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:73)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:332)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:86)
at org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:93)
at org.jruby.ir.instructions.CallBase.interpret(CallBase.java:546)
at org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:361)
at org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
at org.jruby.ir.interpreter.Interpreter.INTERPRET_ROOT(Interpreter.java:96)
at org.jruby.ir.interpreter.Interpreter.execute(Interpreter.java:81)
at org.jruby.ir.interpreter.Interpreter.execute(Interpreter.java:30)
at org.jruby.ir.IRTranslator.execute(IRTranslator.java:42)
at org.jruby.Ruby.runInterpreter(Ruby.java:1218)
at org.jruby.Ruby.loadFile(Ruby.java:2785)
at org.jruby.runtime.load.LibrarySearcher$ResourceLibrary.load(LibrarySearcher.java:234)
at org.jruby.runtime.load.LibrarySearcher$FoundLibrary.load(LibrarySearcher.java:34)
at org.jruby.runtime.load.LoadService.load(LoadService.java:343)
at org.jruby.RubyKernel.loadCommon(RubyKernel.java:1039)
at org.jruby.RubyKernel.load(RubyKernel.java:1009)
at org.jruby.RubyKernel$INVOKER$s$load.call(RubyKernel$INVOKER$s$load.gen)
at org.jruby.internal.runtime.methods.JavaMethod$JavaMethodOneOrNBlock.call(JavaMethod.java:417)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:375)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:174)
at home.web.$_dot_rvm.rubies.jruby_minus_9_dot_2_dot_14_dot_0.bin.bundle.invokeOther8:load(/home/web/.rvm/rubies/jruby-9.2.14.0/bin/bundle:23)
at home.web.$_dot_rvm.rubies.jruby_minus_9_dot_2_dot_14_dot_0.bin.bundle.RUBY$script(/home/web/.rvm/rubies/jruby-9.2.14.0/bin/bundle:23)
at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:710)
at org.jruby.ir.Compiler$1.load(Compiler.java:89)
at org.jruby.Ruby.runScript(Ruby.java:1205)
at org.jruby.Ruby.runNormally(Ruby.java:1128)
at org.jruby.Ruby.runNormally(Ruby.java:1146)
at org.jruby.Ruby.runFromMain(Ruby.java:958)
at org.jruby.Main.doRunFromMain(Main.java:400)
at org.jruby.Main.internalRun(Main.java:292)
at org.jruby.Main.run(Main.java:234)
at org.jruby.Main.main(Main.java:206)
** END NESTED EXCEPTION **
Just to be clear, I am also seeing them a bunch in a background process that makes tons of SSL connections, although they aren't frequent enough to be a huge concern or anything
created time in 25 days
issue openedjruby/jruby-openssl
Regression: Setting SSL_CERT_FILE removes default store
jruby-openssl (default: 0.10.4 java)
This regression happened recently (last month).
I set SSL_CERT_FILE in the test suite of the http library I maintain. Recently, gem install
stopped working: https://gitlab.com/honeyryderchuck/httpx/-/jobs/906764346#L421 .
If I remove the env var, I am able to install gems.
created time in a month
issue commentjruby/jruby-openssl
NullPointerException in PKeyEC.java when calling Net::SSH.start
I assume the newer net-ssh is just doing additional calls that are not properly supported. This is still an issue, but not sure when we can get someone to work on it...
comment created time in 2 months
push eventjruby/jruby-openssl
commit sha 6b4f7564f4e4f5eb04a478d3606d279649f5288e
Fix SSLContext#ciphers=
commit sha 2047f4df6dcc2118c33a064da5c67645da455986
Merge branch 'master' into issue_221_SSLContext_set_ciphers
commit sha 4f3894d088f330f50f28fad60c0ba244691b5fbc
Merge pull request #222 from MariuszCwikla/issue_221_SSLContext_set_ciphers Fix SSLContext#ciphers=
push time in 2 months
PR merged jruby/jruby-openssl
Fixes #221 and jruby/jruby#3100
However, this functionality is not fully compatible with ruby openssl. I did some investigation and apparently jruby-openssl was implemented based on openssl 0.9.x. Ruby 2.7 is using openssl 1.1.1. There was a refactoring in openssl between 0.9.x and 1.1.1, e.g. following does work with ruby, but not with jruby:
c.ciphers='AES128'
but this works with both:
c.ciphers='AES'
pr closed time in 2 months
issue closedjruby/jruby-openssl
SSLContext#ciphers= does not appear to work for any usage
https://ruby-doc.org/stdlib-2.7.0/libdoc/openssl/rdoc/OpenSSL/SSL/SSLContext.html documents 3 usages of cipher=
:
- ciphers = "cipher1:cipher2:..."
- ciphers = [name, ...]
- ciphers = [[name, version, bits, alg_bits], ...]
None of these appear to work in JRuby:
irb(main):021:0> c=OpenSSL::SSL::SSLContext.new
=> #<OpenSSL::SSL::SSLContext:0x697a34af>
irb(main):022:0> c.ciphers
=> [["ECDHE-ECDSA-AES128-GCM-SHA256", "TLSv1/SSLv3", 128, 256], ["ECDHE-RSA-AES128-GCM-SHA256", "TLSv1/SSLv3", 128, 256], ["AES128-GCM-SHA256", "TLSv1/SSLv3", 128, 256], ["ECDH-ECDSA-AES128-GCM-SHA256", "TLSv1/SSLv3", 128, 256], ["ECDH-RSA-AES128-GCM-SHA256", "TLSv1/SSLv3", 128, 256], ["DHE-RSA-AES128-GCM-SHA256", "TLSv1/SSLv3", 128, 256], ["DHE-DSS-AES128-GCM-SHA256", "TLSv1/SSLv3", 128, 256], ["ECDHE-ECDSA-AES128-SHA256", "TLSv1/SSLv3", 128, 256], ["ECDHE-RSA-AES128-SHA256", "TLSv1/SSLv3", 128, 256], ["AES128-SHA256", "TLSv1/SSLv3", 128, 256], ["ECDH-ECDSA-AES128-SHA256", "TLSv1/SSLv3", 128, 256], ["ECDH-RSA-AES128-SHA256", "TLSv1/SSLv3", 128, 256], ["DHE-RSA-AES128-SHA256", "TLSv1/SSLv3", 128, 256], ["DHE-DSS-AES128-SHA256", "TLSv1/SSLv3", 128, 256], ["ECDHE-ECDSA-AES128-SHA", "TLSv1/SSLv3", 128, 128], ["ECDHE-RSA-AES128-SHA", "TLSv1/SSLv3", 128, 128], ["AES128-SHA", "TLSv1/SSLv3", 128, 128], ["ECDH-ECDSA-AES128-SHA", "TLSv1/SSLv3", 128, 128], ["ECDH-RSA-AES128-SHA", "TLSv1/SSLv3", 128, 128], ["DHE-RSA-AES128-SHA", "TLSv1/SSLv3", 128, 128], ["DHE-DSS-AES128-SHA", "TLSv1/SSLv3", 128, 128], ["ECDHE-ECDSA-AES256-GCM-SHA384", "TLSv1/SSLv3", 256, 384], ["ECDHE-RSA-AES256-GCM-SHA384", "TLSv1/SSLv3", 256, 384], ["AES256-GCM-SHA384", "TLSv1/SSLv3", 256, 384], ["ECDH-ECDSA-AES256-GCM-SHA384", "TLSv1/SSLv3", 256, 384], ["ECDH-RSA-AES256-GCM-SHA384", "TLSv1/SSLv3", 256, 384], ["DHE-RSA-AES256-GCM-SHA384", "TLSv1/SSLv3", 256, 384], ["DHE-DSS-AES256-GCM-SHA384", "TLSv1/SSLv3", 256, 384], ["ECDHE-ECDSA-AES256-SHA384", "TLSv1/SSLv3", 256, 384], ["ECDHE-RSA-AES256-SHA384", "TLSv1/SSLv3", 256, 384], ["AES256-SHA256", "TLSv1/SSLv3", 256, 256], ["ECDH-ECDSA-AES256-SHA384", "TLSv1/SSLv3", 256, 384], ["ECDH-RSA-AES256-SHA384", "TLSv1/SSLv3", 256, 384], ["DHE-RSA-AES256-SHA256", "TLSv1/SSLv3", 256, 256], ["DHE-DSS-AES256-SHA256", "TLSv1/SSLv3", 256, 256], ["ECDHE-ECDSA-AES256-SHA", "TLSv1/SSLv3", 256, 256], ["ECDHE-RSA-AES256-SHA", "TLSv1/SSLv3", 256, 256], ["AES256-SHA", "TLSv1/SSLv3", 256, 256], ["ECDH-ECDSA-AES256-SHA", "TLSv1/SSLv3", 256, 256], ["ECDH-RSA-AES256-SHA", "TLSv1/SSLv3", 256, 256], ["DHE-RSA-AES256-SHA", "TLSv1/SSLv3", 256, 256], ["DHE-DSS-AES256-SHA", "TLSv1/SSLv3", 256, 256]]
irb(main):023:0> c.ciphers.first
=> ["ECDHE-ECDSA-AES128-GCM-SHA256", "TLSv1/SSLv3", 128, 256]
irb(main):024:0> c.ciphers = 'ECDHE-ECDSA-AES128-GCM-SHA256'
Traceback (most recent call last):
7: from /home/w/.rbenv/versions/jruby-9.2.13/bin/irb:13:in `<main>'
6: from org/jruby/RubyKernel.java:1189:in `catch'
5: from org/jruby/RubyKernel.java:1189:in `catch'
4: from org/jruby/RubyKernel.java:1442:in `loop'
3: from org/jruby/RubyKernel.java:1048:in `eval'
2: from (irb):24:in `evaluate'
1: from org/jruby/ext/openssl/SSLContext.java:507:in `ciphers='
OpenSSL::SSL::SSLError (no cipher match)
irb(main):025:0> c.ciphers = ['ECDHE-ECDSA-AES128-GCM-SHA256']
Traceback (most recent call last):
7: from /home/w/.rbenv/versions/jruby-9.2.13/bin/irb:13:in `<main>'
6: from org/jruby/RubyKernel.java:1189:in `catch'
5: from org/jruby/RubyKernel.java:1189:in `catch'
4: from org/jruby/RubyKernel.java:1442:in `loop'
3: from org/jruby/RubyKernel.java:1048:in `eval'
2: from (irb):25:in `evaluate'
1: from org/jruby/ext/openssl/SSLContext.java:507:in `ciphers='
OpenSSL::SSL::SSLError (no cipher match)
irb(main):026:0> c.ciphers = ["ECDHE-ECDSA-AES128-GCM-SHA256", "TLSv1/SSLv3", 128, 256]
Traceback (most recent call last):
7: from /home/w/.rbenv/versions/jruby-9.2.13/bin/irb:13:in `<main>'
6: from org/jruby/RubyKernel.java:1189:in `catch'
5: from org/jruby/RubyKernel.java:1189:in `catch'
4: from org/jruby/RubyKernel.java:1442:in `loop'
3: from org/jruby/RubyKernel.java:1048:in `eval'
2: from (irb):26:in `evaluate'
1: from org/jruby/ext/openssl/SSLContext.java:507:in `ciphers='
OpenSSL::SSL::SSLError (no cipher match)
closed time in 2 months
p-mongopull request commentjruby/jruby-openssl
This is a good step forward! I will merge this but we need to do more verification and get a release out.
comment created time in 2 months
push eventjruby/jruby-openssl
commit sha dae253973db482b94ca3a74155788382d0c01c6c
Fix Java::JavaLang::StringIndexOutOfBoundsException on ctx.cipher=[]
commit sha 4b1ad4a5e35f38d0561bd89d1ee90433be329b87
Merge pull request #223 from MariuszCwikla/issue_220 Fix Java::JavaLang::StringIndexOutOfBoundsException on ctx.cipher=[]
push time in 2 months
issue closedjruby/jruby-openssl
SSLContext#ciphers= exposes internal exceptions
If I try to assign ciphers to an empty array or an array containing nil, I get a Java::JavaLang::StringIndexOutOfBoundsException.
I expected either an OpenSSL error or a Ruby standard library error in this case.
irb(main):017:0> c=OpenSSL::SSL::SSLContext.new
=> #<OpenSSL::SSL::SSLContext:0x20d87335>
irb(main):018:0> c.ciphers=[]
Traceback (most recent call last):
16: from org.jruby.RubyKernel.eval(RubyKernel.java:1048)
15: from org.jruby.RubyKernel.evalCommon(RubyKernel.java:1086)
14: from org.jruby.ir.interpreter.Interpreter.evalWithBinding(Interpreter.java:182)
13: from org.jruby.ir.interpreter.Interpreter.evalCommon(Interpreter.java:158)
12: from org.jruby.ir.interpreter.Interpreter.INTERPRET_EVAL(Interpreter.java:106)
11: from org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
10: from org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:361)
9: from org.jruby.ir.instructions.specialized.OneArgOperandAttrAssignInstr.interpret(OneArgOperandAttrAssignInstr.java:37)
8: from org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:174)
7: from org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:375)
6: from org.jruby.ext.openssl.SSLContext$INVOKER$i$1$0$set_ciphers.call(SSLContext$INVOKER$i$1$0$set_ciphers.gen)
5: from org.jruby.ext.openssl.SSLContext.set_ciphers(SSLContext.java:506)
4: from org.jruby.ext.openssl.SSLContext.matchedCiphers(SSLContext.java:469)
3: from org.jruby.ext.openssl.CipherStrings.matchingCiphers(CipherStrings.java:515)
2: from java.base/java.lang.String.charAt(String.java:693)
1: from java.base/java.lang.StringLatin1.charAt(StringLatin1.java:47)
Java::JavaLang::StringIndexOutOfBoundsException (String index out of range: 0)
irb(main):019:0> c.ciphers=[nil]
Traceback (most recent call last):
16: from org.jruby.RubyKernel.eval(RubyKernel.java:1048)
15: from org.jruby.RubyKernel.evalCommon(RubyKernel.java:1086)
14: from org.jruby.ir.interpreter.Interpreter.evalWithBinding(Interpreter.java:182)
13: from org.jruby.ir.interpreter.Interpreter.evalCommon(Interpreter.java:158)
12: from org.jruby.ir.interpreter.Interpreter.INTERPRET_EVAL(Interpreter.java:106)
11: from org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
10: from org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:361)
9: from org.jruby.ir.instructions.specialized.OneArgOperandAttrAssignInstr.interpret(OneArgOperandAttrAssignInstr.java:37)
8: from org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:174)
7: from org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:375)
6: from org.jruby.ext.openssl.SSLContext$INVOKER$i$1$0$set_ciphers.call(SSLContext$INVOKER$i$1$0$set_ciphers.gen)
5: from org.jruby.ext.openssl.SSLContext.set_ciphers(SSLContext.java:506)
4: from org.jruby.ext.openssl.SSLContext.matchedCiphers(SSLContext.java:469)
3: from org.jruby.ext.openssl.CipherStrings.matchingCiphers(CipherStrings.java:515)
2: from java.base/java.lang.String.charAt(String.java:693)
1: from java.base/java.lang.StringLatin1.charAt(StringLatin1.java:47)
Java::JavaLang::StringIndexOutOfBoundsException (String index out of range: 0)
jruby 9.2.13.0 (2.5.7) 2020-08-03 9a89c94bcc OpenJDK 64-Bit Server VM 11.0.9+11-post-Debian-1 on 11.0.9+11-post-Debian-1 +jit [linux-x86_64]
closed time in 2 months
p-mongopull request commentjruby/jruby-openssl
Fix Java::JavaLang::StringIndexOutOfBoundsException on ctx.cipher=[]
Nice!
comment created time in 2 months
pull request commentjruby/jruby-openssl
This looks a-ok to me but I didn't verify exact behavior against MRI.
comment created time in 2 months
issue commentjruby/jruby-openssl
SSLContext#ciphers= exposes internal exceptions
MRI behavior:
serene% irb -ropenssl
irb(main):001:0> c=OpenSSL::SSL::SSLContext.new
=> #<OpenSSL::SSL::SSLContext:0x0000558711862638>
irb(main):002:0> c.ciphers=[]
Traceback (most recent call last):
5: from /home/w/.rbenv/versions/2.7/bin/irb:23:in `<main>'
4: from /home/w/.rbenv/versions/2.7/bin/irb:23:in `load'
3: from /home/w/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/irb-1.2.6/exe/irb:11:in `<top (required)>'
2: from (irb):2
1: from (irb):2:in `ciphers='
OpenSSL::SSL::SSLError (SSL_CTX_set_cipher_list: no cipher match)
comment created time in 2 months
pull request commentjruby/jruby-openssl
Thank you for fixing this.
comment created time in 2 months
PR opened jruby/jruby-openssl
Fixes #221 and jruby/jruby#3100
However, this functionality is not fully compatible with ruby openssl. I did some investigation and apparently jruby-openssl was implemented based on openssl 0.9.x. Ruby 2.7 is using openssl 1.1.1. There was a refactoring in openssl between 0.9.x and 1.1.1, e.g. following does work with ruby, but not with jruby:
c.ciphers='AES128'
but this works with both:
c.ciphers='AES'
pr created time in 2 months
issue commentjruby/jruby-openssl
SSLContext#ciphers= does not appear to work for any usage
jruby 9.2.13.0 (2.5.7) 2020-08-03 9a89c94bcc OpenJDK 64-Bit Server VM 11.0.9+11-post-Debian-1 on 11.0.9+11-post-Debian-1 +jit [linux-x86_64]
comment created time in 2 months
issue openedjruby/jruby-openssl
SSLContext#ciphers= does not appear to work for any usage
https://ruby-doc.org/stdlib-2.7.0/libdoc/openssl/rdoc/OpenSSL/SSL/SSLContext.html documents 3 usages of cipher=
:
- ciphers = "cipher1:cipher2:..."
- ciphers = [name, ...]
- ciphers = [[name, version, bits, alg_bits], ...]
None of these appear to work in JRuby:
irb(main):021:0> c=OpenSSL::SSL::SSLContext.new
=> #<OpenSSL::SSL::SSLContext:0x697a34af>
irb(main):022:0> c.ciphers
=> [["ECDHE-ECDSA-AES128-GCM-SHA256", "TLSv1/SSLv3", 128, 256], ["ECDHE-RSA-AES128-GCM-SHA256", "TLSv1/SSLv3", 128, 256], ["AES128-GCM-SHA256", "TLSv1/SSLv3", 128, 256], ["ECDH-ECDSA-AES128-GCM-SHA256", "TLSv1/SSLv3", 128, 256], ["ECDH-RSA-AES128-GCM-SHA256", "TLSv1/SSLv3", 128, 256], ["DHE-RSA-AES128-GCM-SHA256", "TLSv1/SSLv3", 128, 256], ["DHE-DSS-AES128-GCM-SHA256", "TLSv1/SSLv3", 128, 256], ["ECDHE-ECDSA-AES128-SHA256", "TLSv1/SSLv3", 128, 256], ["ECDHE-RSA-AES128-SHA256", "TLSv1/SSLv3", 128, 256], ["AES128-SHA256", "TLSv1/SSLv3", 128, 256], ["ECDH-ECDSA-AES128-SHA256", "TLSv1/SSLv3", 128, 256], ["ECDH-RSA-AES128-SHA256", "TLSv1/SSLv3", 128, 256], ["DHE-RSA-AES128-SHA256", "TLSv1/SSLv3", 128, 256], ["DHE-DSS-AES128-SHA256", "TLSv1/SSLv3", 128, 256], ["ECDHE-ECDSA-AES128-SHA", "TLSv1/SSLv3", 128, 128], ["ECDHE-RSA-AES128-SHA", "TLSv1/SSLv3", 128, 128], ["AES128-SHA", "TLSv1/SSLv3", 128, 128], ["ECDH-ECDSA-AES128-SHA", "TLSv1/SSLv3", 128, 128], ["ECDH-RSA-AES128-SHA", "TLSv1/SSLv3", 128, 128], ["DHE-RSA-AES128-SHA", "TLSv1/SSLv3", 128, 128], ["DHE-DSS-AES128-SHA", "TLSv1/SSLv3", 128, 128], ["ECDHE-ECDSA-AES256-GCM-SHA384", "TLSv1/SSLv3", 256, 384], ["ECDHE-RSA-AES256-GCM-SHA384", "TLSv1/SSLv3", 256, 384], ["AES256-GCM-SHA384", "TLSv1/SSLv3", 256, 384], ["ECDH-ECDSA-AES256-GCM-SHA384", "TLSv1/SSLv3", 256, 384], ["ECDH-RSA-AES256-GCM-SHA384", "TLSv1/SSLv3", 256, 384], ["DHE-RSA-AES256-GCM-SHA384", "TLSv1/SSLv3", 256, 384], ["DHE-DSS-AES256-GCM-SHA384", "TLSv1/SSLv3", 256, 384], ["ECDHE-ECDSA-AES256-SHA384", "TLSv1/SSLv3", 256, 384], ["ECDHE-RSA-AES256-SHA384", "TLSv1/SSLv3", 256, 384], ["AES256-SHA256", "TLSv1/SSLv3", 256, 256], ["ECDH-ECDSA-AES256-SHA384", "TLSv1/SSLv3", 256, 384], ["ECDH-RSA-AES256-SHA384", "TLSv1/SSLv3", 256, 384], ["DHE-RSA-AES256-SHA256", "TLSv1/SSLv3", 256, 256], ["DHE-DSS-AES256-SHA256", "TLSv1/SSLv3", 256, 256], ["ECDHE-ECDSA-AES256-SHA", "TLSv1/SSLv3", 256, 256], ["ECDHE-RSA-AES256-SHA", "TLSv1/SSLv3", 256, 256], ["AES256-SHA", "TLSv1/SSLv3", 256, 256], ["ECDH-ECDSA-AES256-SHA", "TLSv1/SSLv3", 256, 256], ["ECDH-RSA-AES256-SHA", "TLSv1/SSLv3", 256, 256], ["DHE-RSA-AES256-SHA", "TLSv1/SSLv3", 256, 256], ["DHE-DSS-AES256-SHA", "TLSv1/SSLv3", 256, 256]]
irb(main):023:0> c.ciphers.first
=> ["ECDHE-ECDSA-AES128-GCM-SHA256", "TLSv1/SSLv3", 128, 256]
irb(main):024:0> c.ciphers = 'ECDHE-ECDSA-AES128-GCM-SHA256'
Traceback (most recent call last):
7: from /home/w/.rbenv/versions/jruby-9.2.13/bin/irb:13:in `<main>'
6: from org/jruby/RubyKernel.java:1189:in `catch'
5: from org/jruby/RubyKernel.java:1189:in `catch'
4: from org/jruby/RubyKernel.java:1442:in `loop'
3: from org/jruby/RubyKernel.java:1048:in `eval'
2: from (irb):24:in `evaluate'
1: from org/jruby/ext/openssl/SSLContext.java:507:in `ciphers='
OpenSSL::SSL::SSLError (no cipher match)
irb(main):025:0> c.ciphers = ['ECDHE-ECDSA-AES128-GCM-SHA256']
Traceback (most recent call last):
7: from /home/w/.rbenv/versions/jruby-9.2.13/bin/irb:13:in `<main>'
6: from org/jruby/RubyKernel.java:1189:in `catch'
5: from org/jruby/RubyKernel.java:1189:in `catch'
4: from org/jruby/RubyKernel.java:1442:in `loop'
3: from org/jruby/RubyKernel.java:1048:in `eval'
2: from (irb):25:in `evaluate'
1: from org/jruby/ext/openssl/SSLContext.java:507:in `ciphers='
OpenSSL::SSL::SSLError (no cipher match)
irb(main):026:0> c.ciphers = ["ECDHE-ECDSA-AES128-GCM-SHA256", "TLSv1/SSLv3", 128, 256]
Traceback (most recent call last):
7: from /home/w/.rbenv/versions/jruby-9.2.13/bin/irb:13:in `<main>'
6: from org/jruby/RubyKernel.java:1189:in `catch'
5: from org/jruby/RubyKernel.java:1189:in `catch'
4: from org/jruby/RubyKernel.java:1442:in `loop'
3: from org/jruby/RubyKernel.java:1048:in `eval'
2: from (irb):26:in `evaluate'
1: from org/jruby/ext/openssl/SSLContext.java:507:in `ciphers='
OpenSSL::SSL::SSLError (no cipher match)
created time in 2 months
issue openedjruby/jruby-openssl
SSLContext#ciphers= exposes internal exceptions
If I try to assign ciphers to an empty array or an array containing nil, I get a Java::JavaLang::StringIndexOutOfBoundsException.
I expected either an OpenSSL error or a Ruby standard library error in this case.
irb(main):017:0> c=OpenSSL::SSL::SSLContext.new
=> #<OpenSSL::SSL::SSLContext:0x20d87335>
irb(main):018:0> c.ciphers=[]
Traceback (most recent call last):
16: from org.jruby.RubyKernel.eval(RubyKernel.java:1048)
15: from org.jruby.RubyKernel.evalCommon(RubyKernel.java:1086)
14: from org.jruby.ir.interpreter.Interpreter.evalWithBinding(Interpreter.java:182)
13: from org.jruby.ir.interpreter.Interpreter.evalCommon(Interpreter.java:158)
12: from org.jruby.ir.interpreter.Interpreter.INTERPRET_EVAL(Interpreter.java:106)
11: from org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
10: from org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:361)
9: from org.jruby.ir.instructions.specialized.OneArgOperandAttrAssignInstr.interpret(OneArgOperandAttrAssignInstr.java:37)
8: from org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:174)
7: from org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:375)
6: from org.jruby.ext.openssl.SSLContext$INVOKER$i$1$0$set_ciphers.call(SSLContext$INVOKER$i$1$0$set_ciphers.gen)
5: from org.jruby.ext.openssl.SSLContext.set_ciphers(SSLContext.java:506)
4: from org.jruby.ext.openssl.SSLContext.matchedCiphers(SSLContext.java:469)
3: from org.jruby.ext.openssl.CipherStrings.matchingCiphers(CipherStrings.java:515)
2: from java.base/java.lang.String.charAt(String.java:693)
1: from java.base/java.lang.StringLatin1.charAt(StringLatin1.java:47)
Java::JavaLang::StringIndexOutOfBoundsException (String index out of range: 0)
irb(main):019:0> c.ciphers=[nil]
Traceback (most recent call last):
16: from org.jruby.RubyKernel.eval(RubyKernel.java:1048)
15: from org.jruby.RubyKernel.evalCommon(RubyKernel.java:1086)
14: from org.jruby.ir.interpreter.Interpreter.evalWithBinding(Interpreter.java:182)
13: from org.jruby.ir.interpreter.Interpreter.evalCommon(Interpreter.java:158)
12: from org.jruby.ir.interpreter.Interpreter.INTERPRET_EVAL(Interpreter.java:106)
11: from org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
10: from org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:361)
9: from org.jruby.ir.instructions.specialized.OneArgOperandAttrAssignInstr.interpret(OneArgOperandAttrAssignInstr.java:37)
8: from org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:174)
7: from org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:375)
6: from org.jruby.ext.openssl.SSLContext$INVOKER$i$1$0$set_ciphers.call(SSLContext$INVOKER$i$1$0$set_ciphers.gen)
5: from org.jruby.ext.openssl.SSLContext.set_ciphers(SSLContext.java:506)
4: from org.jruby.ext.openssl.SSLContext.matchedCiphers(SSLContext.java:469)
3: from org.jruby.ext.openssl.CipherStrings.matchingCiphers(CipherStrings.java:515)
2: from java.base/java.lang.String.charAt(String.java:693)
1: from java.base/java.lang.StringLatin1.charAt(StringLatin1.java:47)
Java::JavaLang::StringIndexOutOfBoundsException (String index out of range: 0)
jruby 9.2.13.0 (2.5.7) 2020-08-03 9a89c94bcc OpenJDK 64-Bit Server VM 11.0.9+11-post-Debian-1 on 11.0.9+11-post-Debian-1 +jit [linux-x86_64]
created time in 2 months
issue openedjruby/jruby-openssl
SSLContext#ciphers= mutates the context when set fails
If I try to set the ciphers to a value which is rejected, the cipher list is still modified (set to the empty list):
irb(main):020:0> c=OpenSSL::SSL::SSLContext.new
=> #<OpenSSL::SSL::SSLContext:0x3c3820bb>
irb(main):021:0> c.ciphers
=> [["ECDHE-ECDSA-AES128-GCM-SHA256", "TLSv1/SSLv3", 128, 256], ["ECDHE-RSA-AES128-GCM-SHA256", "TLSv1/SSLv3", 128, 256], ["AES128-GCM-SHA256", "TLSv1/SSLv3", 128, 256], ["ECDH-ECDSA-AES128-GCM-SHA256", "TLSv1/SSLv3", 128, 256], ["ECDH-RSA-AES128-GCM-SHA256", "TLSv1/SSLv3", 128, 256], ["DHE-RSA-AES128-GCM-SHA256", "TLSv1/SSLv3", 128, 256], ["DHE-DSS-AES128-GCM-SHA256", "TLSv1/SSLv3", 128, 256], ["ECDHE-ECDSA-AES128-SHA256", "TLSv1/SSLv3", 128, 256], ["ECDHE-RSA-AES128-SHA256", "TLSv1/SSLv3", 128, 256], ["AES128-SHA256", "TLSv1/SSLv3", 128, 256], ["ECDH-ECDSA-AES128-SHA256", "TLSv1/SSLv3", 128, 256], ["ECDH-RSA-AES128-SHA256", "TLSv1/SSLv3", 128, 256], ["DHE-RSA-AES128-SHA256", "TLSv1/SSLv3", 128, 256], ["DHE-DSS-AES128-SHA256", "TLSv1/SSLv3", 128, 256], ["ECDHE-ECDSA-AES128-SHA", "TLSv1/SSLv3", 128, 128], ["ECDHE-RSA-AES128-SHA", "TLSv1/SSLv3", 128, 128], ["AES128-SHA", "TLSv1/SSLv3", 128, 128], ["ECDH-ECDSA-AES128-SHA", "TLSv1/SSLv3", 128, 128], ["ECDH-RSA-AES128-SHA", "TLSv1/SSLv3", 128, 128], ["DHE-RSA-AES128-SHA", "TLSv1/SSLv3", 128, 128], ["DHE-DSS-AES128-SHA", "TLSv1/SSLv3", 128, 128], ["ECDHE-ECDSA-AES256-GCM-SHA384", "TLSv1/SSLv3", 256, 384], ["ECDHE-RSA-AES256-GCM-SHA384", "TLSv1/SSLv3", 256, 384], ["AES256-GCM-SHA384", "TLSv1/SSLv3", 256, 384], ["ECDH-ECDSA-AES256-GCM-SHA384", "TLSv1/SSLv3", 256, 384], ["ECDH-RSA-AES256-GCM-SHA384", "TLSv1/SSLv3", 256, 384], ["DHE-RSA-AES256-GCM-SHA384", "TLSv1/SSLv3", 256, 384], ["DHE-DSS-AES256-GCM-SHA384", "TLSv1/SSLv3", 256, 384], ["ECDHE-ECDSA-AES256-SHA384", "TLSv1/SSLv3", 256, 384], ["ECDHE-RSA-AES256-SHA384", "TLSv1/SSLv3", 256, 384], ["AES256-SHA256", "TLSv1/SSLv3", 256, 256], ["ECDH-ECDSA-AES256-SHA384", "TLSv1/SSLv3", 256, 384], ["ECDH-RSA-AES256-SHA384", "TLSv1/SSLv3", 256, 384], ["DHE-RSA-AES256-SHA256", "TLSv1/SSLv3", 256, 256], ["DHE-DSS-AES256-SHA256", "TLSv1/SSLv3", 256, 256], ["ECDHE-ECDSA-AES256-SHA", "TLSv1/SSLv3", 256, 256], ["ECDHE-RSA-AES256-SHA", "TLSv1/SSLv3", 256, 256], ["AES256-SHA", "TLSv1/SSLv3", 256, 256], ["ECDH-ECDSA-AES256-SHA", "TLSv1/SSLv3", 256, 256], ["ECDH-RSA-AES256-SHA", "TLSv1/SSLv3", 256, 256], ["DHE-RSA-AES256-SHA", "TLSv1/SSLv3", 256, 256], ["DHE-DSS-AES256-SHA", "TLSv1/SSLv3", 256, 256]]
irb(main):022:0> c.ciphers=['AES256-SHA']
Traceback (most recent call last):
7: from /home/w/.rbenv/versions/jruby-9.2.13/bin/irb:13:in `<main>'
6: from org/jruby/RubyKernel.java:1189:in `catch'
5: from org/jruby/RubyKernel.java:1189:in `catch'
4: from org/jruby/RubyKernel.java:1442:in `loop'
3: from org/jruby/RubyKernel.java:1048:in `eval'
2: from (irb):22:in `evaluate'
1: from org/jruby/ext/openssl/SSLContext.java:507:in `ciphers='
OpenSSL::SSL::SSLError (no cipher match)
irb(main):023:0> c.ciphers
=> []
I expect the context to only be modified if the assignment succeeded.
jruby 9.2.13.0 (2.5.7) 2020-08-03 9a89c94bcc OpenJDK 64-Bit Server VM 11.0.9+11-post-Debian-1 on 11.0.9+11-post-Debian-1 +jit [linux-x86_64]
created time in 2 months
pull request commentjruby/jruby-openssl
Fix integer overflow in hash_old
@headius thanks for hints but it seems that jruby-openssl is not consistent jruby repo. MRI tests even for openssl module are in jruby repo (but disabled). And there is no test/jruby under jruby-openssl, only test/ruby
comment created time in 2 months
pull request commentjruby/jruby-openssl
Fix integer overflow in hash_old
@MariuszCwikla The PR looks fine but the test should either be added to spec/ruby or test/jruby. The tests under test/mri are copied from CRuby and we do not edit them in our repo.
Thanks for the PR!
comment created time in 2 months
issue commentjruby/jruby-openssl
Tomcat 8/9 app deployment - NameError: cannot load (ext) (org.jruby.ext.openssl.OpenSSL)
@fun-ruby Thank you for that update! Perhaps this qualifies as a warbler bug?
@quesurifn Are you packaging an app using warbler, and able to try this config change?
comment created time in 2 months
PR opened jruby/jruby-openssl
In #216 X509Name.hash
was fixed and old implementation renamed to hash_old
However I discovered that old method still wasn't working correclty due to integer overflow:
ruby -e "require 'openssl'; p OpenSSL::X509::Name.new([['CN', 'foo'], ['DC', 'bar']]).hash_old" 3294068023
jruby -e "require 'openssl'; p OpenSSL::X509::Name.new([['CN', 'foo'], ['DC', 'bar']]).hash_old" -1000899273
Ruby is using unsinged int
for this calculation. In JRuby changing int to long solves the issue.
pr created time in 2 months
issue commentjruby/jruby-openssl
Tomcat 8/9 app deployment - NameError: cannot load (ext) (org.jruby.ext.openssl.OpenSSL)
Just to clarify my original issue.
I was using JRuby 9.2.8.0
with a more newer version of jruby-openssl
(0.10.2 or 0.10.3 as can be seen in my logs). So my Gemfile
included a newer version of jruby-openssl
.
This configuration breaks with
config/warble.rb
...
config.move_jars_to_webinf_lib = true
Commenting out the above line or set its value to false
fixed this issue, for me.
HTH
comment created time in 2 months