raml-org/raml-java-parser-2

Nashorn code generation error

Opened this issue · 3 comments

I'm building the parser under OS X Yosemite using IntelliJ. My main program just consists of

JavaNodeFactory f = new JavaNodeFactory();

When I run this I get the following stack trace. Before I start digging into why this might be happening I thought I'd ask in case the cause was obvious to others.

Thanks.

    Instance created: Wrapper
    Instance created: JavaPathResolverHolder
    Instance created: JSZ
    Instance created: JSSchema
    Instance created: JSFileSystem
    Instance created: JSReportManager
    Instance created: JSConsole
    Instance created: JSHttp
    Instance created: JSHttp
    Instance created: JSPlatformExecution
    Instance created: JSChildProcess

    Instance created: JSChildProcess

    Instance created: JSHolder
    Instance created: JSHolder
    java.lang.VerifyError: Code generation bug in "_L4609$_L4890$_L5569$_L5572": likely stack misaligned: java.lang.NullPointerException <eval>
        at jdk.nashorn.internal.codegen.CodeGenerator.leaveFunctionNode(CodeGenerator.java:1127)
        at jdk.nashorn.internal.ir.FunctionNode.accept(FunctionNode.java:297)
        at jdk.nashorn.internal.ir.LexicalContextNode$Acceptor.accept(LexicalContextNode.java:57)
        at jdk.nashorn.internal.ir.LexicalContextExpression.accept(LexicalContextExpression.java:46)
        at jdk.nashorn.internal.ir.FunctionNode.accept(FunctionNode.java:49)
        at jdk.nashorn.internal.codegen.CodeGenerator$1.enterFunctionNode(CodeGenerator.java:456)
        at jdk.nashorn.internal.ir.FunctionNode.accept(FunctionNode.java:296)
        at jdk.nashorn.internal.ir.LexicalContextNode$Acceptor.accept(LexicalContextNode.java:57)
        at jdk.nashorn.internal.ir.LexicalContextExpression.accept(LexicalContextExpression.java:46)
        at jdk.nashorn.internal.ir.FunctionNode.accept(FunctionNode.java:49)
        at jdk.nashorn.internal.codegen.CodeGenerator.load(CodeGenerator.java:424)
        at jdk.nashorn.internal.codegen.CodeGenerator.load(CodeGenerator.java:359)
        at jdk.nashorn.internal.codegen.CodeGenerator.loadArgs(CodeGenerator.java:640)
        at jdk.nashorn.internal.codegen.CodeGenerator.loadArgs(CodeGenerator.java:619)
        at jdk.nashorn.internal.codegen.CodeGenerator.access$700(CodeGenerator.java:154)
        at jdk.nashorn.internal.codegen.CodeGenerator$2.enterAccessNode(CodeGenerator.java:771)
        at jdk.nashorn.internal.ir.AccessNode.accept(AccessNode.java:63)
        at jdk.nashorn.internal.codegen.CodeGenerator.enterCallNode(CodeGenerator.java:667)
        at jdk.nashorn.internal.codegen.CodeGenerator.access$200(CodeGenerator.java:154)
        at jdk.nashorn.internal.codegen.CodeGenerator$1.enterCallNode(CodeGenerator.java:468)
        at jdk.nashorn.internal.ir.CallNode.accept(CallNode.java:186)
        at jdk.nashorn.internal.ir.LexicalContextNode$Acceptor.accept(LexicalContextNode.java:57)
        at jdk.nashorn.internal.ir.LexicalContextExpression.accept(LexicalContextExpression.java:46)
        at jdk.nashorn.internal.ir.CallNode.accept(CallNode.java:38)
        at jdk.nashorn.internal.codegen.CodeGenerator.load(CodeGenerator.java:424)
        at jdk.nashorn.internal.codegen.CodeGenerator.load(CodeGenerator.java:359)
        at jdk.nashorn.internal.codegen.CodeGenerator.enterDISCARD(CodeGenerator.java:2345)
        at jdk.nashorn.internal.ir.visitor.NodeOperatorVisitor.enterUnaryNode(NodeOperatorVisitor.java:57)
        at jdk.nashorn.internal.ir.UnaryNode.accept(UnaryNode.java:124)
        at jdk.nashorn.internal.codegen.CodeGenerator.enterExpressionStatement(CodeGenerator.java:857)
        at jdk.nashorn.internal.ir.ExpressionStatement.accept(ExpressionStatement.java:66)
        at jdk.nashorn.internal.ir.Node.accept(Node.java:291)
        at jdk.nashorn.internal.ir.Block.accept(Block.java:143)
        at jdk.nashorn.internal.ir.LexicalContextNode$Acceptor.accept(LexicalContextNode.java:57)
        at jdk.nashorn.internal.ir.Block.accept(Block.java:361)
        at jdk.nashorn.internal.ir.FunctionNode.accept(FunctionNode.java:297)
        at jdk.nashorn.internal.ir.LexicalContextNode$Acceptor.accept(LexicalContextNode.java:57)
        at jdk.nashorn.internal.ir.LexicalContextExpression.accept(LexicalContextExpression.java:46)
        at jdk.nashorn.internal.ir.FunctionNode.accept(FunctionNode.java:49)
        at jdk.nashorn.internal.codegen.CodeGenerator$1.enterFunctionNode(CodeGenerator.java:456)
        at jdk.nashorn.internal.ir.FunctionNode.accept(FunctionNode.java:296)
        at jdk.nashorn.internal.ir.LexicalContextNode$Acceptor.accept(LexicalContextNode.java:57)
        at jdk.nashorn.internal.ir.LexicalContextExpression.accept(LexicalContextExpression.java:46)
        at jdk.nashorn.internal.ir.FunctionNode.accept(FunctionNode.java:49)
        at jdk.nashorn.internal.codegen.CodeGenerator.load(CodeGenerator.java:424)
        at jdk.nashorn.internal.codegen.CodeGenerator.load(CodeGenerator.java:359)
        at jdk.nashorn.internal.codegen.CodeGenerator$8.evaluate(CodeGenerator.java:2473)
        at jdk.nashorn.internal.codegen.CodeGenerator$Store.store(CodeGenerator.java:3206)
        at jdk.nashorn.internal.codegen.CodeGenerator.enterASSIGN(CodeGenerator.java:2476)
        at jdk.nashorn.internal.ir.visitor.NodeOperatorVisitor.enterBinaryNode(NodeOperatorVisitor.java:117)
        at jdk.nashorn.internal.ir.BinaryNode.accept(BinaryNode.java:168)
        at jdk.nashorn.internal.codegen.CodeGenerator$1.enterDefault(CodeGenerator.java:479)
        at jdk.nashorn.internal.ir.visitor.NodeVisitor.enterBinaryNode(NodeVisitor.java:178)
        at jdk.nashorn.internal.ir.BinaryNode.accept(BinaryNode.java:168)
        at jdk.nashorn.internal.codegen.CodeGenerator.load(CodeGenerator.java:424)
        at jdk.nashorn.internal.codegen.CodeGenerator.load(CodeGenerator.java:359)
        at jdk.nashorn.internal.codegen.CodeGenerator.enterDISCARD(CodeGenerator.java:2345)
        at jdk.nashorn.internal.ir.visitor.NodeOperatorVisitor.enterUnaryNode(NodeOperatorVisitor.java:57)
        at jdk.nashorn.internal.ir.UnaryNode.accept(UnaryNode.java:124)
        at jdk.nashorn.internal.codegen.CodeGenerator.enterExpressionStatement(CodeGenerator.java:857)
        at jdk.nashorn.internal.ir.ExpressionStatement.accept(ExpressionStatement.java:66)
        at jdk.nashorn.internal.ir.Node.accept(Node.java:291)
        at jdk.nashorn.internal.ir.Block.accept(Block.java:143)
        at jdk.nashorn.internal.ir.LexicalContextNode$Acceptor.accept(LexicalContextNode.java:57)
        at jdk.nashorn.internal.ir.Block.accept(Block.java:361)
        at jdk.nashorn.internal.ir.FunctionNode.accept(FunctionNode.java:297)
        at jdk.nashorn.internal.ir.LexicalContextNode$Acceptor.accept(LexicalContextNode.java:57)
        at jdk.nashorn.internal.ir.LexicalContextExpression.accept(LexicalContextExpression.java:46)
        at jdk.nashorn.internal.ir.FunctionNode.accept(FunctionNode.java:49)
        at jdk.nashorn.internal.codegen.CodeGenerator$2.enterFunctionNode(CodeGenerator.java:780)
        at jdk.nashorn.internal.ir.FunctionNode.accept(FunctionNode.java:296)
        at jdk.nashorn.internal.ir.LexicalContextNode$Acceptor.accept(LexicalContextNode.java:57)
        at jdk.nashorn.internal.ir.LexicalContextExpression.accept(LexicalContextExpression.java:46)
        at jdk.nashorn.internal.ir.FunctionNode.accept(FunctionNode.java:49)
        at jdk.nashorn.internal.codegen.CodeGenerator.enterCallNode(CodeGenerator.java:667)
        at jdk.nashorn.internal.codegen.CodeGenerator.access$200(CodeGenerator.java:154)
        at jdk.nashorn.internal.codegen.CodeGenerator$1.enterCallNode(CodeGenerator.java:468)
        at jdk.nashorn.internal.ir.CallNode.accept(CallNode.java:186)
        at jdk.nashorn.internal.ir.LexicalContextNode$Acceptor.accept(LexicalContextNode.java:57)
        at jdk.nashorn.internal.ir.LexicalContextExpression.accept(LexicalContextExpression.java:46)
        at jdk.nashorn.internal.ir.CallNode.accept(CallNode.java:38)
        at jdk.nashorn.internal.codegen.CodeGenerator.load(CodeGenerator.java:424)
        at jdk.nashorn.internal.codegen.CodeGenerator.load(CodeGenerator.java:403)
        at jdk.nashorn.internal.codegen.CodeGenerator.enterVarNode(CodeGenerator.java:2180)
        at jdk.nashorn.internal.ir.VarNode.accept(VarNode.java:125)
        at jdk.nashorn.internal.ir.Node.accept(Node.java:291)
        at jdk.nashorn.internal.ir.Block.accept(Block.java:143)
        at jdk.nashorn.internal.ir.LexicalContextNode$Acceptor.accept(LexicalContextNode.java:57)
        at jdk.nashorn.internal.ir.Block.accept(Block.java:361)
        at jdk.nashorn.internal.ir.FunctionNode.accept(FunctionNode.java:297)
        at jdk.nashorn.internal.ir.LexicalContextNode$Acceptor.accept(LexicalContextNode.java:57)
        at jdk.nashorn.internal.ir.LexicalContextExpression.accept(LexicalContextExpression.java:46)
        at jdk.nashorn.internal.ir.FunctionNode.accept(FunctionNode.java:49)
        at jdk.nashorn.internal.codegen.CodeGenerator$1.enterFunctionNode(CodeGenerator.java:456)
        at jdk.nashorn.internal.ir.FunctionNode.accept(FunctionNode.java:296)
        at jdk.nashorn.internal.ir.LexicalContextNode$Acceptor.accept(LexicalContextNode.java:57)
        at jdk.nashorn.internal.ir.LexicalContextExpression.accept(LexicalContextExpression.java:46)
        at jdk.nashorn.internal.ir.FunctionNode.accept(FunctionNode.java:49)
        at jdk.nashorn.internal.codegen.CodeGenerator.load(CodeGenerator.java:424)
        at jdk.nashorn.internal.codegen.CodeGenerator.load(CodeGenerator.java:403)
        at jdk.nashorn.internal.codegen.CodeGenerator.storeElement(CodeGenerator.java:1274)
        at jdk.nashorn.internal.codegen.CodeGenerator.loadArray(CodeGenerator.java:1259)
        at jdk.nashorn.internal.codegen.CodeGenerator.loadLiteral(CodeGenerator.java:1382)
        at jdk.nashorn.internal.codegen.CodeGenerator.enterLiteralNode(CodeGenerator.java:1432)
        at jdk.nashorn.internal.codegen.CodeGenerator.access$300(CodeGenerator.java:154)
        at jdk.nashorn.internal.codegen.CodeGenerator$1.enterLiteralNode(CodeGenerator.java:473)
        at jdk.nashorn.internal.ir.LiteralNode$ArrayLiteralNode.accept(LiteralNode.java:853)
        at jdk.nashorn.internal.codegen.CodeGenerator.load(CodeGenerator.java:424)
        at jdk.nashorn.internal.codegen.CodeGenerator.load(CodeGenerator.java:403)
        at jdk.nashorn.internal.codegen.CodeGenerator.loadArgs(CodeGenerator.java:638)
        at jdk.nashorn.internal.codegen.CodeGenerator.access$1300(CodeGenerator.java:154)
        at jdk.nashorn.internal.codegen.CodeGenerator$2.enterFunctionNode(CodeGenerator.java:792)
        at jdk.nashorn.internal.ir.FunctionNode.accept(FunctionNode.java:296)
        at jdk.nashorn.internal.ir.LexicalContextNode$Acceptor.accept(LexicalContextNode.java:57)
        at jdk.nashorn.internal.ir.LexicalContextExpression.accept(LexicalContextExpression.java:46)
        at jdk.nashorn.internal.ir.FunctionNode.accept(FunctionNode.java:49)
        at jdk.nashorn.internal.codegen.CodeGenerator.enterCallNode(CodeGenerator.java:667)
        at jdk.nashorn.internal.codegen.CodeGenerator.access$200(CodeGenerator.java:154)
        at jdk.nashorn.internal.codegen.CodeGenerator$1.enterCallNode(CodeGenerator.java:468)
        at jdk.nashorn.internal.ir.CallNode.accept(CallNode.java:186)
        at jdk.nashorn.internal.ir.LexicalContextNode$Acceptor.accept(LexicalContextNode.java:57)
        at jdk.nashorn.internal.ir.LexicalContextExpression.accept(LexicalContextExpression.java:46)
        at jdk.nashorn.internal.ir.CallNode.accept(CallNode.java:38)
        at jdk.nashorn.internal.codegen.CodeGenerator.load(CodeGenerator.java:424)
        at jdk.nashorn.internal.codegen.CodeGenerator.load(CodeGenerator.java:403)
        at jdk.nashorn.internal.codegen.CodeGenerator$8.evaluate(CodeGenerator.java:2471)
        at jdk.nashorn.internal.codegen.CodeGenerator$Store.store(CodeGenerator.java:3206)
        at jdk.nashorn.internal.codegen.CodeGenerator.enterASSIGN(CodeGenerator.java:2476)
        at jdk.nashorn.internal.ir.visitor.NodeOperatorVisitor.enterBinaryNode(NodeOperatorVisitor.java:117)
        at jdk.nashorn.internal.ir.BinaryNode.accept(BinaryNode.java:168)
        at jdk.nashorn.internal.codegen.CodeGenerator$1.enterDefault(CodeGenerator.java:479)
        at jdk.nashorn.internal.ir.visitor.NodeVisitor.enterBinaryNode(NodeVisitor.java:178)
        at jdk.nashorn.internal.ir.BinaryNode.accept(BinaryNode.java:168)
        at jdk.nashorn.internal.codegen.CodeGenerator.load(CodeGenerator.java:424)
        at jdk.nashorn.internal.codegen.CodeGenerator.load(CodeGenerator.java:359)
        at jdk.nashorn.internal.codegen.CodeGenerator.enterDISCARD(CodeGenerator.java:2345)
        at jdk.nashorn.internal.ir.visitor.NodeOperatorVisitor.enterUnaryNode(NodeOperatorVisitor.java:57)
        at jdk.nashorn.internal.ir.UnaryNode.accept(UnaryNode.java:124)
        at jdk.nashorn.internal.codegen.CodeGenerator.enterExpressionStatement(CodeGenerator.java:857)
        at jdk.nashorn.internal.ir.ExpressionStatement.accept(ExpressionStatement.java:66)
        at jdk.nashorn.internal.ir.Node.accept(Node.java:291)
        at jdk.nashorn.internal.ir.Block.accept(Block.java:143)
        at jdk.nashorn.internal.ir.LexicalContextNode$Acceptor.accept(LexicalContextNode.java:57)
        at jdk.nashorn.internal.ir.Block.accept(Block.java:361)
        at jdk.nashorn.internal.ir.FunctionNode.accept(FunctionNode.java:297)
        at jdk.nashorn.internal.ir.LexicalContextNode$Acceptor.accept(LexicalContextNode.java:57)
        at jdk.nashorn.internal.ir.LexicalContextExpression.accept(LexicalContextExpression.java:46)
        at jdk.nashorn.internal.ir.FunctionNode.accept(FunctionNode.java:49)
        at jdk.nashorn.internal.codegen.CompilationPhase$8.transform(CompilationPhase.java:379)
        at jdk.nashorn.internal.codegen.CompilationPhase.apply(CompilationPhase.java:513)
        at jdk.nashorn.internal.codegen.Compiler.compile(Compiler.java:358)
        at jdk.nashorn.internal.runtime.Context.compile(Context.java:960)
        at jdk.nashorn.internal.runtime.Context.compileScript(Context.java:917)
        at jdk.nashorn.internal.runtime.Context.compileScript(Context.java:406)
        at jdk.nashorn.api.scripting.NashornScriptEngine.compileImpl(NashornScriptEngine.java:608)
        at jdk.nashorn.api.scripting.NashornScriptEngine.compileImpl(NashornScriptEngine.java:597)
        at jdk.nashorn.api.scripting.NashornScriptEngine.asCompiledScript(NashornScriptEngine.java:576)
        at jdk.nashorn.api.scripting.NashornScriptEngine.compile(NashornScriptEngine.java:216)
        at com.mulesoft.raml1.java.parser.core.JavaNodeFactory.init(JavaNodeFactory.java:257)
        at com.mulesoft.raml1.java.parser.core.JavaNodeFactory.<init>(JavaNodeFactory.java:42)
        at com.mulesoft.raml1.java.patser.test.Launcher.main(Launcher.java:18)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:483)
        at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
    Caused by: java.lang.NullPointerException
        at jdk.internal.org.objectweb.asm.Frame.merge(Frame.java:1321)
        at jdk.internal.org.objectweb.asm.MethodWriter.visitMaxs(MethodWriter.java:1496)
        at jdk.nashorn.internal.codegen.MethodEmitter.end(MethodEmitter.java:200)
        at jdk.nashorn.internal.codegen.CodeGenerator.leaveFunctionNode(CodeGenerator.java:1116)
        ... 165 more

    Process finished with exit code 0

I tried building the parser on Windows 7/Eclipse and got the same result, so the problem doesn't seem related to either OS or IDE.

Similar thing happened to me on Windows 7/Java 7.

I got it working by adding null when creating the ScriptEngineManager in src/main/java/com/mulesoft/raml1/java/parser/core/JavaNodeFactory.java

private void init() {
    engine = new ScriptEngineManager(null).getEngineByName("nashorn");
    ...

Thanks for the suggestion. Unfortunately for OS X at least it didn't fix the problem. I'll try it on Windows 7 tomorrow to see if it helps there.