Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-6636164

Some BigDecimal class methods failed with java.lang.ArrayIndexOutOfBoundsException

XMLWordPrintable

    • b01
    • b02
    • generic
    • generic
    • Verified

      JDK/JRE: JRE 6u4p b01
      JDK options: any
      OS/Platform: all
      HOST: stt-33.russia, stt-21.russia, chairman.russia
      FAILED: with JRE 6u4p b01 - all platforms ( solaris, linux, windows )
      PASSED: with JDK 6u4 ( checked on b07 ), JDK 6u3 ( checked on b04 ) - all platforms
      TESTSUITE: JCK 6a fsc alt2
      TEST(s):
         api/java_math/BigDecimal/index.html#Divide[BigDecimal3231]
         api/java_math/BigDecimal/index.html#Divide[BigDecimal3232]
         api/java_math/BigDecimal/index.html#Pow[BigDecimal3240]
         api/java_math/BigDecimal/index.html#ToString[BigDecimal3101]

      Desc:
         All mentioned tests are failed with java.lang.ArrayIndexOutOfBoundsException

      How to reproduce:
      Minimal tetscase:
        import java.math.*;
         ....
        (new BigDecimal(15)).remainder(new BigDecimal(3)); // This values causes
                                                           // ArrayIndexOutOfBoundsException

      failed on all platforms with :

      Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 15
              at java.math.BigDecimal.valueOf(Unknown Source)
              at java.math.BigDecimal.valueOf(Unknown Source)
              at java.math.BigDecimal.multiply(Unknown Source)
              at java.math.BigDecimal.divideAndRemainder(Unknown Source)
              at java.math.BigDecimal.remainder(Unknown Source)
              at BDToStringTest.main(BDToStringTest.java:11)

      -------------------------
      Also a lot of other pairs of values causes the same Exception, just compile attached BDToStringTest.java
      and execute with JRE 1.6.0_04 p1 as:
      TESTED_JAVA_HOME/bin/java BDToStringTest 15 3
      or TESTED_JAVA_HOME/bin/java BDToStringTest 18 5
      or try another pairs of params.

      Also you can enter ( see details in comments ) /set/stt/jck_workspace/jdk6u4/b01-p/JCK6a/runtime/Solaris10-amd64-d64-server-Xcomp/analysis
      and use run_math.sh script ( execute JCK test ).
      It looks like not only BigDecimal.remainder() throws an exception.

      ----------------------------------------------------------------------
      Sample JCK test output ( api/java_math/BigDecimal/index.html#Divide ):
      ( Note: this test uses random number generation )
      --------------
      command: com.sun.jck.lib.ExecJCKTestOtherJVMCmd LD_LIBRARY_PATH=/set/stt/jck_promotions/6a/fcs/alt2/binaries/JCK-runtime-6a/lib/SunOS.amd64:/set/stt/jck_promotions/6a/fcs/alt2/binaries/JCK-runtime-6a/lib/SunOS.amd64/jmx:/set/stt/jck_promotions/6a/fcs/alt2/binaries/JCK-runtime-6a/lib/SunOS.amd64 DISPLAY=:0 HOME=/home/stt-robot /export/JDK/jre1.6.0_04/bin/java -d64 -server -Xcomp -Djava.ext.dirs=/set/stt/jck_promotions/6a/fcs/alt2/binaries/JCK-runtime-6a/lib/extensions:/export/JDK/jre1.6.0_04/lib/ext:/export/JDK/jre1.6.0_04/jre/lib/ext -Xfuture -classpath /set/stt/jck_promotions/6a/fcs/alt2/binaries/JCK-runtime-6a/classes:/export/JDK/jre1.6.0_04/lib/tools.jar -Djava.security.policy=/set/stt/jck_promotions/6a/fcs/alt2/binaries/JCK-runtime-6a/lib/jck.policy javasoft.sqe.tests.api.java.math.BigDecimal.DivideTests -TestCaseID ALL
      ----------out1:(40/2000)----------
      BigDecimal0045: Passed. OKAY
      BigDecimal0047: Passed. OKAY
      BigDecimal0048: Passed. OKAY
      BigDecimal0049: Passed. OKAY
      BigDecimal0050: Passed. OKAY
      BigDecimal0051: Passed. OKAY
      BigDecimal3040: Passed. OKAY
      BigDecimal3041: Passed. OKAY
      BigDecimal3042: Passed. OKAY
      BigDecimal3043: Passed. OKAY
      BigDecimal3044: Passed. OKAY
      BigDecimal3045: Passed. OKAY
      BigDecimal3046: Passed. OKAY
      BigDecimal3047: Passed. OKAY
      BigDecimal3048: Passed. OKAY
      BigDecimal3049: Passed. OKAY
      BigDecimal3050: Passed. OKAY
      BigDecimal3051: Passed. OKAY
      BigDecimal3230: Passed. OKAY [170 tests]
      java.lang.ArrayIndexOutOfBoundsException: 16
      at java.math.BigDecimal.valueOf(Unknown Source)
      at java.math.BigDecimal.valueOf(Unknown Source)
      at java.math.BigDecimal.negate(Unknown Source)
      at java.math.BigDecimal.abs(Unknown Source)
      at java.math.BigDecimal.divideToIntegralValue(Unknown Source)
      at javasoft.sqe.tests.api.java.math.BigDecimal.DecTestLine.interpret(DecTestLine.java:392)
      at javasoft.sqe.tests.api.java.math.BigDecimal.DecTestFile.run(DecTestFile.java:118)
      at javasoft.sqe.tests.api.java.math.BigDecimal.DivideTests.BigDecimal3231(DivideTests.java:1175)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
      at java.lang.reflect.Method.invoke(Unknown Source)
      at javasoft.sqe.javatest.lib.MultiTest.invokeTestCase(MultiTest.java:406)
      at javasoft.sqe.javatest.lib.MultiTest.run(MultiTest.java:195)
      at javasoft.sqe.javatest.lib.MultiTest.run(MultiTest.java:127)
      at javasoft.sqe.tests.api.java.math.BigDecimal.DivideTests.main(DivideTests.java:131)
      BigDecimal3231: Failed. Test case throws exception: java.lang.ArrayIndexOutOfBoundsException: 16
      java.lang.ArrayIndexOutOfBoundsException
      BigDecimal3232: Failed. Test case throws exception: java.lang.ArrayIndexOutOfBoundsException
      STATUS:Failed.test cases: 21; passed: 19; failed: 2; first test case failure: BigDecimal3231
      This bug also can be seen in Libraries testing.
      testbase: /net/cady/export/dtf/unified/knight-ws/suites/6.0_cady/libs
      testcases:
      java_math/BigDecimal/DivideAndRemainderTestLong compile_and_execute
      java_math/BigDecimal/DivideAndRemainderTestLongMC compile_and_execute
      java_math/BigDecimal/PowTestLongMC compile_and_execute
      java_math/BigDecimal/divideToIntegeralValueNoMC/DivideToIntegeralValueTestLong02NoMC compile_and_execute
      java_math/BigDecimal/RemainderMC/RemainderTestLongMC01 compile_and_execute
      java_math/BigDecimal/RemainderMC/RemainderTestDoubleMC01 compile_and_execute
      java_math/BigDecimal/remainder/RemainderNoMc/RemainderTestLongNoMC01 compile_and_execute
      java_math/BigDecimal/remainder/RemainderNoMc/RemainderTestLongNoMC02 compile_and_execute
      java_math/BigDecimal/add/addLong/AddTestLongUp02 compile_and_execute
      java_math/BigDecimal/add/addLong/AddTestLongDown02 compile_and_execute
      java_math/BigDecimal/add/addLong/AddTestLongCeiling02 compile_and_execute
      java_math/BigDecimal/add/addLong/AddTestLongFloor02 compile_and_execute
      java_math/BigDecimal/add/addLong/AddTestLongHalfUp02 compile_and_execute
      java_math/BigDecimal/add/addLong/AddTestLongHalfDown02 compile_and_execute
      java_math/BigDecimal/add/addLong/AddTestLongHalfEven02 compile_and_execute
      java_math/BigDecimal/multiply/multiplyLong/MultiplyTestLongUp02 compile_and_execute
      java_math/BigDecimal/multiply/multiplyLong/MultiplyTestLongDown02 compile_and_execute
      java_math/BigDecimal/multiply/multiplyLong/MultiplyTestLongCeiling02 compile_and_execute
      java_math/BigDecimal/multiply/multiplyLong/MultiplyTestLongFloor02 compile_and_execute
      java_math/BigDecimal/multiply/multiplyLong/MultiplyTestLongHalfUp02 compile_and_execute
      java_math/BigDecimal/multiply/multiplyLong/MultiplyTestLongHalfDown02 compile_and_execute
      java_math/BigDecimal/multiply/multiplyLong/MultiplyTestLongHalfEven02 compile_and_execute
      java_math/BigDecimal/subtract/subtractLong/SubtractTestLongUp02 compile_and_execute
      java_math/BigDecimal/subtract/subtractLong/SubtractTestLongDown02 compile_and_execute
      java_math/BigDecimal/subtract/subtractLong/SubtractTestLongCeiling02 compile_and_execute
      java_math/BigDecimal/subtract/subtractLong/SubtractTestLongFloor02 compile_and_execute
      java_math/BigDecimal/subtract/subtractLong/SubtractTestLongHalfUp02 compile_and_execute
      java_math/BigDecimal/subtract/subtractLong/SubtractTestLongHalfDown02 compile_and_execute
      java_math/BigDecimal/subtract/subtractLong/SubtractTestLongHalfEven02 compile_and_execute
      java_math/BigDecimal/Phase2/BigDecimalMultiplyTests compile_and_execute

      Failure log can be access from:
      http://jsqalab.sfbay/results/cady/export/results/libs/6u4p/b01/6u4p-b01-libs-Summary.html

            huntch Charlie Hunt
            dgubkin Dmitriy Gubkin (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: