JDK-6892749 : assert(UseParNewGC || UseSerialGC || UseConcMarkSweepGC, "...") fails
  • Type: Bug
  • Component: hotspot
  • Sub-Component: gc
  • Affected Version: hs17
  • Priority: P2
  • Status: Closed
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2009-10-18
  • Updated: 2011-03-07
  • Resolved: 2011-03-07
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
6u18Fixed 7Fixed hs16Fixed
Related Reports
Relates :  
Lots of tests are failing due to this assert:

[2009-10-18T06:38:28.12] # Actual: /export/local/common/jdk/baseline/solaris-sparcv9/bin/java -d64 -server -Xmixed -XX:DefaultMaxRAMFraction=8 -XX:-UseCompressedOops -XX:-PrintVMOptions nsk.regression.b4242912.b4242912
[2009-10-18T06:38:28.12] # To suppress the following error report, specify this argument
[2009-10-18T06:38:47.20] # after -XX: or in .hotspotrc:  SuppressErrorAt=/genCollectedHeap.hpp:270
[2009-10-18T06:38:47.20] #
[2009-10-18T06:38:47.20] # A fatal error has been detected by the Java Runtime Environment:
[2009-10-18T06:38:47.20] #
[2009-10-18T06:38:47.20] #  Internal Error (/tmp/jprt/P1/B/090751.ysr/source/src/share/vm/memory/genCollectedHeap.hpp:270), pid=60, tid=2
[2009-10-18T06:38:47.20] #  Error: assert(UseParNewGC || UseSerialGC || UseConcMarkSweepGC,"Check can_elide_initializing_store_barrier() for this collector")
[2009-10-18T06:38:47.20] #
[2009-10-18T06:38:47.20] # JRE version: 7.0-b73
[2009-10-18T06:38:47.20] # Java VM: OpenJDK 64-Bit Server VM (17.0-b01-2009-10-16-090751.ysr.cardmarks-fastdebug mixed mode solaris-sparc )
[2009-10-18T06:38:47.20] # An error report file with more information is saved as:
[2009-10-18T06:38:47.20] # /export/local/23536.JDK7.NIGHTLY.VM+solaris-sparcv9_server_mixed_nsk.quick-regression.testlist/results/ResultDir/b4242912/hs_err_pid60.log
[2009-10-18T06:38:47.20] #
[2009-10-18T06:38:47.20] # If you would like to submit a bug report, please visit:
[2009-10-18T06:38:47.20] #   http://java.sun.com/webapps/bugreport/crash.jsp
[2009-10-18T06:38:47.20] #

EVALUATION http://hg.openjdk.java.net/hsx/hsx16/master/rev/164505f3849e

EVALUATION http://hg.openjdk.java.net/hsx/hsx16/baseline/rev/164505f3849e

EVALUATION http://hg.openjdk.java.net/jdk7/hotspot-gc/hotspot/rev/052a899eec3e

SUGGESTED FIX diff -r 39b01ab7035a src/share/vm/memory/genCollectedHeap.hpp --- a/src/share/vm/memory/genCollectedHeap.hpp Fri Oct 16 02:05:46 2009 -0700 +++ b/src/share/vm/memory/genCollectedHeap.hpp Mon Oct 19 12:23:41 2009 -0700 @@ -266,8 +266,11 @@ public: // only and may need to be re-examined in case other // kinds of collectors are implemented in the future. virtual bool can_elide_initializing_store_barrier(oop new_obj) { - assert(UseParNewGC || UseSerialGC || UseConcMarkSweepGC, - "Check can_elide_initializing_store_barrier() for this collector"); + // We wanted to assert that:- + // assert(UseParNewGC || UseSerialGC || UseConcMarkSweepGC, + // "Check can_elide_initializing_store_barrier() for this collector"); + // but unfortunately the flag UseSerialGC need not necessarily always + // be set when DefNew+Tenured are being used. return is_in_youngest((void*)new_obj); }

EVALUATION The global flag UseSerialGC is not always be explcitly set when serial GC is being used. One solution is to explicitly set it at start-up in such cases where serial gc is used, so that assertions can easily check for the case where serial gc is being used by testing the value of this flag.

EVALUATION It's most likely caused by 6888898.