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

jck_vm: exception06201m1 can exit with wrong value - finalize not completed

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Cannot Reproduce
    • Icon: P3 P3
    • 6
    • 6
    • hotspot
    • generic
    • generic

      <Java Home Dir>/bin/java_g -Xint -XX:+ScavengeALot -XX:-UseParallelGC -XX:ScavengeALotInterval=4 javasoft.sqe.tests.vm.concepts.execution.execution062.execution06201m1.execution06201m1

      This will always run to completion, but sometimes will return 0
      instead of the expected 95:

      VM option '+ScavengeALot'
      VM option 'ScavengeALotInterval=4'
      Scavenge no: 1 Interval: 3
      Scavenge no: 2 Interval: 1
      Scavenge no: 3 Interval: 4
      Scavenge no: 4 Interval: 4
      Scavenge no: 5 Interval: 2
      .
      .
      .
      Scavenge no: 618 Interval: 1
      Scavenge no: 619 Interval: 4
      Scavenge no: 620 Interval: 1
      Scavenge no: 621 Interval: 3
      Scavenge no: 622 Interval: 2
      Scavenge no: 623 Interval: 2
      system > echo $?
      0 <<<<<<<<<<<<< should be 95
      system >



      In this test case, an object is created and immediately discarded.
      We ensure that the object's finalizer is executed before exiting the
      process, by calling java.lang.System::runFinalizersOnExit(true). Note: runFinalizersOnExit is depricated, but still present in the 1.5 jck test suite.

      After completing execution of main, but before beginning to destroy
      the vm, a gc is invoked and the object is gc'd and placed on the
      finalizer queue. The finalizer queue begins to finalize the object,
      but before it does, control is turned back to the main thread, which
      sees that the object has already been handled, and exits, returning 0.

      This failure has occurred on both Solaris and HP-UX, both for 1.4.2
      and 1.5. A similar failure also occurs with
      vm.concepts.execution.execution062.execution06202m1.execution06202m1,
      but not nearly as consistantly.

      How often it fails is affected by what value is used for ScavengeALotInterval, as well as system load, etc.

      To reproduce this:

      cd /java/re/jck/1.5/promoted/fcs/latest/binaries/JCK-runtime-15

      run the following script

      #!/bin/sh

      while [ 1 ] ; do

       /java/re/jdk/1.6.0/latest/binaries/solaris-sparc/bin/java_g -cp lib/javatest.jar:classes -Xint -XX:+ScavengeALot -XX:-UseParallelGC -XX:ScavengeALotInterval=4 javasoft.sqe.tests.vm.concepts.execution.execution062.execution06201m1.execution06201m1 > /tmp/a.out 2> /tmp/b.out

      echo $?

      done
      ###@###.### 11/5/04 00:07 GMT

            collins Gary Collins (Inactive)
            ksoshals Kirill Soshalskiy (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: