Sebastian Staudt created JRUBY-6651:
---------------------------------------

             Summary: java.lang.NegativeArraySizeException when loading a 
marshalled RuntimeException raised via RSpec
                 Key: JRUBY-6651
                 URL: https://jira.codehaus.org/browse/JRUBY-6651
             Project: JRuby
          Issue Type: Bug
          Components: Standard Library
    Affects Versions: JRuby 1.6.7, JRuby 1.6.6
         Environment: JRuby 1.6.7 (1.9 mode) installed via rbenv on MacOS 
10.7.3.
Travic CI
            Reporter: Sebastian Staudt
            Assignee: Thomas E Enebo


For braumeister.org I'm using Marshal.dump/.load via IO.pipe to communicate 
between two processes.
When I recently changed the way errors are marshalled this failure occured on 
Travis CI: http://travis-ci.org/#!/koraktor/braumeister.org/jobs/1257061.

Works fine on MRI 1.9.2, 1.9.3 and head.

The offending code: 
https://github.com/koraktor/braumeister.org/blob/master/app/models/repository.rb#L287
The offending spec: 
https://github.com/koraktor/braumeister.org/blob/master/spec/models/repository_spec.rb#L208-212


Here's the full backtrace:
{code}
Java::JavaLang::NegativeArraySizeException:
     # 
org.jruby.runtime.marshal.UnmarshalStream.unmarshalString(UnmarshalStream.java:307)
     # org.jruby.RubyString.unmarshalFrom(RubyString.java:7141)
     # 
org.jruby.runtime.marshal.UnmarshalStream.unmarshalObjectDirectly(UnmarshalStream.java:203)
     # 
org.jruby.runtime.marshal.UnmarshalStream.unmarshalObject(UnmarshalStream.java:140)
     # 
org.jruby.runtime.marshal.UnmarshalStream.unmarshalObject(UnmarshalStream.java:129)
     # 
org.jruby.runtime.marshal.UnmarshalStream.unmarshalObjectDirectly(UnmarshalStream.java:188)
     # 
org.jruby.runtime.marshal.UnmarshalStream.unmarshalObject(UnmarshalStream.java:140)
     # 
org.jruby.runtime.marshal.UnmarshalStream.unmarshalObject(UnmarshalStream.java:129)
     # 
org.jruby.runtime.marshal.UnmarshalStream.unmarshalObject(UnmarshalStream.java:102)
     # org.jruby.RubyArray.unmarshalFrom(RubyArray.java:4075)
     # 
org.jruby.runtime.marshal.UnmarshalStream.unmarshalObjectDirectly(UnmarshalStream.java:218)
     # 
org.jruby.runtime.marshal.UnmarshalStream.unmarshalObject(UnmarshalStream.java:140)
     # 
org.jruby.runtime.marshal.UnmarshalStream.unmarshalObject(UnmarshalStream.java:129)
     # 
org.jruby.runtime.marshal.UnmarshalStream.unmarshalObject(UnmarshalStream.java:102)
     # 
org.jruby.runtime.marshal.UnmarshalStream.defaultVariablesUnmarshal(UnmarshalStream.java:404)
     # org.jruby.RubyException$2.unmarshalFrom(RubyException.java:116)
     # org.jruby.RubyClass.unmarshal(RubyClass.java:1097)
     # 
org.jruby.runtime.marshal.UnmarshalStream.defaultObjectUnmarshal(UnmarshalStream.java:364)
     # 
org.jruby.runtime.marshal.UnmarshalStream.unmarshalObjectDirectly(UnmarshalStream.java:257)
     # 
org.jruby.runtime.marshal.UnmarshalStream.unmarshalObject(UnmarshalStream.java:140)
     # 
org.jruby.runtime.marshal.UnmarshalStream.unmarshalObject(UnmarshalStream.java:129)
     # 
org.jruby.runtime.marshal.UnmarshalStream.unmarshalObject(UnmarshalStream.java:102)
     # org.jruby.RubyMarshal.load(RubyMarshal.java:148)
     # org.jruby.RubyMarshal$s$0$1$load.call(RubyMarshal$s$0$1$load.gen:65535)
     # 
org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:211)
     # 
