United StatesChange Country, Oracle Worldwide Web Sites Communities I am a... I want to...
JDK-7009309 : JSR 292: compiler/6991596/Test6991596.java crashes on fastdebug JDK7/b122

Details
Type:
Bug
Submit Date:
2010-12-28
Status:
Closed
Updated Date:
2012-02-01
Project Name:
JDK
Resolved Date:
2011-03-08
Component:
hotspot
OS:
generic
Sub-Component:
compiler
CPU:
generic
Priority:
P3
Resolution:
Fixed
Affected Versions:
7
Fixed Versions:
hs21 (b03)

Related Reports
Backport:
Relates:

Sub Tasks

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

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
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



Hardware and Software, Engineered to Work Together