There have been several assertions in concurrent marking code that was recently touched.
Specifically, where previously we would defer scanning of objects
allocated since the start of marking to the precleaning phase,
we now do such scanning more eagerly. This was an enabling step
towards the CMS "clean on enter" optimization, which, by the way
has been enabled in the single-threaded case.
We have since then seen assertions in related code.
Here are some instances of these assertions:
--------------------------------------------------
http://vmsqe.sfbay/nightly/mantis/DTWS/results/09-11-05/ClientVM/Solsparc/mixed/Gc_Baseline-Xconc/RT_PLUMHALL-NIGHTLY-Gc_Baseline-Xconc-ClientVM-mixed-Solsparc-2005-09-11-21-25-03/log
# To suppress the following error report, specify this argument
# after -XX: or in .hotspotrc:
SuppressErrorAt=/concurrentMarkSweepGeneration.cpp:6414]
#
# An unexpected error has been detected by HotSpot Virtual Machine:
#
# Internal Error
(/net/prt-solsparc-q1-18/tmp/PrtBuildDir/workspace/src/share/vm/memory/concurrentMarkSweepGeneration.cpp,
6414 [ Patched ]), pid=8109, tid=6
#
# Java VM: Java HotSpot(TM) Client VM
(20050908154901.jcoomes.gc_merge-debug mixed mode)
#
# Error: assert(_finger > ptr,"we just incremented it above")
# An error report file with more information is saved as hs_err_pid8109.log
#
# If you would like to submit a bug report, please visit:
# http://java.sun.com/webapps/bugreport/crash.jsp
#
---------------------------------------------------------------------------------
# Error: assert(_finger > ptr,"we just incremented it above")
# Error: assert(_markBitMap.isMarked(addr) && _markBitMap.isMarked(addr
+ 1),"missing Printezis mark?")
# An unexpected error has been detected by HotSpot Virtual Machine:
#
# Internal Error (/net/prt-solsparc-q1-10/tmp/PrtBuildDir/workspace/src/share/vm/memory/concurrentMarkSweepGe
neration.cpp, 5759 [ Patched ]), pid=19697, tid=9
#
# Java VM: Java HotSpot(TM) Client VM (20050920144303.ysr.MT-debug mixed mode)
#
# Error: assert(_markBitMap.isMarked(addr) && _markBitMap.isMarked(addr + 1),"missing Printezis mark?")
--------------- T H R E A D ---------------
Current thread (0x000f8f00): GCTaskThread [id=9]
Stack:
[error occurred during error reporting, step 110, id 0xe0000000]
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [libjvm.so+0xd3c61c];; __1cHVMErrorOreport_and_die6M_v_+0x7d8
V [libjvm.so+0x422870];; __1cYreport_assertion_failure6Fpkci1_v_+0x6c
V [libjvm.so+0xd3b5f4];; __1cHVMErrorGreport6MpnMoutputStream__v_+0x510
V [libjvm.so+0xd3c61c];; __1cHVMErrorOreport_and_die6M_v_+0x7d8
V [libjvm.so+0x422870];; __1cYreport_assertion_failure6Fpkci1_v_+0x6c
V [libjvm.so+0x3e7480];; __1cMCMSCollectorbFblock_size_using_printezis_bits6kMpnIHeapWord__I_+0x198
V [libjvm.so+0x391ac4];; __1cYCompactibleFreeListSpaceKblock_size6kMpnIHeapWord_pnMCMSCollector__I_+0x400
V [libjvm.so+0x3d7da4];; __1cSCMSConcMarkingTaskQdo_scan_and_mark6MipnYCompactibleFreeListSpace__v_+0x1f4
V [libjvm.so+0x3d74a4];; __1cSCMSConcMarkingTaskEwork6Mi_v_+0x2d8
V [libjvm.so+0xd73468];; __1cbAYieldingFlexibleGangWorkerEloop6M_v_+0x10c
V [libjvm.so+0xada7c0];; java_start+0x14c