org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:207)
     # org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:167)
     # org.jruby.ast.CallOneArgNode.interpret(CallOneArgNode.java:57)
     # org.jruby.ast.LocalAsgnNode.interpret(LocalAsgnNode.java:123)
     # org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
     # org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
     # 
org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
     # 
org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:212)
     # 
org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:207)
     # org.jruby.RubyClass.finvoke(RubyClass.java:592)
     # org.jruby.RubyBasicObject.send19(RubyBasicObject.java:1704)
     # org.jruby.RubyKernel.send19(RubyKernel.java:2101)
     # org.jruby.RubyKernel$s$send19.call(RubyKernel$s$send19.gen:65535)
     # 
org.jruby.internal.runtime.methods.JavaMethod$JavaMethodZeroOrOneOrTwoOrNBlock.call(JavaMethod.java:283)
     # 
org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:332)
     # org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:203)
     # org.jruby.ast.CallTwoArgNode.interpret(CallTwoArgNode.java:59)
     # org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
     # org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
     # 
org.jruby.evaluator.ASTInterpreter.INTERPRET_BLOCK(ASTInterpreter.java:111)
     # 
org.jruby.runtime.Interpreted19Block.evalBlockBody(Interpreted19Block.java:212)
     # org.jruby.runtime.Interpreted19Block.yield(Interpreted19Block.java:200)
     # org.jruby.runtime.Interpreted19Block.yield(Interpreted19Block.java:183)
     # org.jruby.runtime.Block.yieldNonArray(Block.java:141)
     # org.jruby.RubyBasicObject.yieldUnder(RubyBasicObject.java:1818)
     # org.jruby.RubyBasicObject.specificEval(RubyBasicObject.java:1842)
     # org.jruby.RubyBasicObject.instance_eval19(RubyBasicObject.java:1730)
     # 
org.jruby.RubyBasicObject$i$instance_eval19.call(RubyBasicObject$i$instance_eval19.gen:65535)
     # 
org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:302)
     # 
org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:144)
     # org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:148)
     # 
org.jruby.ast.CallNoArgBlockPassNode.interpret(CallNoArgBlockPassNode.java:53)
     # org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
     # org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
     # org.jruby.ast.RescueNode.executeBody(RescueNode.java:216)
     # org.jruby.ast.RescueNode.interpretWithJavaExceptions(RescueNode.java:120)
     # org.jruby.ast.RescueNode.interpret(RescueNode.java:110)
     # org.jruby.ast.EnsureNode.interpret(EnsureNode.java:96)
     # org.jruby.ast.BeginNode.interpret(BeginNode.java:83)
     # org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
     # 
org.jruby.evaluator.ASTInterpreter.INTERPRET_BLOCK(ASTInterpreter.java:111)
     # 
org.jruby.runtime.Interpreted19Block.evalBlockBody(Interpreted19Block.java:212)
     # org.jruby.runtime.Interpreted19Block.yield(Interpreted19Block.java:163)
     # 
org.jruby.runtime.Interpreted19Block.yieldSpecific(Interpreted19Block.java:136)
     # org.jruby.runtime.Block.yieldSpecific(Block.java:99)
     # org.jruby.ast.ZYieldNode.interpret(ZYieldNode.java:25)
     # org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
     # org.jruby.ast.IfNode.interpret(IfNode.java:117)
     # org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
     # 
org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
     # 
org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:169)
     # 
org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:191)
     # 
org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:302)
     # 
org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:144)
     # 
org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:153)
     # org.jruby.ast.FCallNoArgBlockNode.interpret(FCallNoArgBlockNode.java:32)
     # org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
     # org.jruby.ast.IfNode.interpret(IfNode.java:119)
     # org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
     # org.jruby.ast.RescueNode.executeBody(RescueNode.java:216)
     # org.jruby.ast.RescueNode.interpretWithJavaExceptions(RescueNode.java:120)
     # org.jruby.ast.RescueNode.interpret(RescueNode.java:110)
     # org.jruby.ast.EnsureNode.interpret(EnsureNode.java:96)
     # org.jruby.ast.BeginNode.interpret(BeginNode.java:83)
     # org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
     # org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
     # 
org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
     # 
org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:233)
     # 
org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:215)
     # 
