JDK-6820066 : ParallelGC: hang on product and crash on fastdebug on SPECjbb2005 with -XX:ParGCArrayScanChunk=0
  • Type: Bug
  • Component: hotspot
  • Sub-Component: gc
  • Affected Version: hs11
  • Priority: P5
  • Status: Closed
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2009-03-20
  • Updated: 2011-04-25
  • Resolved: 2011-04-25
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 7 Other
7Fixed hs21Fixed
Description
UseParallelGC run with -XX:ParGCArrayScanChunk=0 leads to hang with product bits and
following assertion when running with fastdebug bits:

#  Internal Error (/BUILD_AREA/jdk7/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.cpp:537), pid=13863, tid=3011853200
#  Error: assert(start < end,"invariant")
#
# JRE version: 7.0-b51
# Java VM: Java HotSpot(TM) Server VM (15.0-b03-fastdebug mixed mode linux-x86 )
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp
#

---------------  T H R E A D  ---------------

Current thread (0x09d40400):  GCTaskThread [stack: 0xb37d3000,0xb3854000] [id=13865]

Stack: [0xb37d3000,0xb3854000],  sp=0xb3852c70,  free space=1fff79f2c96k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0xad49c8];;  VMError::report_and_die()+0x2f8
V  [libjvm.so+0x499115];;  report_assertion_failure(char const*, int, char const*)+0x65
V  [libjvm.so+0x975483];;  void PSPromotionManager::process_array_chunk_work<oopDesc*>(oopDesc*, int, int)+0xb3
V  [libjvm.so+0x974b1c];;  PSPromotionManager::process_array_chunk(oopDesc*)+0xfc
V  [libjvm.so+0x975191];;  PSPromotionManager::process_popped_location_depth(StarTask)+0x31
V  [libjvm.so+0x97374d];;  PSPromotionManager::drain_stacks_depth(bool)+0x10d
V  [libjvm.so+0x367f48];;  CardTableExtension::scavenge_contents(ObjectStartArray*, MutableSpace*, HeapWord*, PSPromotionManager*)+0x338
V  [libjvm.so+0x979228];;  SerialOldToYoungRootsTask::do_it(GCTaskManager*, unsigned int)+0xb8
V  [libjvm.so+0x555a7f];;  GCTaskThread::run()+0x1ff
V  [libjvm.so+0x8eaee2];;  java_start(Thread*)+0x152
C  [libpthread.so.0+0x545b]

Comments
EVALUATION http://hg.openjdk.java.net/jdk7/hotspot-comp/hotspot/rev/1fb790245268
25-03-2011

EVALUATION http://hg.openjdk.java.net/jdk7/hotspot-rt/hotspot/rev/1fb790245268
21-03-2011

EVALUATION http://hg.openjdk.java.net/jdk7/hotspot-gc/hotspot/rev/1fb790245268
16-03-2011

EVALUATION In the product build the processing in PSPromotionManager::process_array_chunk() fails to make progress.
20-03-2009

EVALUATION In the debug build the assertion failure can be relaxed. assert(start < end, "invariant"); goes to assert(start <= end, "invariant"); In that case the following loop will not be executed.
20-03-2009

WORK AROUND Patient: "Doctor it hurts when I do this." Doctor: "Don't do it."
20-03-2009

EVALUATION I'd normally be inclined to close this as "will not fix" / pilot error because you can't expect to set arbitrary maningless values to obscure options and expect the JVM to run. In an ideal world we would screen the type of each option and make sure it is the right type (in this case a positive number). However, I'll just downgrade this to a P5 for now. I'll probably end up converting this to an RFE that will automagically check types/ranges of all numeric jvm options via appropriate macroization in the globals.hpp spec (for example).
20-03-2009