JDK-7009309 : JSR 292: compiler/6991596/Test6991596.java crashes on fastdebug JDK7/b122
  • Type: Bug
  • Status: Closed
  • Resolution: Fixed
  • Component: hotspot
  • Sub-Component: compiler
  • Priority: P3
  • Affected Version: 7
  • OS: generic
  • CPU: generic
  • Submit Date: 2010-12-28
  • Updated Date: 2012-02-01
  • Resolved Date: 2011-03-08
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 Availabitlity Release.

To download the current JDK release, click here.
JDK 7 Other
7Fixed hs21Fixed
Related Reports
Relates :  
Description
http://sqeweb.sfbay.sun.com/nfs/results/vm/gtee/HSX/PIT/VM/hs20/04/jdk7b122/fastdebug/javase/solaris-i586/server/comp/solaris-i586_javase__server_comp_JT_HS_01/analysis.html

----------System.out:(25/952)----------
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x0000091a, pid=23925, tid=15
#
# JRE version: 7.0-b123
# Java VM: Java HotSpot(TM) Server VM (20.0-b05-internal-201012241616.et151817.hs20b05-ci-fastdebug compiled mode solaris-x86 )
# Problematic frame:
# C  0x0000091a
[error occurred during error reporting (printing problematic frame), id 0xb]

# An error report file with more information is saved as:
# /export/local/40838.HSX.PIT.VM+solaris-i586_javase__server_comp_JT_HS/results/workDir/compiler/6991596/Test6991596/hs_err_pid23925.log
#
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp
#
VM option '+StartAttachListener'
VM option '+UnlockExperimentalVMOptions'
VM option '+EnableMethodHandles'
VM option '+EnableInvokeDynamic'
VM option '+UnlockDiagnosticVMOptions'
VM option '+VerifyMethodHandles'
Current thread is 15
Dumping core ...
Native stack of thread 15 is:

 ce6cab25 _lwp_kill (f, 6) + 15
 ce671ee3 raise    (6) + 1f
 ce651d1d abort    (ce3a77b8, 5bc9c92f, 0, 0, 50, 0) + cd
 cd85ba50 void os::abort(bool) (1, ce267241, 1, ce3c16c0) + 118
 cdd2e732 void VMError::report_and_die() (a4363830, a436392c, 0, cdd2f3f0) + a46
 cdd2f446 void crash_handler(int,siginfo*,void*) (b, 0, a436392c) + 66
 ce6c75df __sighndlr (b, 0, a436392c, cdd2f3e0) + f
 ce6bd2a0 call_user_handler (b, 0, a436392c) + 22b
 ce6bd3ca sigacthandler (b, 0, a436392c) + 65
Here is the whole backtrace for thread 15 gathered by pstack:

-----------------  lwp# 15 / thread# 15  --------------------
 ce6cab25 _lwp_kill (f, 6) + 15
 ce671ee3 raise    (6) + 1f
 ce651d1d abort    (ce3a77b8, 5bc9c92f, 0, 0, 50, 0) + cd
 cd85ba50 void os::abort(bool) (1, ce267241, 1, ce3c16c0) + 118
 cdd2e732 void VMError::report_and_die() (a4363830, a436392c, 0, cdd2f3f0) + a46
 cdd2f446 void crash_handler(int,siginfo*,void*) (b, 0, a436392c) + 66
 ce6c75df __sighndlr (b, 0, a436392c, cdd2f3e0) + f
 ce6bd2a0 call_user_handler (b, 0, a436392c) + 22b
 ce6bd3ca sigacthandler (b, 0, a436392c) + 65
 --- called from signal handler with signal 11 (SIGSEGV) ---
 ce645a91 strlen   (8284a80, 91a, a4363bc4, ccb1cb61) + 31
 ccb1cc05 Decoder::decoder_status Decoder::decode(unsigned char*,const char*,char*,int,int*) (5bc9ccfa, 91a, ce3cf698, 7d0, a4363c6c, a4363c10) + b5
 cd85bfd8 bool os::dll_address_to_function_name(unsigned char*,char*,int,int*) (91a, ce3cf698, 7d0, a4363c6c) + 74
 ccc2677f void frame::print_on_error(outputStream*,char*,int,bool)const (a4363d10, a4364020, ce3cf698, 7d0, 0, ce3100d8) + 403
 cdd2dc1e void VMError::report(outputStream*) (a4365ab0, a4364020, 7d0, ce3c16c0) + 12c2
 cdd2e241 void VMError::report_and_die() (a43640a0, a436419c, 0, cdd2f3f0) + 555
 cdd2f446 void crash_handler(int,siginfo*,void*) (b, 0, a436419c) + 66
 ce6c75df __sighndlr (b, 0, a436419c, cdd2f3e0) + f
 ce6bd2a0 call_user_handler (b, 0, a436419c) + 22b
 ce6bd3ca sigacthandler (b, 0, a436419c) + 65
 --- called from signal handler with signal 11 (SIGSEGV) ---
 cd8505ab void os::print_hex_dump(outputStream*,unsigned char*,unsigned char*,int) (a43647a0, 8fa, 93a, 1) + e7
 cd876210 void os::print_context(outputStream*,void*) (a43647a0) + 198
 cdd2cef1 void VMError::report(outputStream*) (a4365ab0, a43647a0, 7d0, ce3c16c0) + 595
 cdd2e241 void VMError::report_and_die() (a4364820, a436491c, 0, cdd2f3f0) + 555
 cdd2f446 void crash_handler(int,siginfo*,void*) (b, 0, a436491c) + 66
 ce6c75df __sighndlr (b, 0, a436491c, cdd2f3e0) + f
 ce6bd2a0 call_user_handler (b, 0, a436491c) + 22b
 ce6bd3ca sigacthandler (b, 0, a436491c) + 65
 --- called from signal handler with signal 11 (SIGSEGV) ---
 ce645a91 strlen   (82847d0, 91a, a4364bb4, ccb1cb61) + 31
 ccb1cc05 Decoder::decoder_status Decoder::decode(unsigned char*,const char*,char*,int,int*) (5bc9bd0a, 91a, ce3cf698, 7d0, a4364c5c, a4364c00) + b5
 cd85bfd8 bool os::dll_address_to_function_name(unsigned char*,char*,int,int*) (91a, ce3cf698, 7d0, a4364c5c) + 74
 ccc2677f void frame::print_on_error(outputStream*,char*,int,bool)const (a4364cc0, a4365010, ce3cf698, 7d0, 0) + 403
 cdd2db92 void VMError::report(outputStream*) (a4365ab0, a4365010, 7d0, ce3c16c0) + 1236
 cdd2e241 void VMError::report_and_die() (a4365090, a436518c, 0, cdd2f3f0) + 555
 cdd2f446 void crash_handler(int,siginfo*,void*) (b, 0, a436518c) + 66
 ce6c75df __sighndlr (b, 0, a436518c, cdd2f3e0) + f
 ce6bd2a0 call_user_handler (b, 0, a436518c) + 22b
 ce6bd3ca sigacthandler (b, 0, a436518c) + 65
 --- called from signal handler with signal 11 (SIGSEGV) ---
 ce645a91 strlen   (81c39f0, 91a, a4365424, ccb1cb61) + 31
 ccb1cc05 Decoder::decoder_status Decoder::decode(unsigned char*,const char*,char*,int,int*) (5bc9b49a, 91a, ce3cf698, 7d0, a43654cc, a4365470) + b5
 cd85bfd8 bool os::dll_address_to_function_name(unsigned char*,char*,int,int*) (91a, ce3cf698, 7d0, a43654cc) + 74
 ccc2677f void frame::print_on_error(outputStream*,char*,int,bool)const (a4365530, a4365840, ce3cf698, 7d0, 0) + 403
 cdd2db92 void VMError::report(outputStream*) (a4365ab0, a4365840, 7d0, ce3c16f8) + 1236
 cdd2e7f4 void VMError::report_and_die() (a4365ab0, a4365be0) + b08
 cd875bca JVM_handle_solaris_signal (b, a4365de0, a4365be0, 1) + bf2
 cd868bba signalHandler (b, a4365de0, a4365be0) + 26
 ce6c75df __sighndlr (b, a4365de0, a4365be0, cd868b94) + f
 ce6bd2a0 call_user_handler (b, a4365de0, a4365be0) + 22b
 ce6bd3ca sigacthandler (b, a4365de0, a4365be0) + 65
 --- called from signal handler with signal 11 (SIGSEGV) ---
 0000091a ???????? (8, 0, bddfd9c0, 846b400, a4aaae38, bddfd8a0) + 5b553a72
 a4aacea8 ???????? () + 9ca49688

