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

CMS: reference processing crash if ParallelCMSThreads > ParallelGCThreads

XMLWordPrintable

    • gc
    • b05
    • generic, x86, sparc
    • generic, solaris, solaris_10
    • Not verified

        Run with for example:

        -XX:+PrintGCDetails -XX:+ShowMessageBoxOnError XX:+UseConcMarkSweepGC -XX:ParallelGCThreads=2 -XX:ParallelCMSThreads=10 -XX:+CMSConcurrentMTEnabled -XX:CMSInitiatingOccupancyFraction=1 -XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses


        # To suppress the following error report, specify this argument
        # after -XX: or in .hotspotrc: SuppressErrorAt=/referenceProcessor.cpp:925
        ==============================================================================
        Unexpected Error
        ------------------------------------------------------------------------------
        Internal Error at referenceProcessor.cpp:925, pid=11636, tid=13
        Error: assert(0 <= id && id < _num_q,"Id is out-of-bounds (call Freud?)")

        Do you want to debug the problem?

        To debug, run 'dbx - 11636'; then switch to thread 13
        Enter 'yes' to launch dbx automatically (PATH must include dbx)
        Otherwise, press RETURN to abort...
        ==============================================================================
        current thread: t@13
          [1] _waitid(0x0, 0x2d75, 0xf257f198, 0x3, 0x0, 0xfdae2800), at 0xff2c19e4
          [2] _waitpid(0x2d75, 0xf257f2e0, 0x0, 0x2d75, 0xd, 0x0), at 0xff268404
          [3] waitpid(0x2d75, 0xf257f2e0, 0x0, 0x0, 0x0, 0xfdae2800), at 0xff2b48dc
        =>[4] os::fork_and_exec(cmd = 0xff12ffd8 "dbx - 11636"), line 5761 in "os_solaris.cpp"
          [5] VMError::show_message_box(this = 0xf257f520, buf = 0xff12ffd8 "dbx - 11636", buflen = 2000), line 53 in "vmError_solaris.cpp"
          [6] VMError::report_and_die(this = 0xf257f520), line 661 in "vmError.cpp"
          [7] report_assertion_failure(file_name = 0xfef8262c "/net/neeraja/export/ysr/hg-gc/src/share/vm/memory/referenceProcessor.cpp", line_no = 925, message = 0xfef82675 "assert(0 <= id && id < _num_q,"Id is out-of-bounds (call Freud?)")"), line 173 in "debug.cpp"
          [8] ReferenceProcessor::get_discovered_list(this = 0x1f0e70, rt = REF_FINAL), line 925 in "referenceProcessor.cpp"
          [9] ReferenceProcessor::discover_reference(this = 0x1f0e70, obj = 0xf44182d0, rt = REF_FINAL), line 1081 in "referenceProcessor.cpp"
          [10] instanceRefKlass::oop_oop_iterate_nv(this = 0xf742ca68, obj = 0xf44182d0, closure = 0xf257f7d8), line 208 in "instanceRefKlass.cpp"
          [11] oopDesc::oop_iterate(this = 0xf44182d0, blk = 0xf257f7d8), line 470 in "oop.inline.hpp"
          [12] Par_MarkFromRootsClosure::scan_oops_in_oop(this = 0xf257f9e4, ptr = 0xf44182d0), line 7063 in "concurrentMarkSweepGeneration.cpp"
          [13] Par_MarkFromRootsClosure::do_bit(this = 0xf257f9e4, offset = 24756U), line 6980 in "concurrentMarkSweepGeneration.cpp"
          [14] BitMap::iterate(this = 0xa6448, blk = 0xf257f9e4, leftOffset = 0, rightOffset = 131072U), line 450 in "bitMap.cpp"
          [15] CMSBitMap::iterate(this = 0xa6404, cl = 0xf257f9e4, left = 0xf4400000, right = 0xf4480000), line 223 in "concurrentMarkSweepGeneration.inline.hpp"
          [16] CMSConcMarkingTask::do_scan_and_mark(this = 0xf237fb94, i = 0, sp = 0x73e80), line 3849 in "concurrentMarkSweepGeneration.cpp"
          [17] CMSConcMarkingTask::work(this = 0xf237fb94, i = 0), line 3710 in "concurrentMarkSweepGeneration.cpp"
          [18] YieldingFlexibleGangWorker::loop(this = 0xb2400), line 342 in "yieldingWorkgroup.cpp"
          [19] GangWorker::run(this = 0xb2400), line 186 in "workgroup.cpp"
          [20] java_start(thread_addr = 0xb2400), line 1010 in "os_solaris.cpp"

        Current function is ReferenceProcessor::get_discovered_list
          925 assert(0 <= id && id < _num_q, "Id is out-of-bounds (call Freud?)");
        (dbx) print id
        id = 8
        (dbx) print _num_q
        _num_q = 2
        (dbx) print ParallelGCThreads
        ParallelGCThreads = 2U
        (dbx) print ParallelCMSThreads
        ParallelCMSThreads = 10U
        As of JDK 7, ParallelCMSThreads is now called ConcGCThreads, so the synopsis
        (in the context of JDK 7) might read:-

           CMS: reference processing crash if ConcGCThreads > ParallelGCThreads

              ysr Y. Ramakrishna
              ysr Y. Ramakrishna
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Created:
                Updated:
                Resolved:
                Imported:
                Indexed: