Java Solaris Communities Sun Store Join SDN My Profile Why Join?
 
Bug Database
Bug Detail
Quick Lists
Top 25 Bugs
Top 25 RFE's
Recently Closed Bugs
Printable Page Printable Page


Bug Database
Bug ID: 6272923
Votes 0
Synopsis CI wrongly reports array class as unloaded after constrained klass is reported as loaded
Category hotspot:compiler2
Reported Against
Release Fixed mustang(b75)
State 10-Fix Delivered, bug
Priority: 3-Medium
Related Bugs 6573042 , 6626217 , 4761344
Submit Date 19-MAY-2005
Description
Hotspot crashes  and outputs log and the attached console message.

CONFIGURATION :
     - JDK : 6.0-ea36
     - OS  : WindowsXP SP1

REPRODUCE :
    (1) Compile the attached .java file.
    (2) Create jar files by the attached "build.bat"
    (3) Launch the command
       "java -server -Xcomp -XX:CompileOnly=Test.caller -XX:-Inline -cp Test.jar Test"

  You will see the following message and hs_log file.

K:\tmp>java -server -Xcomp -XX:CompileOnly=Test.caller -XX:-Inline -cp Test.jar Test
Test...
class name = #
# An unexpected error has been detected by HotSpot Virtual Machine:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x6da84006, pid=220, tid=3216
#
# Java VM: Java HotSpot(TM) Server VM (1.6.0-ea-b36 compiled mode)
# Problematic frame:
# V  [jvm.dll+0x1e4006]
#
# An error report file with more information is saved as hs_err_pid220.log
#
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp
#

INVESTIGATION :
   when c2 thread compiles Test.caller, invalid(incorrect) code for target variable
   seems the cause of this crash.
   Loader constraint related to the type of return value Target[] in Derived.callee
   does not seem set correctly.
   Then the class loader which loads Derived class fails to detect Target[] class
    and data flow of "target" variable stays invalid("TOP" , means NULL).
   The above invalid status can not be founded and code generated.
    When the variable "target" is referred, VM crash or NullPointerException
    seems occurs.
  xxxxx@xxxxx   2005-05-19 08:18:07 GMT
Work Around
N/A
Evaluation
LibraryCallKit::inline_native_getClass() fails to handle top() receiver adequately.
  xxxxx@xxxxx   2005-05-20 18:03:01 GMT

The above evaluation is incorrect.  

When a signature includes an array, the loader constraint for an array is not properly added to the systemDictionary's constraint table.

In the supplied test case, this causes CI to incorrectly return an unloaded ciKlass for "[LTarget;" when finding the monomorphic method at the callee() call site.  This then creates havoc with the C2 type system, which causes C2 to believe that the receiver of getClass() is TOP.
  xxxxx@xxxxx   2005-05-23 22:55:40 GMT
Re-evaluation: the constraint table and the systemDictionary are correct. The function used to query them, find_constrained_array_or_instance_klass(), does not report a consistent answer in this case.
Posted Date : 2006-02-11 01:05:09.0
Comments
  
  Include a link with my name & email   


PLEASE NOTE: JDK6 is formerly known as Project Mustang