Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 198779

Summary: Java HotSpot Error in libjava.so Java_java_lang_Class_forName0
Product: z_Archived Reporter: Tilmann Zaeschke <hans.hans.hans>
Component: TPTPAssignee: Bing Xu <xubing>
Status: CLOSED WORKSFORME QA Contact:
Severity: major    
Priority: P1 CC: asaf.yaffe, bugs.eclipse.org, hans.hans.hans, igor.alelekov, jkubasta
Version: unspecifiedKeywords: plan
Target Milestone: ---   
Hardware: PC   
OS: Linux   
Whiteboard: closed460
Attachments:
Description Flags
jvm crash log
none
Byte code enhanced class file.
none
The java file
none
The pickler file (generated by the byte code enhancer).
none
Java file again, without references to my project
none
byte code enhanced class file again, without references to my project
none
Pickler file again (generated by the enhancer), without references to my project
none
jvm crash log again, without references to my project
none
MARTINI log file as request none

Description Tilmann Zaeschke CLA 2007-08-03 04:40:48 EDT
Created attachment 75302 [details]
jvm crash log

Build ID: I20070625-1500

Steps To Reproduce:
Reproducible with both 4.4.0.1 and TPTP-4.4.0.2-200707271340.
Trying to profile an application that uses byte-code enhanced classes, enhanced for use with the Versant object database 7.0.1.3 (www.versant.com).

I will attach the jvm-crash log and the class file.

If the above information is not sufficient to identify the problem, then I will contact Versant whether they allow me to post the required libraries, or provide a demo version, or even give directly support for this problem.

Severity to "major" as all Versant byte code enhanced applications crash, with slightly different crash-logs though. 

Please let me know what to do.



More information:
Comment 1 Tilmann Zaeschke CLA 2007-08-03 04:42:03 EDT
Created attachment 75303 [details]
Byte code enhanced class file.
Comment 2 Tilmann Zaeschke CLA 2007-08-03 04:42:46 EDT
Created attachment 75304 [details]
The java file
Comment 3 Tilmann Zaeschke CLA 2007-08-03 04:43:27 EDT
Created attachment 75305 [details]
The pickler file (generated by the byte code enhancer).
Comment 4 Tilmann Zaeschke CLA 2007-08-03 05:05:02 EDT
Created attachment 75308 [details]
Java file again, without references to my project
Comment 5 Tilmann Zaeschke CLA 2007-08-03 05:05:44 EDT
Created attachment 75309 [details]
byte code enhanced class file again, without references to my project
Comment 6 Tilmann Zaeschke CLA 2007-08-03 05:06:31 EDT
Created attachment 75310 [details]
Pickler file again (generated by the enhancer), without references to my project
Comment 7 Tilmann Zaeschke CLA 2007-08-03 05:07:09 EDT
Created attachment 75311 [details]
jvm crash log again, without references to my project
Comment 8 Tilmann Zaeschke CLA 2007-08-24 05:26:32 EDT
Just tested it with 4.4.0.2, and the problem is still there.
Comment 9 Bing Xu CLA 2008-01-16 16:58:32 EST
HotSpot on SUSE 10.1 is not supported according to http://www.eclipse.org/tptp/home/project_info/releaseinfo/4.4/support.html.    

