JDK-6574315 : Compact_InternedStrings fails with "missing Printezis mark?"
  • Type: Bug
  • Component: hotspot
  • Sub-Component: gc
  • Affected Version: 7
  • Priority: P4
  • Status: Closed
  • Resolution: Duplicate
  • OS: generic
  • CPU: generic
  • Submitted: 2007-06-27
  • Updated: 2010-05-08
  • Resolved: 2008-03-12
Related Reports
Duplicate :  
Relates :  
Description
http://gtee.sfbay/gtee/results/MUSTANG/NIGHTLY/VM-MAIN/2007-06-25/GC_Baseline-Xconc/vm/LINUX-I586-ANY/server/mixed/vm-LINUX-I586-ANY_server_mixed_vm.gc.testlist2007-06-25-20-11-05/ResultDir/Compact_InternedStrings/Compact_InternedStrings.log

says that vm/gc/compact//Compact_InternedStrings failed with

    [2007-06-26T04:27:22.23] #  Internal Error (/PrtBuildDir/workspace/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp:6036), pid=15420, tid=2889628592
    [2007-06-26T04:27:22.23] #  Error: assert(_markBitMap.isMarked(addr) && _markBitMap.isMarked(addr + 1),"missing Printezis mark?")

I see from the search page that this test occasionally fails

    Testcase                    Baseline    Failure    Platform            Date
    ------------------------    --------    -------    ----------------    ----------
    Compact_InternedStrings     GC          New        Solaris Sparc V9    2007-06-01
    Compact_InternedStrings1    GC          New        Solaris Sparc V9    2007-06-01
    Compact_InternedStrings     GC-XConc    New        Solaris Sparc       2007-06-21

(and last night, on Linux-i586, though that doesn't seem to show up in the search).

I've attached the decoded hs_err file from last night's failure.
The stack trace is

    Current thread (0x08083400):  ConcurrentGCThread [stack: 0xac343000,0xac3c4000] [id=15425]

    Stack: [0xac343000,0xac3c4000],  sp=0xac3c2c00,  free space=511k
    Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
    V  [libjvm.so+0xae84b5];;  VMError::report_and_die()+0x275
    V  [libjvm.so+0x5b7c85];;  report_assertion_failure(const char*, int, const char*)+0x55
    V  [libjvm.so+0x58fe9c];;  CMSCollector::block_size_using_printezis_bits(HeapWord*) const+0x11c
    V  [libjvm.so+0x5904f2];;  CMSCollector::next_card_start_after_block(HeapWord*) const+0x32
    V  [libjvm.so+0x589b24];;  CMSCollector::preclean_card_table(ConcurrentMarkSweepGeneration*, ScanMarkedObjectsAgainCarefullyClosure*)+0x414
    V  [libjvm.so+0x5881d9];;  CMSCollector::preclean_work(bool, bool)+0x699
    V  [libjvm.so+0x5877b0];;  CMSCollector::abortable_preclean()+0x220
    V  [libjvm.so+0x580693];;  CMSCollector::collect_in_background(bool)+0xa63
    V  [libjvm.so+0x59e258];;  ConcurrentMarkSweepThread::run()+0x2a8
    V  [libjvm.so+0x94cc58];;  java_start(Thread*)+0x138
    C  [libpthread.so.0+0x5297]

It looks like this has already been filed, as

    6324141: CMS: nightly testing asserts during concurrent marking
    http://monaco.sfbay/detail.jsf?cr=6324141

but that says it was fixed in JDK-6 b58.  That bug had a different
stack trace:

    V  [libjvm.so+0x3e7480];;  unsigned CMSCollector::block_size_using_printezis_bits(HeapWord*)const+0x198
    V  [libjvm.so+0x391ac4];;  unsigned CompactibleFreeListSpace::block_size(HeapWord*,CMSCollector*)const+0x400
    V  [libjvm.so+0x3d7da4];;  void CMSConcMarkingTask::do_scan_and_mark(int,CompactibleFreeListSpace*)+0x1f4
    V  [libjvm.so+0x3d74a4];;  void CMSConcMarkingTask::work(int)+0x2d8
    V  [libjvm.so+0xd73468];;  void YieldingFlexibleGangWorker::loop()+0x10c

so maybe this is a different bug.

Comments
WORK AROUND See workaround documented at 6642634.
12-03-2008

EVALUATION This is a duplicate of 6642634; see parent CR for details re evaluation.
12-03-2008