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 :  
Description
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] #

Comments
EVALUATION http://hg.openjdk.java.net/hsx/hsx16/master/rev/164505f3849e
22-10-2009

EVALUATION http://hg.openjdk.java.net/hsx/hsx16/baseline/rev/164505f3849e
22-10-2009

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

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); }
19-10-2009

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.
19-10-2009

EVALUATION It's most likely caused by 6888898.
18-10-2009