JDK-4947814 : CMS: assert during mark-word restoration
  • Type: Bug
  • Component: hotspot
  • Sub-Component: gc
  • Affected Version: 5.0
  • Priority: P1
  • Status: Resolved
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2003-11-03
  • Updated: 2003-12-10
  • Resolved: 2003-12-10
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
Related Reports
Relates :  
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.

CONVERTED DATA BugTraq+ Release Management Values COMMIT TO FIX: tiger-beta FIXED IN: tiger-beta INTEGRATED IN: tiger-b31 tiger-beta

EVALUATION See suggested fix section.

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)