org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:332)
     # org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:203)
     # org.jruby.ast.CallTwoArgNode.interpret(CallTwoArgNode.java:59)
     # org.jruby.ast.DAsgnNode.interpret(DAsgnNode.java:110)
     # org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
     # org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
     # 
org.jruby.evaluator.ASTInterpreter.INTERPRET_BLOCK(ASTInterpreter.java:111)
     # 
org.jruby.runtime.Interpreted19Block.evalBlockBody(Interpreted19Block.java:212)
     # org.jruby.runtime.Interpreted19Block.yield(Interpreted19Block.java:163)
     # org.jruby.runtime.Block.yield(Block.java:130)
     # org.jruby.RubyArray.collect(RubyArray.java:2331)
     # org.jruby.RubyArray.collect19(RubyArray.java:2339)
     # 
org.jruby.RubyArray$i$0$0$collect19.call(RubyArray$i$0$0$collect19.gen:65535)
     # 
org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:302)
     # 
org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:144)
     # 
org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:153)
     # org.jruby.ast.CallNoArgBlockNode.interpret(CallNoArgBlockNode.java:64)
     # org.jruby.ast.CallNoArgNode.interpret(CallNoArgNode.java:63)
     # org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
     # 
org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
     # 
org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:190)
     # 
org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:199)
     # 
org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:312)
     # org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:169)
     # org.jruby.ast.FCallOneArgNode.interpret(FCallOneArgNode.java:36)
     # org.jruby.ast.LocalAsgnNode.interpret(LocalAsgnNode.java:123)
     # org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
     # org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
     # org.jruby.ast.RescueNode.executeBody(RescueNode.java:216)
     # org.jruby.ast.RescueNode.interpretWithJavaExceptions(RescueNode.java:120)
     # org.jruby.ast.RescueNode.interpret(RescueNode.java:110)
     # org.jruby.ast.EnsureNode.interpret(EnsureNode.java:96)
     # org.jruby.ast.BeginNode.interpret(BeginNode.java:83)
     # org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
     # org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
     # 
org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
     # 
org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:190)
     # 
org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:199)
     # 
org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:312)
     # org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:169)
     # org.jruby.ast.CallOneArgNode.interpret(CallOneArgNode.java:57)
     # org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
     # 
org.jruby.evaluator.ASTInterpreter.INTERPRET_BLOCK(ASTInterpreter.java:111)
     # 
org.jruby.runtime.Interpreted19Block.evalBlockBody(Interpreted19Block.java:212)
     # org.jruby.runtime.Interpreted19Block.yield(Interpreted19Block.java:163)
     # org.jruby.runtime.Block.yield(Block.java:130)
     # org.jruby.RubyArray.collect(RubyArray.java:2331)
     # org.jruby.RubyArray.collect19(RubyArray.java:2339)
     # 
org.jruby.RubyArray$i$0$0$collect19.call(RubyArray$i$0$0$collect19.gen:65535)
     # 
org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:302)
     # 
org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:144)
     # 
org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:153)
     # org.jruby.ast.CallNoArgBlockNode.interpret(CallNoArgBlockNode.java:64)
     # org.jruby.ast.CallNoArgNode.interpret(CallNoArgNode.java:63)
     # org.jruby.ast.LocalAsgnNode.interpret(LocalAsgnNode.java:123)
     # org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
     # org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
     # org.jruby.ast.RescueNode.executeBody(RescueNode.java:216)
     # org.jruby.ast.RescueNode.interpretWithJavaExceptions(RescueNode.java:120)
     # org.jruby.ast.RescueNode.interpret(RescueNode.java:110)
     # org.jruby.ast.EnsureNode.interpret(EnsureNode.java:96)
     # org.jruby.ast.BeginNode.interpret(BeginNode.java:83)
     # org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
     # org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
     # 
org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
     # 
org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:190)
     # 
org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:199)
     # 
org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:312)
     # org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:169)
     # org.jruby.ast.CallOneArgNode.interpret(CallOneArgNode.java:57)
     # org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
     # 
org.jruby.evaluator.ASTInterpreter.INTERPRET_BLOCK(ASTInterpreter.java:111)
     # 
