United StatesChange Country, Oracle Worldwide Web Sites Communities I am a... I want to...
Bug ID: 4707386 1.3.1_02 and 1.3.1_03 crashing with Fatal: unhandled ci exception
4707386 : 1.3.1_02 and 1.3.1_03 crashing with Fatal: unhandled ci exception

Details
Type:
Bug
Submit Date:
2002-06-25
Status:
Resolved
Updated Date:
2004-09-16
Project Name:
JDK
Resolved Date:
2002-11-13
Component:
hotspot
OS:
solaris_8,linux_redhat_7.2,generic,windows_2000
Sub-Component:
compiler
CPU:
x86,sparc
Priority:
P2
Resolution:
Fixed
Affected Versions:
1.3.1,1.3.1_03,1.3.1_04,1.3.1_06,1.3.1_07
Fixed Versions:
1.3.1_08

Related Reports
Backport:
Duplicate:
Duplicate:

Sub Tasks

Description
Operating System: Solaris
OS version: SunOS 5.8 Generic Patch October 2001
Hardware platform: Netra T1405
JDK1.3.1_02 and JDK1.3.1_03

The customer's gateway server is crashing after 27 hours of testing. From the 
stack trace the compiler is being aborted in the ciEnv::get_constant_by_index_impl method of file ciEnv.cpp at line 236.
} else if (tag.is_string() || tag.is_unresolved_string()) {
   236      oop string = cpool->string_at(index, KILL_COMPILE_ON_ANY);

The full stack trace is in the attachments along with the hotspot.log and the core file is available upon request. Unfortuately there is no testcase but
the customer is able to reproduce the problem and is willing to run tests in their lab environment.




                                    

Comments
CONVERTED DATA

BugTraq+ Release Management Values

COMMIT TO FIX:
1.3.1_08
mantis

FIXED IN:
1.3.1_08
mantis

INTEGRATED IN:
1.3.1_08
mantis


                                     
2004-09-17
EVALUATION

###@###.### 2002-06-24

unpacked attachments in .../GammaBase/Bugs/4707386
the directories that dbx is trying to access and the method names in stack trace 
indicate this problem is occurring with compiler1.
  [17] cMGraphBuilderYbuild_transitive_closure
  ....
  [22] cLCompilationJbuild_hir
-----


This is probably an OutOfMemoryError propagating into the CI. We would like to
look at the core file to confirm this. In this case the workaround is to
increase the heap size; the OutOfMemoryError would have probably hit another
portion of their application anyway. In this case it's likely to be the
permanent generation filling up so the customer should specify e.g.,
-XX:MaxPermSize=128m (default is 32m, increased to 64m in later releases.)
Otherwise -Xmx can be used.

###@###.### 2002-06-25


We looked at the core file and this is definitely what's happening. Updated the
workaround. We'll make more systematic changes to fix this problem in 1.4.2.

###@###.### 2002-06-25


The set of changes for this bug fix were begun by
###@###.###. In general the approach taken has been to
return values in certain circumstances which will not crash the
compiler but will allow it to either bail out or to continue the
compile as best as possible. A bailout flag has been added to the
ciEnv so there is no possibility that machine code will be registered
during a compile where an OutOfMemoryError occurred. Two new
non-product flags, CIFireOOMAt and CIFireOOMAtDelay, have been added
to stress the system. CIFireOOMAt specifies a per-compile number of
accesses through the CI before OutOfMemoryErrors begin to be thrown
manually from a few key places in the CI's implementation.
CIFireOOMAtDelay supplies a global delay before these OOMs begin to be
fired. The latter allows C2 to generate its stubs before stressing the
bailouts in the compiler.
 
Currently CTW runs with C1 look fairly clean (have only run to ~15000
compiles). Thanks mostly to help from ###@###.###, C2 is
handling these OOMs reasonably well at this point and hundreds of
compiles with dozens of bailouts can be run. There are still some
assertion failures seen, some of which are related to fetching of
intrinsics (which I don't understand) and others which are caused by
the incorrect typing of some of the error values returned by the CI.
 
We'll spend more time after code freeze looking into the remaining
assertion failures seen during stress testing.

###@###.### 2002-11-01

removed 1.4.1_03 from the commit list as part of clean-up.
###@###.### 2004-09-16
                                     
2002-11-01
WORK AROUND

Specifying -XX:MaxPermSize=64m will almost certainly work around the problem.
Use larger sizes if necessary.

###@###.### 2002-06-25
                                     
2002-06-25



Hardware and Software, Engineered to Work Together