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: 4517252
Votes 5
Synopsis Hotspot crashes
Category hotspot:compiler2
Reported Against 1.3.1
Release Fixed
State 11-Closed, duplicate of 4614097, bug
Priority: 2-High
Related Bugs 4395735 , 4614097
Submit Date 19-OCT-2001
Description
Customer problem description:
------------------------------
When this server is hit with a load of HTTP requests VM crashes.
They are using jdk1.3.1 -server option and  get the following JVM crash.
>
>#
># HotSpot Virtual Machine Error, Internal Error
># Please report this error at
># http://java.sun.com/cgi-bin/bugreport.cgi
>#
># Error ID: 53414645504F494E540E43505002EA
>#
>abnormal program termination

We ran with the -XX+ShowMessageBoxOnError flag.  I got the stack trace from Visual C++ debugger. 
In a sample dry run, the java executable grows in sizeand then OutOfMemoryError appeared in the log just after verbose gc output.

Testcase:
We have things set up so that you should be able
to get access to the system running the tests.

In a browser, connect to the URL //205.180.14.95:5800
This will give you a VNC loggin screen.  The password
is "sunjava".  Once you log in, you will have an image
of the machines monitor.

One of the windows is running Buyer.  I believe we are
still running with MessageBox on, so you will be able
to get into Visual C++ from there.

You have to enable your proxy settings the following way:
remove your proxy configuration and add pluto.ebay as the socks 
host with port:1080

Please assign someone with  customer  skillset. As Ariba is known to be a trouble maker.
Work Around
None
Evaluation
Based on email with Mir, I'm sending this back as 'incomplete'.
Mir was going to re-test with the 1.3.1_02 which might have fixed it,
or escalate with CTE if not.  If it escalates I'm sure it will come
back to me soon enough.  :-)

  xxxxx@xxxxx   2001-11-02

  xxxxx@xxxxx   2002-02-05

Analysed the memory dump file(drwtsn.dmp) sent by the customer using WinDbg. The dump file is available in the Attachments. Found out the offending method name and its class for which the bad oop was getting generated.

* The method name is found to be:
	java.lang.Object nextElement();

of class "ariba.common.core.ObjectArrayEnumerator".

The customer has been suggested the workaround to disable the compilation of the above method.


Analysis of crash dump(drwtsn.dmp)
----------------------------------

Class of the ofending method
----------------------------
codeblob* is (which is nmethod *) = 0x00fa3490

methodOop = *(0x00fa3490+0x2c) = 0x392905f0

Constant Pool = *(0x392905f0+0x08) = 0x39290370

pool-holder(klassOop) = *(39290370+0x14) = 0x39290698

Class name symbolOop = *(0x39290698+0x24) = 0x38fd7a48

Class name = (char*)(38fd7a48 + 0xe) = ariba/common/core/ObjectArrayEnumerator

------------------------------------------------------------------------------

Offending method name
---------------------
method name index is 24 bytes from the start of methodOop.
method signature index is 26 bytes from the start of methodOop.

name index =  37
signature index = 11

method signature symbolOop = *(constantpool + 24 + signatureindex*4) = 0x380e24d0

method signature = (char*)(0x380e24d0 + 0xe) = ()Ljava/lang/Object;

method name symbolOop = *(constantpool + 26 + nameindex*4) = 0x380f9a00

mathod name = (char*)(0x380f9a00 + 0xe)  = nextElement

-------------------------------------------------------------------------------

  xxxxx@xxxxx   2002-02-05

----------------------------------
Further analysis of the memory dump:

frame* (first parameter of OopMapSet::oops_do() = 0x3a4ffde8

_pc is at offset 4 from start of frame. = 0x00fa35d2 

From nmethod:  entry_point = 0x00fa3560   
	      _instructions_offset = 0x000000d0 = 208	
	      _oops_offset = 0x00000268 = 616	
	      _scopes_data_offset = 416
	      _scopes_pcs_offset = 506
	      _handler_table_offset = 616

instructions_begin = (nmethod*)+_instructions_offset = 0x00fa3560
_scopes_data_begin = (nmethod*)+_scopes_data_offset = 0x00fa3630
_scopes_data_end = (nmethod*)+_scopes_pcs_offset = 0x00fa3688
_scopes_pcs_begin = (nmethod*)+_scopes_pcs_offset = 0x00fa3688
_scopes_pcs_end = (nmethod*)+_handler_table_offset = 0x00fa36f8
oops_begin  = (nmethod*)+_oops_offset = 00fa36f8

pc offset = pc - instruction begin  = 0x72 = 114

Now, search for this pc offset in the pcDesc array starting from 
_scopes_pcs_begin.
The next entry is scopes_decode_offset = 0xffffffbd = (-67) negative sign means 
not at call(It is jmp)

scopes data buffer = _scopes_data_begin + scopes_decode_offset = 0x00fa35ed

From raw_int:

method oop index = 12
bci = 57

From method oop index, the methodoop of inlined method is:

methodOop -> oops_begin + (method oop index)*4
	  = 0x00fa36f8 + (12)*4 = 392905f0 which is same as the original 
methodOop.


Instruction at the _pc is:

	00fa35d2 0f8cbfffffff     jl      00fa3597

As 00fa3597 < 00fa35d2 , this is backward jump. 
So safepoint at backward jump contained a bad oop.
-------------------------------------------------------------- 
  xxxxx@xxxxx   2002-02-07
Comments
  
  Include a link with my name & email   


PLEASE NOTE: JDK6 is formerly known as Project Mustang