Request for review (XXS): JDK-8004066: TEST_BUG: test/java/lang/Math/DivModTests.java assumes ArithmeticException message
Christian Thalinger
christian.thalinger at oracle.com
Fri Nov 30 19:03:00 UTC 2012
On Nov 30, 2012, at 10:48 AM, Krystal Mo <krystal.mo at oracle.com> wrote:
> Hi all,
>
> Could I get a couple of review for this small change, please?
> And could someone from the JDK side sponsor this change?
>
> Bug: https://jbs.oracle.com/bugs/browse/JDK-8004066
> Webrev: http://cr.openjdk.java.net/~kmo/8004066/webrev.00/
Looks good to me. -- Chris
>
> The DivModTest introduced in JDK-6282196 [1] checks the contents of the exception message, but that message isn't specified in JavaDoc and thus may vary between VM implementations (or even in the same VM).
>
> The issue has affected HotSpot Server VM in nightlies, and the Shark VM. As OpenJDK library code may receive broader adoption in the future, this issue may affect other VM implementations in the future as well.
>
> (Details:
> The HotSpot Server Compiler may recompile hot throw sites to throw a preallocated exception object, with null exception message, leading to a NPE in the test;
> The bytecode interpreter in Zero/Shark VM throws the ArithmeticException with "/ by long zero" for ldiv, which is different from normal HotSpot behavior (which is expected by the test) where the exception message is "/ by zero".)
>
> This change relaxes the test so that it's more lenient and less sensitive to the error message produced by the VM.
> I don't think there's a good/reliable way of verifying whether an ArithmeticException came from "division by zero", checking the type should be enough for now.
>
> Tested with the failing nightly test case and jprt.
>
> $ java -Xcomp -showversion -XX:DefaultMaxRAMFraction=8 -XX:-TieredCompilation -XX:CompileThreshold=100 -XX:+UnlockExperimentalVMOptions -XX:+IgnoreUnrecognizedVMOptions -XX:+AggressiveOpts -XX:+IgnoreUnrecognizedVMOptions -XX:-UseCompressedOops DivModTests
> java version "1.8.0-ea"
> Java(TM) SE Runtime Environment (build 1.8.0-ea-b65)
> Java HotSpot(TM) 64-Bit Server VM (build 25.0-b11-internal-fastdebug, compiled mode)
>
> Exception in thread "main" java.lang.NullPointerException
> at DivModTests.resultEquals(DivModTests.java:390)
> at DivModTests.testIntFloorMod(DivModTests.java:126)
> at DivModTests.testIntFloorDivMod(DivModTests.java:103)
> at DivModTests.testIntFloorDivMod(DivModTests.java:68)
> at DivModTests.main(DivModTests.java:45)
>
>
> Description from the bug report:
> ~/jdk/test/java/lang/Math$ java -Xint -showversion DivModTests
> java version "1.8.0-ea"
> Java(TM) SE Runtime Environment (build 1.8.0-ea-b65)
> OpenJDK 64-Bit Shark VM (build 25.0-b11-internal, interpreted mode)
>
> FAIL: long Math.floorDiv(4, 0) = java.lang.ArithmeticException: / by long zero; expected java.lang.ArithmeticException: / by zero
> FAIL: long StrictMath.floorDiv(4, 0) = java.lang.ArithmeticException: / by long zero; expected java.lang.ArithmeticException: / by zero
> FAIL: long Math.floorMod(4, 0) = java.lang.ArithmeticException: / by long zero; expected java.lang.ArithmeticException: / by zero
> FAIL: long StrictMath.floorMod(4, 0) = java.lang.ArithmeticException: / by long zero; expected java.lang.ArithmeticException: / by zero
> Exception in thread "main" java.lang.RuntimeException: 4 errors found in DivMod methods.
> at DivModTests.main(DivModTests.java:49)
>
> Regards,
> Kris
>
> [1]: https://jbs.oracle.com/bugs/browse/JDK-6282196
More information about the core-libs-dev
mailing list