[TESTBUG] testlibrary_tests/template_framework/examples/TestExpressions.java fails with ArithmeticException: / by zero - forgot to respect Expression.info

XMLWordPrintable

    • b21

      Reproduced it like this:

      /home/empeter/Documents/oracle/jtreg/bin/jtreg -va -s -jdk:/home/empeter/Documents/oracle/jdk-fork4/build/linux-x64-debug/jdk -javaoptions:"-Djdk.test.lib.random.seed=5693299018761777710 -DVerbose=true -DCompileFrameworkVerbose=true" -J-Djavatest.maxOutputSize=10000000 /home/empeter/Documents/oracle/jdk-fork4/open/test/hotspot/jtreg/testlibrary_tests/template_framework/examples/TestExpressions.java



      It crashes with:

      Test Failures (1)
      -----------------
      Base Test: @Test primitiveConTest_185:
      compiler.lib.ir_framework.shared.TestRunException: There was an error while invoking @Test method public static void p.xyz.InnerTest.primitiveConTest_185(). Target: null. Arguments: <void>
      at compiler.lib.ir_framework.test.BaseTest.invokeTestMethod(BaseTest.java:84)
      at compiler.lib.ir_framework.test.BaseTest.invokeTest(BaseTest.java:71)
      at compiler.lib.ir_framework.test.AbstractTest.run(AbstractTest.java:100)
      at compiler.lib.ir_framework.test.TestVM.runTests(TestVM.java:865)
      at compiler.lib.ir_framework.test.TestVM.start(TestVM.java:255)
      at compiler.lib.ir_framework.test.TestVM.main(TestVM.java:168)
      Caused by: java.lang.reflect.InvocationTargetException
      at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:119)
      at java.base/java.lang.reflect.Method.invoke(Method.java:565)
      at compiler.lib.ir_framework.test.BaseTest.invokeTestMethod(BaseTest.java:80)
      ... 5 more
      Caused by: java.lang.ArithmeticException: / by zero
      at p.xyz.InnerTest.primitiveConTest_185_compiled(InnerTest.java:1001)
      at p.xyz.InnerTest.primitiveConTest_185(InnerTest.java:994)
      at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
      ... 7 more


      The reason is that we generated a test like this:

      public static int primitiveConTest_185_compiled() {
      return (989451435 % 0);
      }


      We generate the test with random constants, and so a zero can rarely appear. And we could know that some Expressions get exceptions, if we looked at the Expression.info, but this test here does not do that.

            Assignee:
            Emanuel Peter
            Reporter:
            Emanuel Peter
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: