JDK-6592707 : REGRESSION: Java 64-Bit Server VM sparcv9 crash with unhandled implicit exception in compiled code
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 6u3
  • Priority: P1
  • Status: Closed
  • Resolution: Fixed
  • OS: solaris
  • CPU: sparc
  • Submitted: 2007-08-14
  • Updated: 2011-01-31
  • Resolved: 2010-02-12
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.
JDK 6 JDK 7 Other
6u10Resolved 7Fixed hs10Fixed
Related Reports
Relates :  
Relates :  
Relates :  
Description
Java 64-Bit Server VM sparcv9 crash with unhandled implicit exception in compiled code:
Internal Error (nmethod.cpp:1707), pid=2272, tid=2. The following tests that use display lead to this vm crash:

jit/common/misctests/fpustack
regression/jit/4141334/SwingMark
nsk/regression/b4224902	
nsk/regression/b4224903	
nsk/regression/b4237950	
nsk/regression/b4244156	
nsk/regression/b4261880	
nsk/regression/b4265661	
nsk/regression/b4268494	
nsk/regression/b4270668	
nsk/regression/b4296365	
nsk/regression/b4501529	
nsk/stress/stack/b4525850
nsk/stress/jck12a/jck12a012	
nsk/stress/jck12a/jck12a016	
nsk/stress/jck12a/jck12a017	
nsk/stress/thread/thread003	
nsk/stress/thread/thread004	
nsk/stress/jck60/jck60015	
nsk/stress/jck60/jck60016	
nsk/stress/jck60/jck60018	
nsk/stress/jck60/jck60019	
nsk/stress/jck60/jck60024	
nsk/stress/jck60/jck60026

The tests pass with jdk 6 u2 and only 64-bit VM effected the tests pass with 32-bit VM. 
The crash occur only at Solaris sparc OS (Solaris 11 and Solaris 10 checked).

= How to reproduce 

1. logon to butters.russia or or any other solaris sparc

login details in comments

2. cd /net/vice/export/stt/newroot/results/6u3/b02/vm_1/vm/solaris11-sparcv9/server/comp/vm-vm_6-ur_server_comp_solaris11-sparcv92007-08-06-15-49-12/ResultDir/fpustack

3. ksh fpustack.tlog

4. you can use:

fpustack-u2.tlog to check with u2 that test pass
fpustack-sparc.tlog check with 32-bit vm that test pass

= Full hs err log

Available in comments.

Comments
SUGGESTED FIX PRT webrev: http://prt-web.sfbay.sun.com/net/prt-archiver.sfbay/data/archived_workspaces/main/c2_baseline/2007/20070910113317.rasbold.6592707/workspace/webrevs/webrev-2007.09.10/index.html
10-09-2007

EVALUATION Postaloc transformations treat CastX2P nodes as ideal copies and therefore are considered interchangeable with a MachSpillCopy. Under the right conditions, postaloc will eliminate copies so that a safepoint node has a CastX2P as input. A CastX2P node should not appear as input to JVMState information, as FillLocArray can not properly deal with native pointers.
06-09-2007

SUGGESTED FIX Change formssel.cpp to no longer mark CastX2P and CastP2X nodes as ideal_copies. Postaloc will then no longer treat them as interchangeable with plain MachSpillCopies, and the CastX2P node will not appear as an input to JVM state information. *** (#1 of 1): [ UNSAVED ] ###@###.###
06-09-2007

EVALUATION The problme stems from C2 confusing two different uses of RawPtr types. Both a jsr return bci and an unsafe native pointer are represented as RawPtrs. In 64 bit VMs, the stack representation differs.
04-09-2007

EVALUATION In compiling sun/awt/X11/XAtom.getAtomListProperty, C2 is misaligning a pointer (cast from a long in an unsafe native) in the debug info at a deoptimization point. The debug info has the two entries as a value/deaddeaf pair, when it should be a deaddeaf/value pair. *** (#1 of 1): [ UNSAVED ] ###@###.###
29-08-2007

WORK AROUND Use this VM option: -XX:CompileCommand=exclude,sun/awt/X11/XAtom,getAtomListProperty
28-08-2007