Comments
EVALUATION This is reproducible on every other box with UseSSE=1.
2011-01-14

EVALUATION The reason this fails is because of the extra cleanup code in the I2C adapter. diadem has only SSE (UseSSE == 1): $ isainfo -x i386: sse fxsr mmx cmov sep cx8 tsc fpu The calling sequence up to the I2C adapter is like: unresolved MH call site | resolve_opt_virtual_call (resolve and jump to...) | C2I adapter | interpreter codelet | MethodHandle::invokestatic | I2C adapter (of nmethod Test6991596::foo) At that point the check for StubRoutines::_call_stub_return_address fails and since there is no Interpreter::return_sentinel on the stack (because we come from a compiled frame), that check fails too and we hit an int3().
2011-01-14

EVALUATION It's reproducible on the reporting machine (diadem) only with: $ gamma -Xcomp -XX:CompileCommand=compileonly,Test6991596::* -ea -XX:+UnlockExperimentalVMOptions -XX:+EnableMethodHandles -XX:+EnableInvokeDynamic -XX:+UnlockDiagnosticVMOptions -XX:+VerifyMethodHandles Test6991596 (dbx) where current thread: t@2 [1] _waitid(0x0, 0xce4, 0xcd18e3a0, 0x3), at 0xcd37af95 [2] _waitpid(0xce4, 0xcd18e464, 0x0), at 0xcd3293bf [3] waitpid(0xce4, 0xcd18e464, 0x0), at 0xcd36c805 =>[4] os::fork_and_exec(cmd = 0xce626570 "dbx - 2928"), line 6239 in "os_solaris.cpp" [5] VMError::show_message_box(this = 0xcd18e82c, buf = 0xce626570 "dbx - 2928", buflen = 2000), line 56 in "vmError_solaris.cpp" [6] VMError::report_and_die(this = 0xcd18e82c), line 756 in "vmError.cpp" [7] JVM_handle_solaris_signal(sig = 11, info = 0xcd18eba0, ucVoid = 0xcd18e9a0, abort_if_unrecognized = 1), line 746 in "os_solaris_x86.cpp" [8] signalHandler(sig = 11, info = 0xcd18eba0, ucVoid = 0xcd18e9a0), line 4229 in "os_solaris.cpp" [9] __sighndlr(0xb, 0xcd18eba0, 0xcd18e9a0, 0xcddab350), at 0xcd3775df ---- called from signal handler with signal 11 (SIGSEGV) ------ [10] 0x486(0xc9cd0b6c, 0x0, 0xbeda9800, 0xa5a34550, 0xbeda2d08, 0x0), at 0x486 [11] 0xc9cd0b6c(0x0, 0x0, 0xbeda9800, 0xcd18ec58, 0xa5a32648, 0xbeda96e0), at 0xc9cd0b6c (dbx) fr 11 0xc9cd0b6c: movl %ebp,%esp (dbx) p findpc($pc) dbx: warning: unknown language, 'c' assumed dbx: internal warning: don't know how to convert to integral type from pointer (null) base integer $int "Executing findpc" c9cd0b6c: Compiled {method} 'doboolean' '(Z)V' in 'Test6991596' = (CodeBlob*)0xc9cd0808
2011-01-14