JDK-4415122 : HotSpot Virtual Machine Error, Internal Error
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 1.3.0_02
  • Priority: P1
  • Status: Closed
  • Resolution: Fixed
  • OS: solaris_8
  • CPU: sparc
  • Submitted: 2001-02-14
  • Updated: 2001-10-18
  • Resolved: 2001-06-22
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
Other Other
1.3.0_04 04Fixed 1.3.1_01Fixed
Related Reports
Relates :  
Description
When running Movex Nextgen, the JVM underneath crashes: 

# 
# HotSpot Virtual Machine Error, Internal Error 
# Please report this error at 
# http://java.sun.com/cgi-bin/bugreport.cgi 
# 
# Error ID: 53484152454432554E54494D450E4350500183 01 
# 
# Problematic Thread: prio=5 tid=0xfa3a0 nid=0xb runnable 
# 
# 
# HotSpot Virtual Machine Error, Internal Error 
# Please report this error at 
# http://java.sun.com/cgi-bin/bugreport.cgi 
# 
# Error ID: 53484152454432554E54494D450E4350500183 01 
# 
# Problematic Thread: prio=5 tid=0xfa3a0 nid=0xb runnable 
# 

$ java -server -version
java version "1.3.0"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.0)
Java HotSpot(TM) Server VM (build 1.3.0, mixed mode)

Note that this environment contains the fix for bugid 4387520

Core file can be found at:

/net/hansolo.holland/Helium/Distribution/Intentia/HotSpot-problem/core.gz

Unfortunately the core file doesn't reveal the method names:

Reading java
core file header read successfully
Reading ld.so.1
Reading libthread.so.1
Reading libdl.so.1
Reading libc.so.1
Reading libc_psr.so.1
Reading libjvm.so
Reading libCrun.so.1
Reading libsocket.so.1
Reading libnsl.so.1
Reading libm.so.1
Reading libw.so.1
Reading libmp.so.2
Reading libhpi.so
Reading libverify.so
Reading libjava.so
Reading libzip.so
Reading nss_files.so.1
Reading libnet.so
Reading libmvxoci.so
Reading libclntsh.so.8.0
Reading libpthread.so.1
Reading librt.so.1
Reading libwtc8.so
Reading libgen.so.1
Reading libsched.so.1
Reading libaio.so.1
Reading nss_dns.so.1
Reading libresolv.so.2
detected a multithreaded program
t@39 (l@21) terminated by signal ABRT (Abort)
(/share/SUNWspro/bin/../WS5.0/bin/sparcv9/dbx) where                         
current thread: t@39
=>[1] __sigprocmask(0x0, 0xb4e7e9c0, 0x0, 0x0, 0x0, 0x0), at 0xff379bf0
  [2] _resetsig(0xff37c510, 0x0, 0x0, 0xb4e81d78, 0xff38e000, 0x0), at 0xff36e620
  [3] _sigon(0xb4e81d78, 0xff395990, 0x6, 0xb4e7ea94, 0xb4e81d78, 0xb4e7ead8), at 0xff36dd10
  [4] _thrp_kill(0x0, 0x27, 0x6, 0xff38e000, 0x27, 0xff33a428), at 0xff370e84
  [5] raise(0x6, 0x0, 0x0, 0xffffffff, 0xff33a394, 0xb4e7ebe8), at 0xff2c9b08
  [6] abort(0xff336000, 0xb4e7ebe8, 0x0, 0xfffffff8, 0x4, 0xb4e7ec09), at 0xff2b5124
  [7] os::abort(0x1, 0xfe3bebf0, 0x26700, 0xb4e7e, 0xfe418ca8, 0xb4e7ec04), at 0xfe1cfca4
  [8] report_error(0xde, 0xb4e7f48a, 0x183, 0xfe3be9f8, 0xfe47625c, 0xfe418ca8), at 0xfe0c3194
  [9] report_fatal(0x183, 0xfe418ca8, 0xfe3d51ec, 0x100, 0xfc, 0x0), at 0xfe0c2b08
  [10] SharedRuntime::compute_exception_return_address(0x0, 0x290, 0x5856c0, 0xfe418ca8, 0x1, 0x0), at 0xfe1ebc24
  [11] 0xfe46acf8(0xba025028, 0x3, 0xbb0a9be0, 0xba026508, 0x5e, 0xb4e7ff70), at 0xfe46acf7
  [12] 0xfae104dc(0x0, 0x3, 0x0, 0xbb2b2028, 0x1, 0x3), at 0xfae104db
  [13] 0xfad7a738(0xbb0b6770, 0xbb09d858, 0xbb0a9be0, 0xbb2b2028, 0x3ef, 0xbb2b1fc8), at 0xfad7a737
  [14] 0xfad7a134(0xbb0b6770, 0x0, 0xb4e800a8, 0xb4e800cc, 0xc6400, 0x109a0), at 0xfad7a133
  [15] 0xc8c78(0xb4e8018c, 0xba026176, 0x8, 0xd4248, 0x38, 0xb4e80030), at 0xc8c77
  [16] 0xfac46db0(0xbb0b6770, 0xbb09d858, 0xbb0a9be0, 0x3ef, 0x50, 0xb4e80100), at 0xfac46daf
  [17] 0xfac443a0(0xbb09d7c8, 0x0, 0x0, 0xbb2b1fc8, 0x3, 0x0), at 0xfac4439f
  [18] 0xfac0d004(0xbb09d7c8, 0xf89e3834, 0x180, 0x4, 0xc6400, 0x109a0), at 0xfac0d003
  [19] 0xc8c54(0xb4e80448, 0xf8837100, 0x0, 0xd4414, 0x4, 0xb4e802f0), at 0xc8c53
  [20] 0xfad584ec(0xbb09d7c8, 0x3ef, 0xf8d95a08, 0x1, 0x3c, 0xb4e803d0), at 0xfad584eb
  [21] 0xfadcc8a4(0xbb5177a0, 0xbb51f138, 0x3ef, 0xf8d95a08, 0x1, 0x3), at 0xfadcc8a3
  [22] 0xfadcc218(0xbb5177a0, 0x0, 0xb4e8059c, 0xb4e805b4, 0xc6400, 0x109a0), at 0xfadcc217
  [23] 0xc8c78(0xb4e8066c, 0xf89b82d8, 0xb4e80620, 0xd44e0, 0x3c, 0xb4e80520), at 0xc8c77
  [24] 0xc8de0(0xb4e8072c, 0x2, 0xbb5279b8, 0xd459c, 0x40, 0xb4e805d0), at 0xc8ddf
  [25] 0xc8c78(0xb4e807d4, 0x1, 0xb4e80830, 0xd4248, 0x2c, 0xb4e80698), at 0xc8c77
  [26] 0xc8c78(0xb4e80838, 0xba022b70, 0x0, 0xd4414, 0x1c, 0xb4e80760), at 0xc8c77
  [27] 0xfac8ef4c(0xbb2b1e78, 0x1, 0xbb2b1fc8, 0xf89c8b68, 0xc, 0xb4e807f0), at 0xfac8ef4b
  [28] 0xfad9bed8(0x594a57e6, 0xb97e52d8, 0xe4, 0xb97e52b8, 0xba022b70, 0xb97e5618), at 0xfad9bed7
  [29] 0xfac6f9dc(0xbb2b1fc8, 0xf89c8b78, 0xbb2b16e0, 0xd4248, 0xc6400, 0x109a0), at 0xfac6f9db
  [30] 0xc8c78(0xb4e80a3c, 0x0, 0xb4e80abc, 0xd4248, 0xc, 0xb4e80948), at 0xc8c77
  [31] 0xc8c54(0xb4e80abc, 0xbb2a6168, 0x11, 0xd4248, 0x4, 0xb4e809d8), at 0xc8c53
  [32] 0xc8c54(0xb4e80b18, 0x0, 0xa, 0xd4248, 0x4, 0xb4e80a58), at 0xc8c53
  [33] 0xfac05234(0xbb29e220, 0xbb20fb30, 0x0, 0xa, 0x4, 0xb4e80ad8), at 0xfac05233
  [34] 0xfacaa9a0(0xbb20fb30, 0xbb5194c0, 0xbb29e220, 0x0, 0x0, 0x0), at 0xfacaa99f
  [35] 0xfac0af5c(0xbb20fb30, 0xbb5194c0, 0xbb29e220, 0xb4e80c88, 0xc6400, 0x109a0), at 0xfac0af5b
  [36] 0xc8c54(0xb4e80d34, 0xb4e80dac, 0xb4e80db0, 0xd4248, 0xc, 0xb4e80c20), at 0xc8c53
  [37] 0xc8c78(0xb4e80dcc, 0x1c4, 0xb4e80e30, 0xd4414, 0x20, 0xb4e80cb8), at 0xc8c77
  [38] 0xc8c78(0xb4e80e40, 0xfe418ca8, 0x5856c0, 0xd4248, 0x20, 0xb4e80d50), at 0xc8c77
  [39] 0xfad56714(0xbb1f8d88, 0xf8d63e78, 0xbb20fb30, 0x0, 0x14, 0xb4e80df0), at 0xfad56713
  [40] 0xfad560d8(0xbb1f8d88, 0xb, 0xf9037888, 0x0, 0x0, 0xbb20fb30), at 0xfad560d7
  [41] 0xfac6f9dc(0xbb20fb30, 0xf8d63e78, 0xbb1f8d88, 0xd18fc, 0xc6400, 0x109a0), at 0xfac6f9db
  [42] 0xc8c78(0xb4e80fa0, 0xbb212f7e, 0xa, 0xd4248, 0xc, 0xb4e80ed8), at 0xc8c77
  [43] 0xfac05234(0xbb1f8d88, 0xf8d5af30, 0x0, 0x9a, 0x4, 0xb4e80f60), at 0xfac05233
  [44] 0xfad50324(0xbb1f8d88, 0xbb1c6678, 0x0, 0xa, 0x8, 0xb4e80fa0), at 0xfad50323
  [45] 0xfacaa9a0(0xbb1c6678, 0xbb5194c0, 0xbb1f8d88, 0x0, 0x0, 0x0), at 0xfacaa99f
  [46] 0xfac0af5c(0xbb1c6678, 0xbb5194c0, 0xbb1f8d88, 0xd459c, 0xc6400, 0x109a0), at 0xfac0af5b
  [47] 0xc8c54(0xb4e811fc, 0xb4e81274, 0xb4e81278, 0xd4248, 0xc, 0xb4e810e8), at 0xc8c53
  [48] 0xc8c78(0xb4e81294, 0x1c4, 0xb4e812f8, 0xd4414, 0x20, 0xb4e81180), at 0xc8c77
  [49] 0xc8c78(0xb4e81308, 0xfe418ca8, 0x5856c0, 0xd4248, 0x20, 0xb4e81218), at 0xc8c77
  [50] 0xfad56714(0xbb190130, 0xf8c10fd8, 0xbb1c6678, 0xbb1cbbe0, 0x14, 0xb4e812b8), at 0xfad56713
  [51] 0xfadcdf84(0x0, 0xbb199b38, 0xf8b71a58, 0x12, 0xbb193540, 0xc), at 0xfadcdf83
  [52] 0xfac0d004(0xbb190130, 0x7f38, 0xb4e814c0, 0xd18fc, 0xc6400, 0x109a0), at 0xfac0d003
  [53] 0xc8c54(0xb4e814c0, 0xbb1db7f0, 0xbb1b9f60, 0xd4248, 0x4, 0xb4e81400), at 0xc8c53
  [54] 0xfac05234(0xbb190130, 0xb4e81584, 0xbb51c1c6, 0xbb51c1c0, 0x4, 0xb4e81480), at 0xfac05233
  [55] 0xfae09024(0xbb190130, 0xb4e81608, 0xbb51c1c0, 0xbb51c1c6, 0x0, 0x0), at 0xfae09023
  [56] 0xfac0d004(0xbb190130, 0xf8b676e4, 0xf8b67704, 0xf8b676fc, 0xc6400, 0x109a0), at 0xfac0d003
  [57] 0xc8c54(0xb4e8168c, 0xf8b5a67c, 0x94, 0xd4248, 0x4, 0xb4e815a8), at 0xc8c53
  [58] 0xc8c54(0xb4e8170c, 0xf8b28da8, 0xb4e81794, 0xd4248, 0x4, 0xb4e81628), at 0xc8c53
  [59] 0xc8c54(0xb4e8179c, 0xb4e81824, 0xb4e81828, 0xd4248, 0x4, 0xb4e816a8), at 0xc8c53
  [60] 0xc8c54(0xb4e8182c, 0x120408, 0xfe418ca8, 0xd4248, 0xc, 0xb4e81738), at 0xc8c53
  [61] 0xc8c54(0xb4e818dc, 0xb4e81950, 0xb4e81954, 0xd4248, 0x8, 0xb4e817b8), at 0xc8c53
  [62] 0xc8c54(0xb4e81954, 0x1, 0xfe425a90, 0xd4248, 0x4, 0xb4e81880), at 0xc8c53
  [63] 0xfe46fde8(0xb4e819e0, 0xb4e81c18, 0xa, 0xf88ace70, 0x4, 0xb4e818f8), at 0xfe46fde7
  [64] JavaCalls::call_helper(0xb4e81c10, 0xfe418ca8, 0xb4e81b5c, 0x5856c0, 0xcaaa0, 0xb4e81c18), at 0xfe12b0a4
  [65] JavaCalls::call_virtual(0xf8907d28, 0xb4e81b48, 0xb4e81b4c, 0xfe418ca8, 0xb4e81c10, 0xb4e81b5c), at 0xfe12a73c
  [66] JavaCalls::call_virtual(0xb4e81c10, 0xb4e81c0c, 0xb4e81c08, 0xb4e81bfc, 0xb4e81bf4, 0x5856c0), at 0xfe12a7ac
  [67] thread_entry(0xf8817bf8, 0x5856c0, 0xfe418ca8, 0xb4e81d18, 0x1e, 0xe), at 0xfe15b610
  [68] JavaThread::run(0xb4e02000, 0xfe4232ec, 0xfe418ca8, 0x80000, 0x5856c0, 0x80000), at 0xfe2333b0
  [69] _start(0xfe418ca8, 0xfdca5d18, 0x1, 0xff39adec, 0x0, 0x2), at 0xfe1ce8f0


Hans.Nijbacker@Holland 2001-02-20


Please let me know what other info you need. As I mentioned in the bug report, 
it's not feasible to produce a simple test case, because the problem only 
appears in a customer situation. Since it's timing related we don't know under 
what circumstances it happens.

Because the JVM doesn't produce usefull information, we don't know where to 
look.

Comments
CONVERTED DATA BugTraq+ Release Management Values COMMIT TO FIX: 1.3.0_04 1.3.1_01 FIXED IN: 1.3.0_04 1.3.1_01 INTEGRATED IN: 1.3.0_04 1.3.1_01 VERIFIED IN: 1.3.0_04
14-06-2004

PUBLIC COMMENTS The fix is verified by CTE in jdk1.3.0_04. The fix is verified by field. xuyang.jiang@Eng 2001-05-08
08-05-2001

SUGGESTED FIX This bug is fixed by cliff click. The source diff for this fix is: src/share/vm/opto/connode.cpp ------- connode.cpp ------- *** /tmp/dzgaOdK Tue May 8 15:29:40 2001 --- connode.cpp Thu Apr 26 11:12:51 2001 *************** *** 364,377 **** //------------------------------Ideal_DU_postCCP------------------------------- // If not converting int->oop, throw away cast after constant propagation Node *CastPPNode::Ideal_DU_postCCP( PhaseCCP *ccp ) { ! const Type *t = ccp->type(in(1)); ! if( t->isa_oop_ptr() ) { ccp->hash_delete(this); ! _type = t; // Turn into ID function ccp->hash_insert(this); return this; } ! return NULL; // No progress } --- 364,392 ---- //------------------------------Ideal_DU_postCCP------------------------------- // If not converting int->oop, throw away cast after constant propagation Node *CastPPNode::Ideal_DU_postCCP( PhaseCCP *ccp ) { ! Node *nn = in(1); ! const Type *t1 = ccp->type( nn ); ! const Type *t0 = ccp->type(this); ! // If the CastPP has turned into an identity function, then the gating ! // test it depended on may have constant-folded away and the CastPP may ! // have gotten stuck on the wrong test. It then may have been hoisted to ! // high via the dominated_by() call. I.e., we can't trust it's control ! // edge. Since its an identity function, we can remove it and ignore the ! // control edge. We have to remove it now, before control edges are ! // enshrined on memory nodes. ! if( t1 == t0 ) { ! ccp->hash_delete(this); // Removed 'this' from table before subsuming it ! ccp->subsume_node(this,nn); // Update DefUse edges for ID function ! return nn; // ID function? Remove early ! } ! ! if( t1->isa_oop_ptr() ) { ccp->hash_delete(this); ! _type = t1; // Turn into ID function ccp->hash_insert(this); return this; } ! return NULL; // No progress } src/share/vm/opto/memnode.cpp ------- memnode.cpp ------- *** /tmp/d.4aieK Tue May 8 15:32:19 2001 --- memnode.cpp Thu Apr 26 11:18:19 2001 *************** *** 63,68 **** --- 63,75 ---- // Compute base address if( adr->is_AddP() ) adr = adr->in(AddPNode::Base); + // Input may be some useless shoulda-been-yanked-by-IGVN CastPPs. + // Ignore such; their control edge is suspect (may be bad) and they + // contain no gating test info in any case. + while( adr->Opcode() == Op_CastPP && + ccp->type(adr) == ccp->type(adr->in(1)) ) + adr = adr->in(1); + // Now switch on base address type switch( adr->Opcode() ) { // CastPP is going away in this pass! We need this memory op to be // control-dependent on the test that is guarding the CastPP xuyang.jiang@Eng 2001-05-08
08-05-2001

EVALUATION How do we reproduce this bug? azeem.jiva@Eng 2001-02-14 We cannot debug this if we cannot reproduce the failure, which will be hard to do without a test case. A core file and a stack trace add useful information but are not by themselves sufficient. If you cannot give us a reduced test case then we'd need the entire app. If it is not possible to give us anything then we will not have enough information to fix this bug. I'll mark it as incomplete pending a test case. david.spott@Eng 2001-02-23 I finally got logged into the customer box and poked around. The method setPosVals, which gets inlined into massively, is hoisting the load-range from argument scanFields above it's null check. The load-range is suspiciously hoisted above the getCharsfromBytes loop (a method which is inlined and contains a simple loop to read 2 bytes from 1 array, combine them, and store them into a char array). The getCharsfromBytes loop is range-check-eliminated and unrolled. I suspect the load-range is getting placed badly somehow, then gets caught in the rce/unroll of the prior getCharsfromBytes loop and thus forcefully hoisted too high. cliff.click@eng 2001-04-09 Bug is now well understood. Bug stems from a hidden invariant in the system getting broken. Invariant is that CastPPNodes point to tests which guard the CastPP's property (not-NULL-ness). In this case, the guarding test goes away - not via the dominated_by() function which would hoist the CastPP to another test ensuring the same property, but via constant propagation. The CastPP floats to the next prior CFG node, which happens to be another kind of test (a range check). Now the hidden invariant is broken and the CastPP is guarded by a range-check which does NOT ensure the not-nullness property. It's always the case that the property will hold there since it had to hold to fold up the CastPP's original test. Now comes another call to dominated_by() for the CastPP's new test; since the assumption is the CastPP is guarded by a test ensuring the property, the CastPP is hoisted to the dominating range-check. This dominating test is too high and happens before the not-null-ness property is assured. There's a Load behind the CastPP; it floats up too high as well and eventually attempts to Load through a null pointer. cliff.click@eng 2001-04-25
25-04-2001

WORK AROUND run java with .hotspot_compiler and -XX:+printOpto, In that file put one line: exclude mvx.db.sql.QueryBuilder setPosVals xuyang.jiang@Eng 2001-03-12
12-03-2001