JDK-6459197 : ContiguousSpace::block_start() has a bogus assert
  • Type: Bug
  • Component: hotspot
  • Sub-Component: gc
  • Affected Version: 6
  • Priority: P4
  • Status: Resolved
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2006-08-10
  • Updated: 2010-04-02
  • Resolved: 2006-11-14
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.
JDK 6 JDK 7 Other
6u4Fixed 7Fixed hs10Fixed
See comments section.

WORK AROUND This bug should rarely, if ever, affect you and obviously only in fastdebug mode. If it does, use -XX:SuppressErrorAt:... to shut up the assert.

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: /net/prt-web.sfbay/prt-workspaces/20061005121000.ysr.bot/workspace (prt-web:/net/prt-web.sfbay/prt-workspaces/20061005121000.ysr.bot/workspace) User: ysr Comment: --------------------------------------------------------- Job ID: 20061005121000.ysr.bot Original workspace: karachi:/net/spot/scratch/ysr/bot Submitter: ysr Archived data: /net/prt-archiver.sfbay/data/archived_workspaces/main/gc_baseline/2006/20061005121000.ysr.bot/ Webrev: http://analemma.sfbay.sun.com/net/prt-archiver.sfbay/data/archived_workspaces/main/gc_baseline/2006/20061005121000.ysr.bot/workspace/webrevs/webrev-2006.10.05/index.html Fixed 6459197: ContiguousSpace::block_start() has a bogus assert Fixed 6465357: CMS: default choice of NewSize can cause obscure startup failure w/small -Xms Webrev: http://analemma.sfbay/net/spot/scratch/ysr/bot/webrev For the first bug, we moved the assert to a more appropriate spot. For the second bug, we were faced with two choices: either increase initial_heap_size or decrease NewSize. Because the latter can silently result in a potentially sub-optimal setting (because NewSize is not readjusted unless SurvivorSpaces are empty -- and the latter is not forced by our policy, for example, by promoting all survivors preparatory to expanding the young gen), we decided to go with the former. (In verbose mode a suitable warning is emitted.) Meanwhile, the resizing policy is actively being modified as part of CMS ergonomics at which point this will be revisited. Reviewed by: John Coomes, Jon Masamitsu, Tony Printezis Fix Verified: yes Verification Testing: the command line options in 6465357 Other testing: refworkload w/fastdebug Files: update: src/share/vm/memory/space.cpp update: src/share/vm/runtime/arguments.cpp update: src/share/vm/runtime/arguments.hpp Examined files: 3878 Contents Summary: 3 update 3875 no action (unchanged)

SUGGESTED FIX ------- space.cpp ------- *** /tmp/sccs.EOaiUk Thu Sep 7 14:09:42 2006 --- space.cpp Thu Sep 7 13:28:51 2006 *************** *** 698,704 **** if (p >= top()) { return top(); } else { - assert(oop(p)->is_oop(), "p is not an object start"); HeapWord* last = bottom(); HeapWord* cur = last; while (cur <= p) { --- 698,703 ---- *************** *** 705,710 **** --- 704,710 ---- last = cur; cur += oop(cur)->size(); } + assert(oop(last)->is_oop(), "Expected an oop start"); return last; } }


SUGGESTED FIX Remove the assert, perhaps applying it to the "last" returned from the block_start()'s else{} arm.