ArrayIndexOutOfBoundsException on hover
In the greenmarl project. Using a test file in the frontend project. It triggered around the time I clicked Analysis > Show tasks > Project. Later that overflowed the heap, but the error was already there around the start so it’s probably unrelated.
Just now I tried hovering over different parts of the program, but I can’t reproduce the error.10:15 | ERROR | o.m.s.e.e.SpoofaxTextHover - Hover information creation for eclipse:///greenmarl_backend_java/conductance.gm failed unexpectedly org.metaborg.core.MetaborgException: Hover information creation failed unexpectedly at org.metaborg.spoofax.core.tracing.SpoofaxReferences.hover(SpoofaxReferences.java:160) ~[org.metaborg.spoofax.core_1.5.0.20150924-165617-new-spoofax-plugin.jar:na] at org.metaborg.spoofax.eclipse.editor.SpoofaxTextHover.hover(SpoofaxTextHover.java:62) [org.metaborg.spoofax.eclipse_1.5.0.20150924-165617-new-spoofax-plugin.jar:na] at org.metaborg.spoofax.eclipse.editor.SpoofaxTextHover.getHoverInfo(SpoofaxTextHover.java:42) [org.metaborg.spoofax.eclipse_1.5.0.20150924-165617-new-spoofax-plugin.jar:na] at org.eclipse.jface.text.TextViewerHoverManager$4.run(TextViewerHoverManager.java:168) [org.eclipse.jface.text_3.9.2.v20141003-1326.jar:na] Caused by: org.metaborg.core.MetaborgException: Invoking Stratego strategy failed unexpectedly at org.metaborg.spoofax.core.stratego.StrategoCommon.handleException(StrategoCommon.java:183) ~[org.metaborg.spoofax.core_1.5.0.20150924-165617-new-spoofax-plugin.jar:na] at org.metaborg.spoofax.core.stratego.StrategoCommon.handleException(StrategoCommon.java:181) ~[org.metaborg.spoofax.core_1.5.0.20150924-165617-new-spoofax-plugin.jar:na] at org.metaborg.spoofax.core.stratego.StrategoCommon.invoke(StrategoCommon.java:146) ~[org.metaborg.spoofax.core_1.5.0.20150924-165617-new-spoofax-plugin.jar:na] at org.metaborg.spoofax.core.tracing.SpoofaxReferences.outputs(SpoofaxReferences.java:188) ~[org.metaborg.spoofax.core_1.5.0.20150924-165617-new-spoofax-plugin.jar:na] at org.metaborg.spoofax.core.tracing.SpoofaxReferences.hover(SpoofaxReferences.java:141) ~[org.metaborg.spoofax.core_1.5.0.20150924-165617-new-spoofax-plugin.jar:na] ... 3 common frames omitted Caused by: org.spoofax.interpreter.core.InterpreterException: Foreign call of 'make-abstract' into language Analysis failed at org.metaborg.spoofax.core.stratego.primitives.ForeignCallPrimitive.call(ForeignCallPrimitive.java:74) ~[org.metaborg.spoofax.core_1.5.0.20150924-165617-new-spoofax-plugin.jar:na] at org.spoofax.interpreter.stratego.PrimT.eval(PrimT.java:63) ~[org.spoofax.interpreter.core_1.5.0.20150924-165617-new-spoofax-plugin.jar:na] at org.spoofax.interpreter.stratego.Strategy.evaluate(Strategy.java:76) ~[org.spoofax.interpreter.core_1.5.0.20150924-165617-new-spoofax-plugin.jar:na] at org.spoofax.interpreter.core.Interpreter.evaluate(Interpreter.java:109) ~[org.spoofax.interpreter.core_1.5.0.20150924-165617-new-spoofax-plugin.jar:na] at org.spoofax.interpreter.core.Interpreter.invoke(Interpreter.java:82) ~[org.spoofax.interpreter.core_1.5.0.20150924-165617-new-spoofax-plugin.jar:na] at org.strategoxt.HybridInterpreter.invoke(HybridInterpreter.java:442) ~[na:na] at org.metaborg.spoofax.core.stratego.StrategoCommon.invoke(StrategoCommon.java:140) ~[org.metaborg.spoofax.core_1.5.0.20150924-165617-new-spoofax-plugin.jar:na] ... 5 common frames omitted Caused by: org.metaborg.core.MetaborgException: Invoking Stratego strategy failed unexpectedly at org.metaborg.spoofax.core.stratego.StrategoCommon.handleException(StrategoCommon.java:183) ~[org.metaborg.spoofax.core_1.5.0.20150924-165617-new-spoofax-plugin.jar:na] at org.metaborg.spoofax.core.stratego.StrategoCommon.invoke(StrategoCommon.java:146) ~[org.metaborg.spoofax.core_1.5.0.20150924-165617-new-spoofax-plugin.jar:na] at org.metaborg.spoofax.core.stratego.StrategoCommon.invoke(StrategoCommon.java:114) ~[org.metaborg.spoofax.core_1.5.0.20150924-165617-new-spoofax-plugin.jar:na] at org.metaborg.spoofax.core.stratego.primitives.ForeignCallPrimitive.call(ForeignCallPrimitive.java:61) ~[org.metaborg.spoofax.core_1.5.0.20150924-165617-new-spoofax-plugin.jar:na] ... 11 common frames omitted Caused by: org.spoofax.interpreter.core.InterpreterException: Exception during evaluation at org.spoofax.interpreter.core.Interpreter.evaluate(Interpreter.java:120) ~[org.spoofax.interpreter.core_1.5.0.20150924-165617-new-spoofax-plugin.jar:na] at org.spoofax.interpreter.core.Interpreter.invoke(Interpreter.java:82) ~[org.spoofax.interpreter.core_1.5.0.20150924-165617-new-spoofax-plugin.jar:na] at org.strategoxt.HybridInterpreter.invoke(HybridInterpreter.java:442) ~[na:na] at org.metaborg.spoofax.core.stratego.StrategoCommon.invoke(StrategoCommon.java:140) ~[org.metaborg.spoofax.core_1.5.0.20150924-165617-new-spoofax-plugin.jar:na] ... 13 common frames omitted Caused by: java.lang.ArrayIndexOutOfBoundsException: -1 at org.spoofax.interpreter.core.StackTracer.push(StackTracer.java:39) ~[org.spoofax.interpreter.core_1.5.0.20150924-165617-new-spoofax-plugin.jar:na] at org.spoofax.interpreter.stratego.CallT.eval(CallT.java:50) ~[org.spoofax.interpreter.core_1.5.0.20150924-165617-new-spoofax-plugin.jar:na] at org.spoofax.interpreter.stratego.Strategy.evaluate(Strategy.java:76) ~[org.spoofax.interpreter.core_1.5.0.20150924-165617-new-spoofax-plugin.jar:na] at org.spoofax.interpreter.core.Interpreter.evaluate(Interpreter.java:109) ~[org.spoofax.interpreter.core_1.5.0.20150924-165617-new-spoofax-plugin.jar:na] ... 16 common frames omitted
Eclipse: org.eclipse.epp.package.standard.feature.feature.group 4.4.2.20150219-0708 Spoofax: org.metaborg.spoofax.eclipse 1.5.0.20150924-165617-new-spoofax-plugin System: Linux amd64 3.13.0-37-genericSubmitted by Jeff Smits on 29 September 2015 at 19:30
Issue Log
This is a Stratego multithreading issue that is not easy to solve. Spent almost an entire day figuring out why this is happening, but could not find the exact reason. I will need to make sure that Stratego is only called from a single thread..
‘Fixed’ by not allowing Stratego multithreading. Needs huge architectural changes in StrategoXT to fix this.
Does that fix make Stratego much slower?
No, but it does prevent concurrent Stratego calls (analysis, outline, hover, resolution), they are handled sequentially.
Log in to post comments