United StatesChange Country, Oracle Worldwide Web Sites Communities I am a... I want to...
JDK-6700107 : java/lang/Class/forName/TooManyDimensions.java crashes with SIGSEGV in c2 compiler with fastdebug

Details
Type:
Bug
Submit Date:
2008-05-10
Status:
Closed
Updated Date:
2011-03-08
Project Name:
JDK
Resolved Date:
2011-03-08
Component:
hotspot
OS:
generic,solaris_10
Sub-Component:
runtime
CPU:
x86,generic
Priority:
P3
Resolution:
Fixed
Affected Versions:
hs12,7
Fixed Versions:
hs14 (b06)

Related Reports
Backport:
Backport:
Duplicate:

Sub Tasks

Description
java/lang/Class/forName/TooManyDimensions.java crash with SIGSEGV

Problem Description    : java/lang/Class/forName/TooManyDimensions.java crashes with SIGSEGV 
                         with 64bit jvm on solaris-amd64 platforms in c2 compiler

Java Release            : hs12
Java Builds             : b03
VM flavors              : server
VM Modes                : -Xmixed |-Xcomp
Java flags              :
Platform(s)             : solaris-amd64

                                    

Comments
EVALUATION

We could rewrite the recursive array klass allocation, that would be a good improvement and would probably help performance for large multidimensional array allocation.  It has locking for multithreading, so is not a trivial change.

This bug from this report was cause by a stack overflow because during the recursive array class allocation, we call compute_modifier_flags at each level of the recursive allocation, which recurses for each level to get to the bottom element type. The bottom_klass() is available at each level making this recursion unnecessary and increases the risk of stack overflow error, as well as having poor performance.  Fixing this allows this test to run.

As far as I can tell, nothing in the compressed oops code fixed this other than possibly changing the amount of stack used somewhere.
                                     
2008-10-07
EVALUATION

http://hg.openjdk.java.net/jdk7/hotspot-rt/hotspot/rev/443791f333a2
                                     
2008-10-14
EVALUATION

6700107: java/lang/Class/forName/TooManyDimensions.java crashes with SIGSEGV in
c2 compiler with fastdebug
Summary: objArrayKlass::compute_modifier_flags was unnecessarily recursive
Reviewed-by: kamg
                                     
2008-10-14



Hardware and Software, Engineered to Work Together