JDK-6962569 : assembler_sparc.cpp:1969: assert(false) failed: error
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: hs19
  • Priority: P4
  • Status: Closed
  • Resolution: Fixed
  • OS: solaris
  • CPU: sparc
  • Submitted: 2010-06-18
  • Updated: 2011-03-08
  • Resolved: 2011-03-08
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 Availabitlity Release.

To download the current JDK release, click here.
JDK 6 JDK 7 Other
6u21pFixed 7Fixed hs19Fixed
While testing G1 (with a solaris / sparc / 32-bit / server / fastdebug JVM) I came across this failure:

=============== DEBUG MESSAGE: checkcast_copy within a single array ================

# To suppress the following error report, specify this argument
# after -XX: or in .hotspotrc:  SuppressErrorAt=/assembler_sparc.cpp:1969
# A fatal error has been detected by the Java Runtime Environment:
#  Internal Error (/java/east/u2/ap31282/hotspot-g1-explicit-gcs/src/cpu/sparc/vm/assembler_sparc.cpp:1969), pid=16746, tid=35
#  assert(false) failed: error
# JRE version: 7.0-b27
# Java VM: OpenJDK Server VM (19.0-b02-internal-fastdebug mixed mode solaris-sparc )
# An error report file with more information is saved as:
# /java/east/u2/ap31282/gc_test_suite_humdinger/gclockertest/hs_err_pid16746.log
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp
Current thread is 35
Dumping core ... 

The test was the GCLockerTest:

java -XX:+UseG1GC -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -Xms2g -Xmx2500m GCLockerTest 30

EVALUATION http://hg.openjdk.java.net/jdk7/hotspot-rt/hotspot/rev/e7ec8cd4dd8a

EVALUATION http://hg.openjdk.java.net/jdk7/hotspot/hotspot/rev/e7ec8cd4dd8a

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

EVALUATION From Vladimir Kozlov: I think it is because heap addresses crossed sign bit (0x5a000000 - 0xf6400000) so compare is failed: Heap garbage-first heap total 2358272K, used 1529973K [0x5a000000, 0xe9f00000, 0xf6400000) We need to fix array_overlap_test(). From Tom Rodriguez: Right, so it's a false positive. The greaterEquals should be greaterEqualsUnsigned.

SUGGESTED FIX Tom Rodriguez suggested the following fix: --- a/src/cpu/sparc/vm/stubGenerator_sparc.cpp +++ b/src/cpu/sparc/vm/stubGenerator_sparc.cpp @@ -1007,9 +1007,9 @@ __ brx(Assembler::lessEqualUnsigned, false, Assembler::pt, (*NOLp)); __ delayed()->cmp(to_from, byte_count); if (NOLp == NULL) - __ brx(Assembler::greaterEqual, false, Assembler::pt, no_overlap_target); + __ brx(Assembler::greaterEqualUnsigned, false, Assembler::pt, no_overlap_target); else - __ brx(Assembler::greaterEqual, false, Assembler::pt, (*NOLp)); + __ brx(Assembler::greaterEqualUnsigned, false, Assembler::pt, (*NOLp)); __ delayed()->nop(); }