Have you tried IBM JVM?
Comment 10 Tilmann Zaeschke CLA 2008-01-19 11:34:51 EST
(In reply to comment #9)
> HotSpot on SUSE 10.1 is not supported according to
> http://www.eclipse.org/tptp/home/project_info/releaseinfo/4.4/support.html.    
> 
> Have you tried IBM JVM?
> 

I have the same problem on RedHat 4.0 update 5 using Java 1.5.0 update 12, which is also not on the list.

Does the referenced page really mean that only the specified environments are supported? I understood this lists only what has been tested. Otherwise it would exclude pretty much all JAVA/LINUX updates that have been released in 2007 (and partly 2006).

I will see whether I can test this on the IBM JVM.
Comment 11 Tilmann Zaeschke CLA 2008-01-24 09:12:10 EST
I tried it using eclipse 3.3.1.1 (tptp 4.4.1) on SuSE 10.1 with the IMB JVM:

> java -version
java version "1.5.0"
Java(TM) 2 Runtime Environment, Standard Edition (build pxi32devifx-20071025 (SR6b))
IBM J9 VM (build 2.3, J2RE 1.5.0 IBM J9 2.3 Linux x86-32 j9vmxi3223-20071005 (JIT enabled)
J9VM - 20071004_14218_lHdSMR
JIT  - 20070820_1846ifx1_r8
GC   - 200708_10)
JCL  - 20071025



My applications still crash the JVM when profiled:
24-Jan-08 13:43:34.510 Configuration: Build number is 1337
24-Jan-08 13:43:45.134 ReplStoreFactoryImpl: Creating ObjectStore: ilt_qm_8@hscsv2
Unhandled exception
Type=Segmentation error vmState=0xb7e1a540
J9Generic_Signal_Number=00000004 Signal_Number=0000000b Error_Value=00000000 Signal_Code=00000001
Handler1=B7D88B68 Handler2=B7D517BC InaccessibleAddress=08D2D000
EDI=08D12A4F ESI=08D2CFFF EAX=FFFFFFFF EBX=08CEE9C8
ECX=3FFF6FDE EDX=BFF22128
EIP=B7E875CC ES=C010007B DS=0000007B ESP=BFF220C4
EFlags=00010207 CS=00000073 SS=0000007B EBP=BFF220F0
Module=/lib/libc.so.6
Module_base_address=B7E1C000 Symbol=memcpy
Symbol_address=B7E875B0
Target=2_30_20071004_14218_lHdSMR (Linux 2.6.16.53-0.16-default)
JVMDUMP006I Processing Dump Event "abort", detail "" - Please Wait.
JVMDUMP007I JVM Requesting System Dump using '/home/tzaeschk/buildTools/develop/main/core.20080124.124346.4863.dmp'

Unfortunately, the mentioned .dmp file was not created.

I recently learned that Versant 7.0.1.3 is not officially supporting Java 5 bytecode. 
However the Sun & IBM JVMs run my applications just fine, so I would not expect the profiler to have problems with the generated bytecode.

Anything else I could/should try?
Comment 12 Bing Xu CLA 2008-01-24 12:04:11 EST
Does running your application alone crash your JVM?  Or it only happens when you profile?   Can you try these:

1. Locate the code that causes the crash by commenting out some code and run profiling.  You may need to try this several times.

2. If the code reads objects from database, try to reduce the number of objects read say 1 object at a time.

Comment 13 Tilmann Zaeschke CLA 2008-02-04 11:22:46 EST
(In reply to comment #12)
> Does running your application alone crash your JVM?  Or it only happens when
> you profile?   
It only happens when profiling. The applications work fine on a number of platforms: Linux (Suse 10.1 or later, RedHat 4.0 or later, Fedora, ...) 
64bit/32bit, Solaris 9 or later 64Bit/32Bit, Windows XP.
Most of them are using SUN JDK 1.5.0_14.
But I also used the IBM JDK 9.2.3 (see above) on Suse 10.1/32bit.

> Can you try these:
> 
> 1. Locate the code that causes the crash by commenting out some code and run
> profiling.  You may need to try this several times.
> 
> 2. If the code reads objects from database, try to reduce the number of objects
> read say 1 object at a time.
> 

It fails when reading the first Object from the database.
The exact point of failure is in the java crash log attached to this SPR, here is the relevant part (it crashes in java.lang.Class.forName0):

C  [libjava.so+0x9be6]  Java_java_lang_Class_forName0+0x116
j  java.lang.Class.forName0(Ljava/lang/String;ZLjava/lang/ClassLoader;)
     Ljava/lang/Class;+0
j  java.lang.Class.forName(Ljava/lang/String;)Ljava/lang/Class;+5
j  com.versant.trans.Wrappers.java_lang_Class_forName(Ljava/lang/String;)
     Ljava/lang/Class;+9
j  com.versant.trans.TransSession.classForName(Ljava/lang/String;)
     Ljava/lang/Class;+80
j  com.versant.trans.TransSession.findPicklerForClassHandle(
     Lcom/versant/fund/ClassHandle;)Lcom/versant/trans/Pickler;+109
j  com.versant.trans.TransSession.loidToJod(J)Lcom/versant/trans/Jod;+58
j  com.versant.trans.TransSession.handleToJod(Lcom/versant/fund/Handle;)
     Lcom/versant/trans/Jod;+39
j  com.versant.trans.TransSession.handleToObject(Lcom/versant/fund/Handle;)
     Ljava/lang/Object;+11
j  com.versant.fund.MHandle.handleToObject()Ljava/lang/Object;+5
j  vql7.NoLockFund.loadHA([Lcom/versant/fund/Handle;
     Lcom/versant/trans/TransSession;)[Ljava/lang/Object;+58
j  vql7.NoLockFund.run()V+181
j  vql7.NoLockFund.main([Ljava/lang/String;)V+33
v  ~StubRoutines::call_stub
Comment 14 Tilmann Zaeschke CLA 2008-02-04 11:41:36 EST
To be honest, I'm a bit confused as to which version I'm using.

The agentcontroller is 4.4.0.3, but the eclipse feature-list shows all kinds of version for TPTP modules, ranging from 4.1.301 (Statistical UI) to 4.4.1 (TPTP Monitoring).
All this runs in a fresh installation of eclipse 3.3.1.1.

Please let me know whether this could pose a problem, and if so, how I would get compatible versions.

Comment 15 Bing Xu CLA 2008-03-03 14:28:56 EST
(In reply to comment #14)
> To be honest, I'm a bit confused as to which version I'm using.
> The agentcontroller is 4.4.0.3, but the eclipse feature-list shows all kinds of
> version for TPTP modules, ranging from 4.1.301 (Statistical UI) to 4.4.1 (TPTP
> Monitoring).
> All this runs in a fresh installation of eclipse 3.3.1.1.
> Please let me know whether this could pose a problem, and if so, how I would
> get compatible versions.

I checked my TPTP 4.4.0.3 and these versions are correct.   

I couldn't reproduce your problem since I don't have the versant library but I will check the NoLockFund code and talk to the Profiler developers.
Comment 16 Bing Xu CLA 2008-03-10 16:15:36 EDT
Hi Igor,

Can you take a look to see if it's related to TI.
Comment 17 Igor Alelekov CLA 2008-03-11 05:10:45 EDT
Hi Tilmann,
Can you provide Martini log file?
To produce it please set 
MARTINI_LOGGER_LOG_LEVEL=5
MARTINI_LOGGER_DIRECTORY=<your dir>
environment variables.
Comment 18 Tilmann Zaeschke CLA 2008-04-02 08:50:11 EDT
Created attachment 94526 [details]
MARTINI log file as request
Comment 19 Tilmann Zaeschke CLA 2008-04-02 08:52:57 EDT
I hope I did it correctly:
Set the two environment variables, then ./ACStart, then start eclipse and execute the profiler all from the same console.
I hope it doesn't matter, but I'm using the SUN JVM again, rather than IBM's. 
Comment 20 Bing Xu CLA 2008-04-04 12:50:24 EDT
Hi Igor, did you get a chance to look at the log.   Should I transfer this to you?
Comment 21 Bing Xu CLA 2008-04-14 17:07:58 EDT
Hi Igor, any comments?
Comment 22 Igor Alelekov CLA 2008-04-18 03:57:27 EDT
Asaf, could you please take a look on this? Thanks.
Comment 23 Asaf Yaffe CLA 2008-04-21 02:47:14 EDT
Tilmann,

Can you try to filter out all com.versant.* classes from the profiling session and check whether it prevents the crash?

To do that, in the Monitor tab of the Launch Configuration dialog, highlight the "Java 1.5+" data collector, click the Options button, create a new filter set, exclude com.versant.* classes and methods and include everything else.

Thanks,
Asaf


Comment 24 Bing Xu CLA 2008-05-21 16:36:33 EDT
Closing for now.  Reopen when more info are available.
Comment 25 Paul Slauenwhite CLA 2009-06-30 12:12:11 EDT
As of TPTP 4.6.0, TPTP is in maintenance mode and focusing on improving quality by resolving relevant enhancements/defects and increasing test coverage through test creation, automation, Build Verification Tests (BVTs), and expanded run-time execution. As part of the TPTP Bugzilla housecleaning process (see http://wiki.eclipse.org/Bugzilla_Housecleaning_Processes), this enhancement/defect is verified/closed by the Project Lead since this enhancement/defect has been resolved and unverified for more than 1 year and considered to be fixed. If this enhancement/defect is still unresolved and reproducible in the latest TPTP release (http://www.eclipse.org/tptp/home/downloads/), please re-open.