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.

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)