Details
-
Type:
Bug
-
Status:
Resolved
-
Priority:
Major
-
Resolution: Incomplete
-
Affects Version/s: JRuby 1.6.6, JRuby 1.6.7
-
Fix Version/s: None
-
Component/s: Standard Library
-
Environment:JRuby 1.6.7 (1.9 mode) installed via rbenv on MacOS 10.7.3.
Travic CI
-
Number of attachments :
Description
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:
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)
Activity
Sebastian Staudt
made changes -
| Field | Original Value | New Value |
|---|---|---|
| Attachment | error_marshal_jruby167 [ 59927 ] | |
| Attachment | error_marshal_ruby192 [ 59928 ] |
Charles Oliver Nutter
made changes -
| Status | Open [ 1 ] | Resolved [ 5 ] |
| Assignee | Thomas E Enebo [ enebo ] | Charles Oliver Nutter [ headius ] |
| Resolution | Incomplete [ 4 ] |