enso icon indicating copy to clipboard operation
enso copied to clipboard

Occasional StackOverflow when running Microsoft_Tests on CI

Open hubertp opened this issue 1 year ago • 3 comments

Occasionally we are getting failures when running Microsoft_Tests: The message is rather brief and we are missing a stacktrace: Execution finished with an error: Resource exhausted: Stack overflow.

hubertp avatar Oct 02 '24 12:10 hubertp

@JaroslavTulach suggested an improved error message with the following diff:

diff --git engine/runner/src/main/java/org/enso/runner/Main.java engine/runner/src/main/java/org/enso/runner/Main.java
index 7c63a8e7f5..72f17d6f97 100644
--- engine/runner/src/main/java/org/enso/runner/Main.java
+++ engine/runner/src/main/java/org/enso/runner/Main.java
@@ -1280,6 +1280,20 @@ public class Main {
     Function<StackFrame, String> fnRootName = StackFrame::getRootName;
     Function<StackFrame, SourceSection> fnSourceSection = StackFrame::getSourceLocation;
 
+    if (exception.isResourceExhausted()) {
+        try {
+            var implField = exception.getClass().getDeclaredField("impl");
+            implField.setAccessible(true);
+            var impl = implField.get(exception);
+            
+            var exceptionField = impl.getClass().getDeclaredField("exception");
+            exceptionField.setAccessible(true);
+            var ex = (Throwable)exceptionField.get(impl);
+            ex.printStackTrace();
+        } catch (ReflectiveOperationException ex) {
+        }
+    }
+
     Utils.printStackTrace(
         exception.getPolyglotStackTrace(),
         exception.isSyntaxError(),

hubertp avatar Oct 02 '24 12:10 hubertp

/cc @AdRiley

hubertp avatar Oct 02 '24 12:10 hubertp

I am consistently getting a stack overflow locally trying to run the table tests.

Adding the above code to improve the error message gives me this:

[ERROR] [2024-10-03T14:07:15.371] [org.enso.runner.Main] Error during execution
java.io.IOException: java.lang.reflect.InaccessibleObjectException: Unable to make field final java.lang.Object org.graalvm.polyglot.PolyglotException.impl accessible: module org.graalvm.polyglot does not "opens org.graalvm.polyglot" to module org.enso.runner
        at org.enso.runner/org.enso.runner.Main.withProfiling(Main.java:1257)
        at org.enso.runner/org.enso.runner.Main.launch(Main.java:1515)
        at org.enso.runner/org.enso.runner.Main.launch(Main.java:1467)
        at org.enso.runner/org.enso.runner.Main.main(Main.java:1064)
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make field final java.lang.Object org.graalvm.polyglot.PolyglotException.impl accessible: module org.graalvm.polyglot does not "opens org.graalvm.polyglot" to module org.enso.runner        at java.base/java.lang.reflect.AccessibleObject.throwInaccessibleObjectException(AccessibleObject.java:391)
        at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:367)
        at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:315)
        at java.base/java.lang.reflect.Field.checkCanSetAccessible(Field.java:183)
        at java.base/java.lang.reflect.Field.setAccessible(Field.java:177)
        at org.enso.runner/org.enso.runner.Main.printPolyglotException(Main.java:1322)
        at org.enso.runner/org.enso.runner.Main.runMain(Main.java:939)
        at org.enso.runner/org.enso.runner.Main.runPackage(Main.java:873)
        at org.enso.runner/org.enso.runner.Main.handleRun(Main.java:773)
        at org.enso.runner/org.enso.runner.Main.mainEntry(Main.java:1158)
        at org.enso.runner/org.enso.runner.Main.lambda$launch$22(Main.java:1519)
        at org.enso.runner/org.enso.runner.Main.withProfiling(Main.java:1253)
        ... 3 common frames omitted
Command failed with an error: java.io.IOException: java.lang.reflect.InaccessibleObjectException: Unable to make field final java.lang.Object org.graalvm.polyglot.PolyglotException.impl accessible: module org.graalvm.polyglot does not "opens org.graalvm.polyglot" to module org.enso.runner

AdRiley avatar Oct 03 '24 11:10 AdRiley

Fixed by increasing stack size.

GregoryTravis avatar Oct 22 '24 12:10 GregoryTravis