JDK-6951190 : assert(!klass_is_exact(),"only non-exact klass") while building JDK
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: hs18
  • Priority: P2
  • Status: Resolved
  • Resolution: Fixed
  • OS: solaris_9
  • CPU: sparc
  • Submitted: 2010-05-10
  • Updated: 2010-09-24
  • Resolved: 2010-05-18
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
6u21pFixed 7Fixed hs18Fixed
Description
linux_x64_2.4-fastdebug (details from log file)
/net/prt-archiver.sfbay.sun.com/data/jprt/archive/2010/05/2010-05-06-220820.et151817.6u21p/logs/linux_x64_2.4-fastdebug.log
http://jprt-web.sfbay.sun.com/archive/2010/05/2010-05-06-220820.et151817.6u21p//logs/linux_x64_2.4-fastdebug.log
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (/tmp/jprt/P1/B/220820.et151817/source/hotspot/src/share/vm/opto/type.cpp:2245),
pid=27895, tid=9226
#  Error: assert(!klass_is_exact(),"only non-exact klass")
#
# JRE version: 6.0
# Java VM: Java HotSpot(TM) 64-Bit Server VM
(18.0-b04-201005062208.et151817.6u21p-fastdebug mixed mode linux-amd64
compressed oops)
# An error report file with more information is saved as:
# /tmp/jprt/P1/B/220820.et151817/source/j2se/make/sun/rmi/corbalogsources/hs_err_pid27895.log
#
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp
#
Current thread is 9226
Dumping core ...

Comments
EVALUATION http://hg.openjdk.java.net/jdk7/hotspot/hotspot/rev/e8e83be27dd7
11-05-2010

EVALUATION This looks to be a long standing issue with the String.equals intrinsic. The code checks that the receiver is a String but it never actually casts the receiver to be a String. Later on when we're processing types for the AddP we're looking for a field at +20 in Object which of course doesn't exist so we hit that assert. The fix is to perform a real checkcast which includes to required cast to String.
10-05-2010