jruby-openssl
jruby-openssl copied to clipboard
connect raises a ClassCastException when a string is given as key in context
We have a test in the mongo ruby driver which attempts to pass a string as a key in openssl context:
https://github.com/mongodb/mongo-ruby-driver/blob/master/spec/mongo/socket/ssl_spec.rb#L240
let(:options) do
{
:ssl => true,
:ssl_cert => CLIENT_CERT_PEM,
:ssl_key_string => key_string,
:ssl_key_object => 'This is a string, not a PKey',
:ssl_verify => false
}
end
When we run the test we get the following exception:
1) Mongo::Socket::SSL#connect! when a bad certificate is provided raises an exception
Failure/Error:
expect {
socket.connect!
}.to raise_exception(OpenSSL::OpenSSLError)
expected OpenSSL::OpenSSLError, got java.lang.ClassCastException: org.bouncycastle.asn1.DERApplicationSpecific cannot be cast to org.bouncycastle.asn1.ASN1Sequence with backtrace:
# org.jruby.ext.openssl.impl.PKey.readRSAPrivateKey(PKey.java:173)
# org.jruby.ext.openssl.impl.PKey.readRSAPrivateKey(PKey.java:168)
# org.jruby.ext.openssl.impl.PKey.readPrivateKey(PKey.java:124)
# org.jruby.ext.openssl.PKey$PKeyModule.read(PKey.java:112)
# org.jruby.ext.openssl.PKey$PKeyModule$INVOKER$s$0$1$read.call(PKey$PKeyModule$INVOKER$s$0$1$read.gen)
# org.jruby.internal.runtime.methods.JavaMethod$JavaMethodN.call(JavaMethod.java:796)
# org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:202)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:153)
# org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:315)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
# org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:90)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:214)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:200)
# org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:210)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:181)
# org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:324)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
# org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:84)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:179)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:165)
# org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:202)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:153)
# org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:315)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:109)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:95)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:77)
# org.jruby.RubyClass.newInstance(RubyClass.java:1023)
# org.jruby.RubyClass$INVOKER$i$newInstance.call(RubyClass$INVOKER$i$newInstance.gen)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:77)
# org.jruby.ir.instructions.CallBase.interpret(CallBase.java:432)
# org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:360)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
# org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:90)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:214)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:200)
# org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:210)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:181)
# org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:324)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
# org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:127)
# org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:149)
# org.jruby.runtime.IRBlockBody.call(IRBlockBody.java:73)
# org.jruby.runtime.Block.call(Block.java:124)
# org.jruby.RubyProc.call(RubyProc.java:289)
# org.jruby.internal.runtime.methods.ProcMethod.call(ProcMethod.java:63)
# org.jruby.ir.runtime.IRRuntimeHelpers.unresolvedSuper(IRRuntimeHelpers.java:1042)
# org.jruby.runtime.CompiledIRBlockBody.yieldDirect(CompiledIRBlockBody.java:156)
# org.jruby.runtime.IRBlockBody.yieldSpecific(IRBlockBody.java:80)
# org.jruby.runtime.Block.yieldSpecific(Block.java:134)
# org.jruby.ir.runtime.IRRuntimeHelpers.yieldSpecific(IRRuntimeHelpers.java:421)
# org.jruby.ir.targets.YieldSite.yieldSpecific(YieldSite.java:119)
# org.jruby.runtime.CompiledIRBlockBody.yieldDirect(CompiledIRBlockBody.java:156)
# org.jruby.runtime.BlockBody.yield(BlockBody.java:114)
# org.jruby.runtime.Block.yield(Block.java:165)
# org.jruby.RubyHash.fetch(RubyHash.java:1194)
# org.jruby.RubyHash$INVOKER$i$fetch.call(RubyHash$INVOKER$i$fetch.gen)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:163)
# org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:170)
# org.jruby.runtime.CompiledIRBlockBody.yieldDirect(CompiledIRBlockBody.java:156)
# org.jruby.runtime.IRBlockBody.yieldSpecific(IRBlockBody.java:80)
# org.jruby.runtime.Block.yieldSpecific(Block.java:134)
# org.jruby.ir.runtime.IRRuntimeHelpers.yieldSpecific(IRRuntimeHelpers.java:421)
# org.jruby.ir.targets.YieldSite.yieldSpecific(YieldSite.java:119)
# org.jruby.internal.runtime.methods.CompiledIRMethod.call(CompiledIRMethod.java:90)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:128)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:135)
# org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:142)
# org.jruby.runtime.CompiledIRBlockBody.yieldDirect(CompiledIRBlockBody.java:156)
# org.jruby.runtime.BlockBody.yield(BlockBody.java:114)
# org.jruby.runtime.Block.yield(Block.java:165)
# org.jruby.RubyHash.fetch(RubyHash.java:1194)
# org.jruby.RubyHash$INVOKER$i$fetch.call(RubyHash$INVOKER$i$fetch.gen)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:163)
# org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:170)
# org.jruby.internal.runtime.methods.CompiledIRMethod.call(CompiledIRMethod.java:103)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:163)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:163)
# org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:170)
# org.jruby.runtime.CompiledIRBlockBody.callDirect(CompiledIRBlockBody.java:145)
# org.jruby.runtime.MixedModeIRBlockBody.callDirect(MixedModeIRBlockBody.java:114)
# org.jruby.runtime.IRBlockBody.call(IRBlockBody.java:71)
# org.jruby.runtime.Block.call(Block.java:124)
# org.jruby.RubyProc.call(RubyProc.java:289)
# org.jruby.internal.runtime.methods.ProcMethod.call(ProcMethod.java:63)
# org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:198)
# org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:194)
# org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:298)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:127)
# org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:344)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
# org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:127)
# org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:149)
# org.jruby.runtime.IRBlockBody.call(IRBlockBody.java:73)
# org.jruby.runtime.Block.call(Block.java:124)
# org.jruby.RubyProc.call(RubyProc.java:289)
# org.jruby.RubyProc.call19(RubyProc.java:273)
# org.jruby.RubyProc$INVOKER$i$0$0$call19.call(RubyProc$INVOKER$i$0$0$call19.gen)
# org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:198)
# org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:194)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:125)
# org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:344)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
# org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:84)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:179)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:165)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:163)
# org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:337)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
# org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:127)
# org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:149)
# org.jruby.runtime.IRBlockBody.doYield(IRBlockBody.java:186)
# org.jruby.runtime.BlockBody.yield(BlockBody.java:116)
# org.jruby.runtime.Block.yield(Block.java:165)
# org.jruby.ir.runtime.IRRuntimeHelpers.yield(IRRuntimeHelpers.java:417)
# org.jruby.ir.instructions.YieldInstr.interpret(YieldInstr.java:83)
# org.jruby.ir.interpreter.StartupInterpreterEngine.processOtherOp(StartupInterpreterEngine.java:178)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:104)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:109)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:95)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:77)
# org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:84)
# org.jruby.ir.instructions.CallBase.interpret(CallBase.java:429)
# org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:360)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:109)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:95)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:77)
# org.jruby.ir.instructions.CallBase.interpret(CallBase.java:432)
# org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:360)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:109)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:95)
# org.jruby.ir.runtime.IRRuntimeHelpers.instanceSuper(IRRuntimeHelpers.java:1004)
# org.jruby.ir.instructions.InstanceSuperInstr.interpret(InstanceSuperInstr.java:69)
# org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:360)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
# org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:84)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:179)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:165)
# org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:202)
# org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:318)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:155)
# org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:315)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
# org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:127)
# org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:149)
# org.jruby.runtime.IRBlockBody.doYield(IRBlockBody.java:193)
# org.jruby.runtime.BlockBody.yield(BlockBody.java:125)
# org.jruby.runtime.Block.yieldNonArray(Block.java:169)
# org.jruby.RubyBasicObject.yieldUnder(RubyBasicObject.java:1751)
# org.jruby.RubyBasicObject.instance_exec19(RubyBasicObject.java:1728)
# org.jruby.RubyBasicObject$INVOKER$i$0$3$instance_exec19.call(RubyBasicObject$INVOKER$i$0$3$instance_exec19.gen)
# org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:206)
# org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:328)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:165)
# org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:337)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
# org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:127)
# org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:149)
# org.jruby.runtime.IRBlockBody.yieldSpecific(IRBlockBody.java:84)
# org.jruby.runtime.Block.yieldSpecific(Block.java:134)
# org.jruby.ir.runtime.IRRuntimeHelpers.yieldSpecific(IRRuntimeHelpers.java:421)
# org.jruby.ir.instructions.YieldInstr.interpret(YieldInstr.java:74)
# org.jruby.ir.interpreter.StartupInterpreterEngine.processOtherOp(StartupInterpreterEngine.java:178)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:104)
# org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:127)
# org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:149)
# org.jruby.runtime.IRBlockBody.yieldSpecific(IRBlockBody.java:84)
# org.jruby.runtime.Block.yieldSpecific(Block.java:134)
# org.jruby.ir.runtime.IRRuntimeHelpers.yieldSpecific(IRRuntimeHelpers.java:421)
# org.jruby.ir.instructions.YieldInstr.interpret(YieldInstr.java:74)
# org.jruby.ir.interpreter.StartupInterpreterEngine.processOtherOp(StartupInterpreterEngine.java:178)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:104)
# org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:127)
# org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:149)
# org.jruby.runtime.IRBlockBody.yieldSpecific(IRBlockBody.java:84)
# org.jruby.runtime.Block.yieldSpecific(Block.java:134)
# org.jruby.ir.runtime.IRRuntimeHelpers.yieldSpecific(IRRuntimeHelpers.java:421)
# org.jruby.ir.targets.YieldSite.yieldSpecific(YieldSite.java:119)
# org.jruby.runtime.CompiledIRBlockBody.yieldDirect(CompiledIRBlockBody.java:156)
# org.jruby.runtime.IRBlockBody.yieldSpecific(IRBlockBody.java:80)
# org.jruby.runtime.Block.yieldSpecific(Block.java:134)
# org.jruby.ir.runtime.IRRuntimeHelpers.yieldSpecific(IRRuntimeHelpers.java:421)
# org.jruby.ir.instructions.YieldInstr.interpret(YieldInstr.java:74)
# org.jruby.ir.interpreter.StartupInterpreterEngine.processOtherOp(StartupInterpreterEngine.java:178)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:104)
# org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:127)
# org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:149)
# org.jruby.runtime.IRBlockBody.call(IRBlockBody.java:73)
# org.jruby.runtime.Block.call(Block.java:124)
# org.jruby.RubyProc.call(RubyProc.java:289)
# org.jruby.RubyProc.call19(RubyProc.java:273)
# org.jruby.RubyProc$INVOKER$i$0$0$call19.call(RubyProc$INVOKER$i$0$0$call19.gen)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:77)
# org.jruby.ir.instructions.CallBase.interpret(CallBase.java:432)
# org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:360)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
# org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:78)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:144)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:130)
# org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:194)
# org.jruby.internal.runtime.methods.AliasMethod.call(AliasMethod.java:56)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:125)
# org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:344)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
# org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:127)
# org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:149)
# org.jruby.runtime.IRBlockBody.yieldSpecific(IRBlockBody.java:84)
# org.jruby.runtime.Block.yieldSpecific(Block.java:134)
# org.jruby.RubyKernel.loop(RubyKernel.java:1316)
# org.jruby.RubyKernel$INVOKER$s$0$0$loop.call(RubyKernel$INVOKER$s$0$0$loop.gen)
# org.jruby.internal.runtime.methods.JavaMethod$JavaMethodZeroBlock.call(JavaMethod.java:536)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:77)
# org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:84)
# org.jruby.ir.instructions.CallBase.interpret(CallBase.java:429)
# org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:360)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
# org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:78)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:144)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:130)
# org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:194)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:125)
# org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:344)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
# org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:78)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:144)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:130)
# org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:194)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:125)
# org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:344)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
# org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:127)
# org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:149)
# org.jruby.runtime.IRBlockBody.doYield(IRBlockBody.java:193)
# org.jruby.runtime.BlockBody.yield(BlockBody.java:125)
# org.jruby.runtime.Block.yieldNonArray(Block.java:169)
# org.jruby.RubyBasicObject.yieldUnder(RubyBasicObject.java:1751)
# org.jruby.RubyBasicObject.instance_exec19(RubyBasicObject.java:1728)
# org.jruby.RubyBasicObject$INVOKER$i$0$3$instance_exec19.call(RubyBasicObject$INVOKER$i$0$3$instance_exec19.gen)
# org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:278)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:79)
# org.jruby.internal.runtime.methods.CompiledIRMethod.call(CompiledIRMethod.java:77)
# org.jruby.internal.runtime.methods.CompiledIRMethod.call(CompiledIRMethod.java:100)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:163)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:163)
# org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:337)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
# org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:90)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:214)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:200)
# org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:210)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:181)
# org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:324)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
# org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:127)
# org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:149)
# org.jruby.runtime.IRBlockBody.call(IRBlockBody.java:73)
# org.jruby.runtime.Block.call(Block.java:124)
# org.jruby.RubyProc.call(RubyProc.java:289)
# org.jruby.RubyProc.call19(RubyProc.java:273)
# org.jruby.RubyProc$INVOKER$i$0$0$call19.call(RubyProc$INVOKER$i$0$0$call19.gen)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:77)
# org.jruby.ir.instructions.CallBase.interpret(CallBase.java:432)
# org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:360)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
# org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:78)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:144)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:130)
# org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:194)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:125)
# org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:344)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
# org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:84)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:179)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:165)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:163)
# org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:170)
# org.jruby.internal.runtime.methods.CompiledIRMethod.call(CompiledIRMethod.java:77)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:93)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:77)
# org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:84)
# org.jruby.ir.instructions.CallBase.interpret(CallBase.java:429)
# org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:360)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:109)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:95)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:77)
# org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:84)
# org.jruby.ir.instructions.CallBase.interpret(CallBase.java:429)
# org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:360)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:109)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:95)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:77)
# org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:84)
# org.jruby.ir.instructions.CallBase.interpret(CallBase.java:429)
# org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:360)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
# org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:90)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:214)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:200)
# org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:210)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:181)
# org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:324)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
# org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:127)
# org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:149)
# org.jruby.runtime.IRBlockBody.doYield(IRBlockBody.java:186)
# org.jruby.runtime.BlockBody.yield(BlockBody.java:116)
# org.jruby.runtime.Block.yield(Block.java:165)
# org.jruby.RubyArray.collect(RubyArray.java:2473)
# org.jruby.RubyArray.map19(RubyArray.java:2487)
# org.jruby.RubyArray$INVOKER$i$0$0$map19.call(RubyArray$INVOKER$i$0$0$map19.gen)
# org.jruby.internal.runtime.methods.JavaMethod$JavaMethodZeroBlock.call(JavaMethod.java:536)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:77)
# org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:84)
# org.jruby.ir.instructions.CallBase.interpret(CallBase.java:429)
# org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:360)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
# org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:84)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:179)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:165)
# org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:202)
# org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:318)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:155)
# org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:315)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
# org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:84)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:179)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:165)
# org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:202)
# org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:318)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:155)
# org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:315)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
# org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:127)
# org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:149)
# org.jruby.runtime.IRBlockBody.doYield(IRBlockBody.java:186)
# org.jruby.runtime.BlockBody.yield(BlockBody.java:116)
# org.jruby.runtime.Block.yield(Block.java:165)
# org.jruby.RubyArray.collect(RubyArray.java:2473)
# org.jruby.RubyArray.map19(RubyArray.java:2487)
# org.jruby.RubyArray$INVOKER$i$0$0$map19.call(RubyArray$INVOKER$i$0$0$map19.gen)
# org.jruby.internal.runtime.methods.JavaMethod$JavaMethodZeroBlock.call(JavaMethod.java:536)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:77)
# org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:84)
# org.jruby.ir.instructions.CallBase.interpret(CallBase.java:429)
# org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:360)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
# org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:84)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:179)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:165)
# org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:202)
# org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:318)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:155)
# org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:315)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
# org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:127)
# org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:149)
# org.jruby.runtime.IRBlockBody.doYield(IRBlockBody.java:186)
# org.jruby.runtime.BlockBody.yield(BlockBody.java:116)
# org.jruby.runtime.Block.yield(Block.java:165)
# org.jruby.RubyArray.collect(RubyArray.java:2473)
# org.jruby.RubyArray.map19(RubyArray.java:2487)
# org.jruby.RubyArray$INVOKER$i$0$0$map19.call(RubyArray$INVOKER$i$0$0$map19.gen)
# org.jruby.internal.runtime.methods.JavaMethod$JavaMethodZeroBlock.call(JavaMethod.java:536)
# org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:278)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:79)
# org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:84)
# org.jruby.ir.instructions.CallBase.interpret(CallBase.java:429)
# org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:360)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
# org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:84)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:179)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:165)
# org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:202)
# org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:318)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:155)
# org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:315)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
# org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:127)
# org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:149)
# org.jruby.runtime.IRBlockBody.doYield(IRBlockBody.java:186)
# org.jruby.runtime.BlockBody.yield(BlockBody.java:116)
# org.jruby.runtime.Block.yield(Block.java:165)
# org.jruby.RubyArray.collect(RubyArray.java:2473)
# org.jruby.RubyArray.map19(RubyArray.java:2487)
# org.jruby.RubyArray$INVOKER$i$0$0$map19.call(RubyArray$INVOKER$i$0$0$map19.gen)
# org.jruby.internal.runtime.methods.JavaMethod$JavaMethodZeroBlock.call(JavaMethod.java:536)
# org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:278)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:79)
# org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:84)
# org.jruby.ir.instructions.CallBase.interpret(CallBase.java:429)
# org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:360)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
# org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:127)
# org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:149)
# org.jruby.runtime.IRBlockBody.yieldSpecific(IRBlockBody.java:84)
# org.jruby.runtime.Block.yieldSpecific(Block.java:134)
# org.jruby.ir.runtime.IRRuntimeHelpers.yieldSpecific(IRRuntimeHelpers.java:421)
# org.jruby.ir.instructions.YieldInstr.interpret(YieldInstr.java:74)
# org.jruby.ir.interpreter.StartupInterpreterEngine.processOtherOp(StartupInterpreterEngine.java:178)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:104)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:109)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:95)
# org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:278)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:79)
# org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:84)
# org.jruby.ir.instructions.CallBase.interpret(CallBase.java:429)
# org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:360)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
# org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:127)
# org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:149)
# org.jruby.runtime.IRBlockBody.doYield(IRBlockBody.java:186)
# org.jruby.runtime.BlockBody.yield(BlockBody.java:116)
# org.jruby.runtime.Block.yield(Block.java:165)
# org.jruby.ir.runtime.IRRuntimeHelpers.yield(IRRuntimeHelpers.java:417)
# org.jruby.ir.instructions.YieldInstr.interpret(YieldInstr.java:83)
# org.jruby.ir.interpreter.StartupInterpreterEngine.processOtherOp(StartupInterpreterEngine.java:178)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:104)
# org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:84)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:179)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:165)
# org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:328)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:165)
# org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:170)
# org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:336)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
# org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:84)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:179)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:165)
# org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:202)
# org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:318)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:155)
# org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:315)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
# org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:90)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:214)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:200)
# org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:210)
# org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:338)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:183)
# org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:324)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:109)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:95)
# org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:278)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:79)
# org.jruby.ir.instructions.CallBase.interpret(CallBase.java:432)
# org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:360)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
# org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:78)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:144)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:130)
# org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:194)
# org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:298)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:127)
# org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:344)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
# org.jruby.ir.interpreter.Interpreter.INTERPRET_ROOT(Interpreter.java:107)
# org.jruby.ir.interpreter.Interpreter.execute(Interpreter.java:94)
# org.jruby.ir.interpreter.Interpreter.execute(Interpreter.java:34)
# org.jruby.ir.IRTranslator.execute(IRTranslator.java:42)
# org.jruby.Ruby.runInterpreter(Ruby.java:842)
# org.jruby.Ruby.loadFile(Ruby.java:2903)
# org.jruby.runtime.load.LibrarySearcher$ResourceLibrary.load(LibrarySearcher.java:243)
# org.jruby.runtime.load.LibrarySearcher$FoundLibrary.load(LibrarySearcher.java:34)
# org.jruby.runtime.load.LoadService.load(LoadService.java:343)
# org.jruby.RubyKernel.loadCommon(RubyKernel.java:982)
# org.jruby.RubyKernel.load19(RubyKernel.java:974)
# org.jruby.RubyKernel$INVOKER$s$0$1$load19.call(RubyKernel$INVOKER$s$0$1$load19.gen)
# org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:206)
# org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:202)
# org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:318)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:155)
# org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:315)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
# org.jruby.ir.interpreter.Interpreter.INTERPRET_ROOT(Interpreter.java:107)
# org.jruby.ir.interpreter.Interpreter.execute(Interpreter.java:94)
# org.jruby.ir.interpreter.Interpreter.execute(Interpreter.java:34)
# org.jruby.ir.IRTranslator.execute(IRTranslator.java:42)
# org.jruby.Ruby.runInterpreter(Ruby.java:842)
# org.jruby.Ruby.loadFile(Ruby.java:2903)
# org.jruby.runtime.load.LibrarySearcher$ResourceLibrary.load(LibrarySearcher.java:243)
# org.jruby.runtime.load.LibrarySearcher$FoundLibrary.load(LibrarySearcher.java:34)
# org.jruby.runtime.load.LoadService.load(LoadService.java:343)
# org.jruby.RubyKernel.loadCommon(RubyKernel.java:982)
# org.jruby.RubyKernel.load19(RubyKernel.java:974)
# org.jruby.RubyKernel$INVOKER$s$0$1$load19.call(RubyKernel$INVOKER$s$0$1$load19.gen)
# org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:206)
# org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:202)
# org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:318)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:155)
# org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:315)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:109)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:95)
# org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:278)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:79)
# org.jruby.ir.instructions.CallBase.interpret(CallBase.java:432)
# org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:360)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
# org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:78)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:144)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:130)
# org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:194)
# org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:298)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:127)
# org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:344)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:109)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:95)
# org.jruby.RubyClass.finvoke(RubyClass.java:523)
# org.jruby.RubyBasicObject.send19(RubyBasicObject.java:1684)
# org.jruby.RubyBasicObject$INVOKER$i$send19.call(RubyBasicObject$INVOKER$i$send19.gen)
# org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:278)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:79)
# org.jruby.ir.instructions.CallBase.interpret(CallBase.java:432)
# org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:360)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:109)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:95)
# org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:278)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:79)
# org.jruby.ir.instructions.CallBase.interpret(CallBase.java:432)
# org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:360)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
# org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:90)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:214)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:200)
# org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:210)
# org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:338)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:183)
# org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:324)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:109)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:95)
# org.jruby.ir.runtime.IRRuntimeHelpers.classSuper(IRRuntimeHelpers.java:1019)
# org.jruby.ir.instructions.ClassSuperInstr.interpret(ClassSuperInstr.java:65)
# org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:360)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:109)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:95)
# org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:278)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:79)
# org.jruby.ir.instructions.CallBase.interpret(CallBase.java:432)
# org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:360)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:109)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:95)
# org.jruby.ir.runtime.IRRuntimeHelpers.classSuper(IRRuntimeHelpers.java:1019)
# org.jruby.ir.instructions.ClassSuperInstr.interpret(ClassSuperInstr.java:65)
# org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:360)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
# org.jruby.ir.interpreter.InterpreterEngine.interpret(InterpreterEngine.java:90)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:214)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:200)
# org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:210)
# org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:338)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:183)
# org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:324)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
# org.jruby.ir.interpreter.Interpreter.INTERPRET_BLOCK(Interpreter.java:127)
# org.jruby.runtime.MixedModeIRBlockBody.commonYieldPath(MixedModeIRBlockBody.java:149)
# org.jruby.runtime.IRBlockBody.yieldSpecific(IRBlockBody.java:84)
# org.jruby.runtime.Block.yieldSpecific(Block.java:134)
# org.jruby.ir.runtime.IRRuntimeHelpers.yieldSpecific(IRRuntimeHelpers.java:421)
# org.jruby.ir.instructions.YieldInstr.interpret(YieldInstr.java:74)
# org.jruby.ir.interpreter.StartupInterpreterEngine.processOtherOp(StartupInterpreterEngine.java:178)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:104)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.INTERPRET_METHOD(MixedModeIRMethod.java:109)
# org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:95)
# org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:278)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:79)
# org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:84)
# org.jruby.ir.instructions.CallBase.interpret(CallBase.java:429)
# org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:360)
# org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:72)
# org.jruby.ir.interpreter.Interpreter.INTERPRET_ROOT(Interpreter.java:107)
# org.jruby.ir.interpreter.Interpreter.execute(Interpreter.java:94)
# org.jruby.ir.interpreter.Interpreter.execute(Interpreter.java:34)
# org.jruby.ir.IRTranslator.execute(IRTranslator.java:42)
# org.jruby.Ruby.runInterpreter(Ruby.java:842)
# org.jruby.Ruby.loadFile(Ruby.java:2903)
# org.jruby.runtime.load.LibrarySearcher$ResourceLibrary.load(LibrarySearcher.java:243)
# org.jruby.runtime.load.LibrarySearcher$FoundLibrary.load(LibrarySearcher.java:34)
# org.jruby.runtime.load.LoadService.load(LoadService.java:343)
# org.jruby.RubyKernel.loadCommon(RubyKernel.java:982)
# org.jruby.RubyKernel.load19(RubyKernel.java:974)
# org.jruby.RubyKernel$INVOKER$s$0$1$load19.call(RubyKernel$INVOKER$s$0$1$load19.gen)
# org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:206)
# org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:202)
# org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:318)
# org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:155)
# java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627)
# org.jruby.ir.Compiler$1.load(Compiler.java:94)
# org.jruby.Ruby.runScript(Ruby.java:830)
# org.jruby.Ruby.runNormally(Ruby.java:749)
# org.jruby.Ruby.runNormally(Ruby.java:767)
# org.jruby.Ruby.runFromMain(Ruby.java:580)
# org.jruby.Main.doRunFromMain(Main.java:417)
# org.jruby.Main.internalRun(Main.java:305)
# org.jruby.Main.run(Main.java:232)
# org.jruby.Main.main(Main.java:204)
# ./spec/mongo/socket/ssl_spec.rb:346:in `block in (root)'
The offending method appears to be https://github.com/jruby/jruby-openssl/blob/master/src/main/java/org/jruby/ext/openssl/impl/PKey.java#L171.
This method should perhaps catch ClassCastException and map it to InvalidKeySpecException.
speed% jruby -v jruby 9.1.17.0 (2.3.3) 2018-04-20 d8b1ff9 OpenJDK 64-Bit Server VM 25.171-b11 on 1.8.0_171-8u171-b11-2-b11 +jit [linux-x86_64]
Same error on 9.2:
speed% jruby -v jruby 9.2.0.0 (2.5.0) 2018-05-24 81156a8 OpenJDK 64-Bit Server VM 25.171-b11 on 1.8.0_171-8u171-b11-2-b11 +jit [linux-x86_64]