Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

connect raises a ClassCastException when a string is given as key in context #171

Open
p-mongo opened this issue Jul 29, 2018 · 0 comments

Comments

@p-mongo
Copy link

p-mongo commented Jul 29, 2018

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]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant