JDK-8039068 : Java 5u55 (64bit) crashes in StubRoutines::partial_subtype_check
  • Type: Bug
  • Component: hotspot
  • Sub-Component: runtime
  • Affected Version: 5.0u55
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • Submitted: 2014-04-02
  • Updated: 2014-07-03
  • Resolved: 2014-05-21
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
5.0u75 b01Fixed
Related Reports
Relates :  
Description
A java crash happens with weblogic.

hs_err_pid22377.log
====================
#  SIGSEGV (0xb) at pc=0xffffffff780008c0, pid=22377, tid=284
#
# Java VM: Java HotSpot(TM) 64-Bit Server VM (1.5.0_55-b10 mixed mode)
# Problematic frame:
# v  ~StubRoutines::partial_subtype_check
#
---------------  T H R E A D  ---------------
Current thread (0x0000000100e20a40):  JavaThread "[ACTIVE] ExecuteThread:
'172' for queue: 'weblogic.kernel.Default (self-tuning)'" daemon
[_thread_in_Java, id=284]
siginfo:si_signo=11, si_errno=0, si_code=1, si_addr=0xffffffff70000000

...
Stack: [0xfffffffd31900000,0xfffffffd31a00000),  sp=0xfffffffd319f99b0,  free
space=998k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native
code)
v  ~StubRoutines::partial_subtype_check
J
weblogic.common.internal.WLObjectInputStream.resolveObject(Ljava/lang/Object;)
Ljava/lang/Object;
J  java.io.ObjectInputStream.readObject0(Z)Ljava/lang/Object;
J  java.io.ObjectInputStream.readObject()Ljava/lang/Object;
J
weblogic.rmi.extensions.server.CBVInputStream.readObject()Ljava/lang/Object;
J  weblogic.rmi.internal.ServerRequest.copy([Ljava/lang/Object;)V
...
VM state:not at safepoint (normal execution)
...
Dynamic libraries:
0x0000000100000000     /app/bea/bea_cip/jdk1.5.0_55/bin/sparcv9/java
...
0xffffffff7ee00000    
/platform/SUNW,SPARC-Enterprise-T2000/lib/sparcv9/libc_psr.so.1
0xffffffff7e000000    
/app/bea/bea_cip/jdk1.5.0_55/jre/lib/sparcv9/server/libjvm.so
...
jvm_args: ....-Xms7g -Xmx7g -Xmn1024m -XX:PermSize=1280m
-XX:MaxPermSize=1280m -Dweblogic.corba.client.bidir=true
-Dweblogic.threadpool.MinPoolSize=150 -Dweblogic.threadpool.MaxPoolSize=300
-XX:+UseCMSInitiatingOccupancyOnly -XX:SurvivorRatio=6
-XX:CMSInitiatingOccupancyFraction=45 -XX:+DisableExplicitGC
-XX:+UseConcMarkSweepGC -XX:+CMSPermGenSweepingEnabled
-XX:+CMSClassUnloadingEnabled -XX:+PrintGCTimeStamps -XX:+PrintGCDetails
-Xloggc:servers/server2/logs/server2_gc_log.out   ...
-XX:+ParallelRefProcEnabled -Dcom.sun.management.jmxremote.port=8091
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
java_command: weblogic.Server

---------------  S Y S T E M  ---------------

OS:                       Solaris 10 8/07 s10s_u4wos_12b SPARC
           Copyright 2007 Sun Microsystems, Inc.  All Rights Reserved.
                        Use is subject to license terms.
                            Assembled 16 August 2007

uname:SunOS 5.10 Generic_144488-08 sun4v  (T2 libthread)
rlimit: STACK 8192k, CORE infinity, NOFILE 65536, AS infinity
load average:14,15 13,84 13,20

CPU:total 32 has_v8, has_v9, has_vis1, is_sun4v, is_niagara1

Memory: 8k page, physical 33546240k(5918840k free)

vm_info: Java HotSpot(TM) 64-Bit Server VM (1.5.0_55-b10) for solaris-sparc,
built on Sep 16 2013 13:35:40 by unknown with unknown Workshop:0x550

time: Thu Mar 20 14:58:24 2014
elapsed time: 535877 seconds

Comments
Off by one error. Improperly formed loop, the order of check operation should be changed possible fix: diff -r 29f5cc6dbb5b src/cpu/sparc/vm/stubGenerator_sparc.cpp --- a/src/cpu/sparc/vm/stubGenerator_sparc.cpp Mon Apr 21 18:15:12 2014 -0700 +++ b/src/cpu/sparc/vm/stubGenerator_sparc.cpp Mon May 19 16:46:54 2014 +0400 @@ -1108,10 +1108,10 @@ // The scan loop __ bind(loop); + __ cmp(L3_index,L0_ary_len); + __ br(Assembler::equal,false,Assembler::pn,miss); //check end of array first __ ld_ptr(L1_ary_ptr,0,L2_super); // Won't load a little _too_ early __ add(L1_ary_ptr,wordSize,L1_ary_ptr); // Bump by OOP size - __ cmp(L3_index,L0_ary_len); - __ br(Assembler::equal,false,Assembler::pn,miss); __ delayed()->inc(L3_index); // Bump index __ subcc(L2_super,Rsuper,Rret); // Check for match; zero in Rret for a hit __ brx( Assembler::notEqual, false, Assembler::pt, loop );
19-05-2014