United StatesChange Country, Oracle Worldwide Web Sites Communities I am a... I want to...
Bug ID: JDK-4947814 CMS: assert during mark-word restoration
JDK-4947814 : CMS: assert during mark-word restoration

Details
Type:
Bug
Submit Date:
2003-11-03
Status:
Resolved
Updated Date:
2003-12-10
Project Name:
JDK
Resolved Date:
2003-12-10
Component:
hotspot
OS:
generic
Sub-Component:
gc
CPU:
generic
Priority:
P1
Resolution:
Fixed
Affected Versions:
5.0
Fixed Versions:
5.0 (b31)

Related Reports
Backport:
Relates:

Sub Tasks

Description
Various people have reported the following assert
while executing the PRT stability tests:

solaris_sparcv9-jdk1.5-fastdebug-c2-GCBasher_CMS            FAIL (01m 14s elapsed)
It's an assertion failure:
#  Internal Error (/net/prt-solsparc-q1-5/tmp/PrtBuildDir/workspace/src/share/vm/memory/compactibleFreeListSpace.cpp, 2258 [ Patched ]), pid=19097, tid=18
#
# Java VM: Java HotSpot(TM) 64-Bit Server VM (20031029162142.wtao.tiger_rt-debug mixed mode)
#
# Error: assert(_spoolHead == _spoolTail && _firstIndex == _nextIndex,"premature")

This assert indicates that some evacuated mark words may not have been
correctly restored.

According to ovrskeek@sfbay, this was a run that failed on
prt-solsparc-q1-10, a patched (uptodate) Solaris 8 machine with 16 processors.

Further testing independently on cast (48 proc) and prt-solsparc-q1-10 (16 cpu)
have not managed to reproduce the problem in 4 days of testing. Investigation
continues while we try and reproduce the failure.

                                    

Comments
SUGGESTED FIX

Event:            putback-to
Parent workspace: /net/jano.sfbay/export/disk05/hotspot/ws/main/gc_baseline
                  (jano.sfbay:/export/disk05/hotspot/ws/main/gc_baseline)
Child workspace:  /prt-workspaces/20031202175121.ysr.auto/workspace
                  (prt-web:/prt-workspaces/20031202175121.ysr.auto/workspace)
User:             ysr

Comment:

---------------------------------------------------------

Original workspace:     neeraja:/net/spot/archive02/ysr/auto
Submitter:              ysr
Archived data:          /net/prt-archiver.sfbay/export2/archived_workspaces/main/gc_baseline/2003/20031202175121.ysr.auto/
Webrev:                 http://analemma.sfbay.sun.com/net/prt-web.sfbay/prt-workspaces/20031202175121.ysr.auto/workspace/webrevs/webrev-2003.12.02/index.html

Fixed: 4948040 returning out of memory when -XX:UseConcMarkSweepGC is used
Fixed: 4947814 CMS: assert during mark-word restoration

webrev: http://analemma.sfbay/net/spot/archive02/ysr/auto/webrev

description:
-----------
4948040: we were not correctly accounting for the
  worst-case "expansion" when promoting into the
  CMS generation, where the minimum block size
  is 3 HeapWords (at least), from a contiguous
  young generation where the minimum object size
  is 2 HeapWords.

  This also brought to light an unbounded recursion
  problem when CMSIndexedFreeListReplesnish is 1.

  Fixed the CMS initiating criteria to correctly
  use the automatic pacing feature, by tuning CMSTriggerRatio
  upwards (so as to obtain a nominal initiating occupancy
  of 92%) and using an occupancy threshold of 50% to
  trigger a collection that helps bootstrap the CMS
  automatic pacing statistics. The flags may need
  further tuning to work well across a range of
  platforms and applications.

4947814: There was a bug in the handling of the
  blocks used for spooling non-prototypical
  mark-words when we are temporarily out of
  scratch space in the CMS generation.
  Our fix uses a new splice point field
  which remembers the tail of an active
  list where a new buffer can be added when
  available as a result of expanding the
  generation.
  
Reviewed by: John Coomes, Jon Masamitsu

Approved by: Jerry Driscoll

Verification testing:
  . test in 4948040 with -XX:+/-HandlePromotionFailure
  . GCBasher -d64 for several days, debug & product

Other testing:
  . spec
  . refworkload
  . volanotest
  . tomcat

Files:
update: src/share/vm/memory/compactibleFreeListSpace.cpp
update: src/share/vm/memory/compactibleFreeListSpace.hpp
update: src/share/vm/memory/concurrentMarkSweepGeneration.cpp
update: src/share/vm/memory/concurrentMarkSweepGeneration.hpp
update: src/share/vm/memory/specialized_oop_closures.hpp
update: src/share/vm/runtime/globals.hpp

Examined files: 3013

Contents Summary:
       6   update
    3007   no action (unchanged)
                                     
2004-06-11
EVALUATION

See suggested fix section.
                                     
2004-06-11
CONVERTED DATA

BugTraq+ Release Management Values

COMMIT TO FIX:
tiger-beta

FIXED IN:
tiger-beta

INTEGRATED IN:
tiger-b31
tiger-beta


                                     
2004-06-14



Hardware and Software, Engineered to Work Together