JDK-7145346 : VerifyStackAtCalls is broken
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 8-pool
  • Priority: P4
  • Status: Closed
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2012-02-14
  • Updated: 2012-03-24
  • Resolved: 2012-03-24
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 7 JDK 8 Other
7u4Fixed 8Fixed hs23Fixed
Description
Both jdk7 and jdk8 have this problem (x86):

% /java/re/jdk/8/latest/binaries/solaris-x64/fastdebug/bin/java -d64 -XX:+VerifyStackAtCalls -Xcomp t
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGILL (0x4) at pc=0xfffffcfff353e35c, pid=17870, tid=2
#
# JRE version: 8.0-b25
# Java VM: Java HotSpot(TM) 64-Bit Server VM (23.0-b14-fastdebug compiled mode solaris-amd64 compressed oops)
# Problematic frame:
# J  java.lang.System.getProperty(Ljava/lang/String;)Ljava/lang/String;
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# An error report file with more information is saved as:
# /export/kvn/build/7074975/solaris_amd64_compiler2/jvmg/hs_err_pid17870.log
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.sun.com/bugreport/crash.jsp
#
Current thread is 2
Dumping core ...
Abort

% /java/re/jdk/8/latest/binaries/solaris-x64/fastdebug/bin/java -server  -XX:+VerifyStackAtCalls -Xcomp t
# To suppress the following error report, specify this argument
# after -XX: or in .hotspotrc:  SuppressErrorAt=/handles.cpp:50
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (/tmp/workspace/jdk8-2-build-solaris-i586-product/jdk8/hotspot/src/share/vm/runtime/handles.cpp:50), pid=17871, tid=2
#  assert(SharedSkipVerify || obj->is_oop()) failed: sanity check
#
# JRE version: 8.0-b25
# Java VM: Java HotSpot(TM) Server VM (23.0-b14-fastdebug compiled mode solaris-x86 )
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# An error report file with more information is saved as:
# /export/kvn/build/7074975/solaris_amd64_compiler2/jvmg/hs_err_pid17871.log
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.sun.com/bugreport/crash.jsp
#
Current thread is 2
Dumping core ...
Abort

Comments
EVALUATION http://hg.openjdk.java.net/hsx/hotspot-gc/hotspot/rev/9b8ce46870df
18-02-2012

EVALUATION The failure was due to an incorrect branch distance was used in call_epilog(). Replace it's encoding with macroassembler use. Moved duplicated code to x86.ad. After that fix I found an other problem - return_addr() definition in .ad files was not taking into account EBP save. Used in_preserve_stack_slots() value which is correctly defined. Also fixed frame dump for OptoAssembly output (in chaitin.cpp).
17-02-2012

EVALUATION http://hg.openjdk.java.net/hsx/hotspot-comp/hotspot/rev/9b8ce46870df
17-02-2012