org.jruby.runtime.Interpreted19Block.evalBlockBody(Interpreted19Block.java:212)
     # org.jruby.runtime.Interpreted19Block.yield(Interpreted19Block.java:163)
     # org.jruby.runtime.Block.yield(Block.java:130)
     # org.jruby.RubyArray.collect(RubyArray.java:2331)
     # org.jruby.RubyArray.collect19(RubyArray.java:2339)
     # 
org.jruby.RubyArray$i$0$0$collect19.call(RubyArray$i$0$0$collect19.gen:65535)
     # 
org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:302)
     # 
org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:144)
     # 
org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:153)
     # org.jruby.ast.CallNoArgBlockNode.interpret(CallNoArgBlockNode.java:64)
     # org.jruby.ast.CallNoArgNode.interpret(CallNoArgNode.java:63)
     # org.jruby.ast.IfNode.interpret(IfNode.java:111)
     # org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
     # org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
     # org.jruby.ast.EnsureNode.interpret(EnsureNode.java:96)
     # org.jruby.ast.BeginNode.interpret(BeginNode.java:83)
     # org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
     # 
org.jruby.evaluator.ASTInterpreter.INTERPRET_BLOCK(ASTInterpreter.java:111)
     # 
org.jruby.runtime.Interpreted19Block.evalBlockBody(Interpreted19Block.java:212)
     # org.jruby.runtime.Interpreted19Block.yield(Interpreted19Block.java:163)
     # 
org.jruby.runtime.Interpreted19Block.yieldSpecific(Interpreted19Block.java:141)
     # org.jruby.runtime.Block.yieldSpecific(Block.java:108)
     # org.jruby.ast.YieldOneNode.interpret(YieldOneNode.java:35)
     # org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
     # org.jruby.ast.EnsureNode.interpret(EnsureNode.java:96)
     # org.jruby.ast.BeginNode.interpret(BeginNode.java:83)
     # org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
     # org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
     # 
org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
     # 
org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:255)
     # 
org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:223)
     # 
org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:342)
     # 
org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:212)
     # 
org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:221)
     # org.jruby.ast.CallTwoArgBlockNode.interpret(CallTwoArgBlockNode.java:62)
     # org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
     # org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
     # 
org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
     # 
org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:233)
     # 
org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:215)
     # 
org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:332)
     # org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:203)
     # org.jruby.ast.CallTwoArgNode.interpret(CallTwoArgNode.java:59)
     # org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
     # org.jruby.ast.IfNode.interpret(IfNode.java:119)
     # org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
     # org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
     # org.jruby.ast.EnsureNode.interpret(EnsureNode.java:96)
     # 
org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
     # 
org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:276)
     # 
org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:231)
     # 
org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:352)
     # org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:237)
     # org.jruby.ast.FCallThreeArgNode.interpret(FCallThreeArgNode.java:40)
     # org.jruby.ast.CallNoArgNode.interpret(CallNoArgNode.java:63)
     # org.jruby.ast.FCallOneArgNode.interpret(FCallOneArgNode.java:36)
     # org.jruby.ast.IfNode.interpret(IfNode.java:119)
     # org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
     # 
org.jruby.evaluator.ASTInterpreter.INTERPRET_BLOCK(ASTInterpreter.java:111)
     # 
org.jruby.runtime.Interpreted19Block.evalBlockBody(Interpreted19Block.java:212)
     # org.jruby.runtime.Interpreted19Block.yield(Interpreted19Block.java:200)
     # org.jruby.runtime.Interpreted19Block.call(Interpreted19Block.java:131)
     # org.jruby.runtime.Block.call(Block.java:89)
     # org.jruby.RubyProc.call(RubyProc.java:270)
     # org.jruby.RubyProc.call(RubyProc.java:224)
     # org.jruby.Ruby.tearDown(Ruby.java:2780)
     # org.jruby.Ruby.tearDown(Ruby.java:2767)
     # org.jruby.Main.internalRun(Main.java:261)
     # org.jruby.Main.run(Main.java:224)
     # org.jruby.Main.run(Main.java:208)
     # 
org.jruby.util.ShellLauncher$ScriptThreadProcess.run(ShellLauncher.java:141)
     # java.lang.Thread.run(Thread.java:680)
{code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://jira.codehaus.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply via email to