JDK-8203187 : [Graal] Compilation fails with StackOverflowError
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 11
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • Submitted: 2018-05-15
  • Updated: 2018-05-30
  • Resolved: 2018-05-29
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 11
11Fixed
Related Reports
Duplicate :  
Description
The code is attached. Graal failed with:
hread[JVMCI CompilerThread0,9,system]: Compilation of Test.vMeth(double) failed: java.lang.StackOverflowError
        at jdk.internal.vm.ci/jdk.vm.ci.meta.NullConstant.isNull(NullConstant.java:40)
        at jdk.internal.vm.ci/jdk.vm.ci.meta.JavaConstant.isNonNull(JavaConstant.java:76)
        at jdk.internal.vm.compiler@11-ea/org.graalvm.compiler.nodes.StaticDeoptimizingNode.computePriority(StaticDeoptimizingNode.java:68)
        at jdk.internal.vm.compiler@11-ea/org.graalvm.compiler.phases.common.ConvertDeoptimizeToGuardPhase.propagateFixed(ConvertDeoptimizeToGuardPhase.java:169)
        at jdk.internal.vm.compiler@11-ea/org.graalvm.compiler.phases.common.ConvertDeoptimizeToGuardPhase.propagateFixed(ConvertDeoptimizeToGuardPhase.java:182)
        at jdk.internal.vm.compiler@11-ea/org.graalvm.compiler.phases.common.ConvertDeoptimizeToGuardPhase.propagateFixed(ConvertDeoptimizeToGuardPhase.java:182)
        at jdk.internal.vm.compiler@11-ea/org.graalvm.compiler.phases.common.ConvertDeoptimizeToGuardPhase.propagateFixed(ConvertDeoptimizeToGuardPhase.java:182)
        at jdk.internal.vm.compiler@11-ea/org.graalvm.compiler.phases.common.ConvertDeoptimizeToGuardPhase.propagateFixed(ConvertDeoptimizeToGuardPhase.java:182)
        at jdk.internal.vm.compiler@11-ea/org.graalvm.compiler.phases.common.ConvertDeoptimizeToGuardPhase.propagateFixed(ConvertDeoptimizeToGuardPhase.java:182)
        at jdk.internal.vm.compiler@11-ea/org.graalvm.compiler.phases.common.ConvertDeoptimizeToGuardPhase.propagateFixed(ConvertDeoptimizeToGuardPhase.java:182)
        at jdk.internal.vm.compiler@11-ea/org.graalvm.compiler.phases.common.ConvertDeoptimizeToGuardPhase.propagateFixed(ConvertDeoptimizeToGuardPhase.java:182)
        at jdk.internal.vm.compiler@11-ea/org.graalvm.compiler.phases.common.ConvertDeoptimizeToGuardPhase.propagateFixed(ConvertDeoptimizeToGuardPhase.java:182)
        at jdk.internal.vm.compiler@11-ea/org.graalvm.compiler.phases.common.ConvertDeoptimizeToGuardPhase.propagateFixed(ConvertDeoptimizeToGuardPhase.java:182)
        at jdk.internal.vm.compiler@11-ea/org.graalvm.compiler.phases.common.ConvertDeoptimizeToGuardPhase.propagateFixed(ConvertDeoptimizeToGuardPhase.java:182)
        at jdk.internal.vm.compiler@11-ea/org.graalvm.compiler.phases.common.ConvertDeoptimizeToGuardPhase.propagateFixed(ConvertDeoptimizeToGuardPhase.java:182)
        at jdk.internal.vm.compiler@11-ea/org.graalvm.compiler.phases.common.ConvertDeoptimizeToGuardPhase.propagateFixed(ConvertDeoptimizeToGuardPhase.java:182)
        at jdk.internal.vm.compiler@11-ea/org.graalvm.compiler.phases.common.ConvertDeoptimizeToGuardPhase.propagateFixed(ConvertDeoptimizeToGuardPhase.java:182)
        at jdk.internal.vm.compiler@11-ea/org.graalvm.compiler.phases.common.ConvertDeoptimizeToGuardPhase.propagateFixed(ConvertDeoptimizeToGuardPhase.java:182)
        at jdk.internal.vm.compiler@11-ea/org.graalvm.compiler.phases.common.ConvertDeoptimizeToGuardPhase.propagateFixed(ConvertDeoptimizeToGuardPhase.java:182)
        at jdk.internal.vm.compiler@11-ea/org.graalvm.compiler.phases.common.ConvertDeoptimizeToGuardPhase.propagateFixed(ConvertDeoptimizeToGuardPhase.java:182)
        at jdk.internal.vm.compiler@11-ea/org.graalvm.compiler.phases.common.ConvertDeoptimizeToGuardPhase.propagateFixed(ConvertDeoptimizeToGuardPhase.java:182)
        at jdk.internal.vm.compiler@11-ea/org.graalvm.compiler.phases.common.ConvertDeoptimizeToGuardPhase.propagateFixed(ConvertDeoptimizeToGuardPhase.java:182)
        at jdk.internal.vm.compiler@11-ea/org.graalvm.compiler.phases.common.ConvertDeoptimizeToGuardPhase.propagateFixed(ConvertDeoptimizeToGuardPhase.java:182)
        at jdk.internal.vm.compiler@11-ea/org.graalvm.compiler.phases.common.ConvertDeoptimizeToGuardPhase.propagateFixed(ConvertDeoptimizeToGuardPhase.java:182)
        at jdk.internal.vm.compiler@11-ea/org.graalvm.compiler.phases.common.ConvertDeoptimizeToGuardPhase.propagateFixed(ConvertDeoptimizeToGuardPhase.java:182)
        at jdk.internal.vm.compiler@11-ea/org.graalvm.compiler.phases.common.ConvertDeoptimizeToGuardPhase.propagateFixed(ConvertDeoptimizeToGuardPhase.java:182)
Comments
This should be resolved by https://github.com/oracle/graal/commit/184bc7a355f4031f3eba727babf167992825906b
29-05-2018

Please note that I run it with java -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI -XX:-TieredCompilation -XX:+UseJVMCICompiler -Djvmci.Compiler=graal -XX:CompileOnly=Test -Xcomp -Xbatch Test
15-05-2018

Thanks, Doug!
15-05-2018

I've assigned this to someone on the Graal team who is not yet an OpenJDK member.
15-05-2018

ILW = Graal compilation fails with StackOverflowError, reproducible with javafuzzer generated test, use C2 or disable compilation = MMM = P3
15-05-2018

Hi Doug, could you please have a look?
15-05-2018

The test files produced by javafuzzer and graal output are attached.
15-05-2018