United StatesChange Country, Oracle Worldwide Web Sites Communities I am a... I want to...
JDK-6962569 : assembler_sparc.cpp:1969: assert(false) failed: error

Details
Type:
Bug
Submit Date:
2010-06-18
Status:
Closed
Updated Date:
2011-03-08
Project Name:
JDK
Resolved Date:
2011-03-08
Component:
hotspot
OS:
solaris
Sub-Component:
compiler
CPU:
sparc
Priority:
P4
Resolution:
Fixed
Affected Versions:
hs19
Fixed Versions:
hs19 (b05)

Related Reports
Backport:
Backport:
Backport:
Backport:

Sub Tasks

Description
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

                                    

Comments
EVALUATION

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

http://hg.openjdk.java.net/jdk7/hotspot/hotspot/rev/e7ec8cd4dd8a
                                     
2010-07-21
EVALUATION

http://hg.openjdk.java.net/jdk7/hotspot-gc/hotspot/rev/e7ec8cd4dd8a
                                     
2010-07-15
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();
   }
                                     
2010-06-18
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.
                                     
2010-06-18



Hardware and Software, Engineered to Work Together