United StatesChange Country, Oracle Worldwide Web Sites Communities I am a... I want to...
Bug ID: JDK-6968368 SIGSEGV in the BCEscapeAnalyzer::copy_dependencies(Dependencies*)+0x105
JDK-6968368 : SIGSEGV in the BCEscapeAnalyzer::copy_dependencies(Dependencies*)+0x105

Details
Type:
Bug
Submit Date:
2010-07-12
Status:
Closed
Updated Date:
2012-02-01
Project Name:
JDK
Resolved Date:
2011-03-08
Component:
hotspot
OS:
generic
Sub-Component:
compiler
CPU:
x86
Priority:
P2
Resolution:
Fixed
Affected Versions:
hs19
Fixed Versions:
hs19 (b04)

Related Reports
Backport:
Backport:
Backport:
Backport:
Relates:
Relates:

Sub Tasks

Description
The test 
nsk/stress/jck60/jck60018
http://sqeweb.sfbay.sun.com/nfs/results/vm/gtee/HSX/PIT/VM/19/b04/jdk7b101_08/fastdebug/vm/linux-i586/server/comp/linux-i586_vm_server_fastdebug_comp_nsk.stress.testlist/ResultDir/jck60018

crashes with -server and -Xcomp.
It always crashes during compilation of
C2:2842   b  java.awt.image.LookupOp.filter(Ljava/awt/image/Raster;Ljava/awt/image/WritableRaster;)Ljava/awt/image/WritableRaster; (378 bytes)

You could reproduce this crash also with CompileTheWorld:
/net/sqenfs-1.sfbay/export1/comp/vm/jdk/hsx/19/pit/b04/jdk7b101/fastdebug/linux-i586/bin/java -Xbootclasspath/p:/net/sqenfs-1.sfbay/export1/comp/vm/jdk/hsx/19/pit/b04/jdk7b101/fastdebug/linux-i586/jre/lib/rt.jar -XX:+CompileTheWorld -XX:CompileTheWorldStartAt=7362


Here is the head of hs_err
;; Using jvm: "/export/local/common/jdk/baseline/linux-i586/jre/lib/i386/server/libjvm.so"
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0xf679b9f5, pid=4015, tid=2921913232
#
# JRE version: 7.0-b99
# Java VM: Java HotSpot(TM) Server VM (19.0-b04-201007090738.et151817.hs19b04-fastdebug compiled mode linux-x86 )
# Problematic frame:
# V  [libjvm.so+0x2759f5]
#
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp
#

---------------  T H R E A D  ---------------

Current thread (0xae822000):  JavaThread "CompilerThread1" daemon [_thread_in_native, id=4134, stack(0xae20d000,0xae28e000)]

siginfo:si_signo=SIGSEGV: si_errno=0, si_code=1 (SEGV_MAPERR), si_addr=0x00000044;; 

Registers:
EAX=0x00000000, EBX=0xf70fff50, ECX=0x00000007, EDX=0xabababab
ESP=0xae28b540, EBP=0xae28b578, ESI=0x00000004, EDI=0x00000001
EIP=0xf679b9f5, CR2=0x00000044, EFLAGS=0x00010296

Top of Stack: (sp=0xae28b540)
0xae28b540:   abababab ad31fe40 ad31fe71 f679b8fe
0xae28b550:   ad31fe58 ae28b600 f6f995d3 f6f9ef30
0xae28b560:   f6f9eb72 f6f9eb69 abababab f70fff50
0xae28b570:   a1d49d78 9dcd6290 ae28b628 f6a3cc75
0xae28b580:   a1d49d78 9dcd6290 00000007 00000007
0xae28b590:   ad300010 00000001 ae28b5b8 f75f2f3c
0xae28b5a0:   ad300010 ad31fe40 ad31fe40 f6f99ac8
0xae28b5b0:   f6f995e7 f6f995cc ae28b618 ae28b600 

Instructions: (pc=0xf679b9f5)
0xf679b9e5:   00 83 ec 0c 8b 44 30 fc 89 45 f0 89 c2 8b 00 52
0xf679b9f5:   ff 50 44 83 c4 10 84 c0 75 1e 8b 45 ec 50 8b 45 
;; f679b9e5 00 83 ec 0c 8b 44       add    %al,0x448b0cec(%ebx)
;; f679b9eb 30 fc                   xor    %bh,%ah
;; f679b9ed 89 45 f0                mov    %eax,0xfffffff0(%ebp)
;; f679b9f0 89 c2                   mov    %eax,%edx
;; f679b9f2 8b 00                   mov    (%eax),%eax
;; f679b9f4 52                      push   %edx
;; ---------------
;; f679b9f5 ff 50 44                call   *0x44(%eax)
;; f679b9f8 83 c4 10                add    $0x10,%esp
;; f679b9fb 84 c0                   test   %al,%al
;; f679b9fd 75 1e                   jne    0xf679ba1d
;; f679b9ff 8b 45 ec                mov    0xffffffec(%ebp),%eax
;; f679ba02 50                      push   %eax
;; f679ba03 8b 45 ff                mov    0xffffffff(%ebp),%eax
;; 
Stack: [0xae20d000,0xae28e000],  sp=0xae28b540,  free space=1f9ae28ae60k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0x2759f5];;  BCEscapeAnalyzer::copy_dependencies(Dependencies*)+0x105
V  [libjvm.so+0x516c75];;  ConnectionGraph::process_call_arguments(CallNode*, PhaseTransform*)+0x575
V  [libjvm.so+0x518da4];;  .L1119+0x68
V  [libjvm.so+0x51f1df];;  ConnectionGraph::compute_escape()+0x68f
V  [libjvm.so+0x5203f9];;  ConnectionGraph::do_analysis(Compile*, PhaseIterGVN*)+0x99
V  [libjvm.so+0x43ce96];;  Compile::Optimize()+0x9d6
V  [libjvm.so+0x43e5d4];;  Compile::Compile(ciEnv*, C2Compiler*, ciMethod*, int, bool, bool)+0xe54
V  [libjvm.so+0x363a8e];;  C2Compiler::compile_method(ciEnv*, ciMethod*, int)+0x18e
V  [libjvm.so+0x4476c5];;  CompileBroker::invoke_compiler_on_method(CompileTask*)+0x455
V  [libjvm.so+0x4489d3];;  CompileBroker::compiler_thread_loop()+0x5a3
V  [libjvm.so+0x9c646f];;  compiler_thread_entry(JavaThread*, Thread*)+0x4f
V  [libjvm.so+0x9d04a4];;  JavaThread::thread_main_inner()+0xf4
V  [libjvm.so+0x9d06a0];;  JavaThread::run()+0x1b0
V  [libjvm.so+0x867ee9];;  java_start(Thread*)+0xf9
C  [libpthread.so.0+0x61b5]


Current CompileTask:
C2:2842   b  java.awt.image.LookupOp.filter(Ljava/awt/image/Raster;Ljava/awt/image/WritableRaster;)Ljava/awt/image/WritableRaster; (378 bytes)

                                    

Comments
EVALUATION

Changes for 6966411 moved escape analysis into Optimize() method after ResourceMark so on exit from Optimize() all data allocated in resource area is freed. bcEscapeAnalyzer uses resource area to keep dependancy and bytecode analysis data and this data will be lost on exit from Optimize(). The method compilation could be retried (subsume_loads) with the same CI data but bcEscapeAnalyzer dependancy and bytecode analysis data are not regenerated and contain garbage.
                                     
2010-07-13
EVALUATION

http://hg.openjdk.java.net/jdk7/hotspot-comp/hotspot/rev/8099e71601df
                                     
2010-07-15
PUBLIC COMMENTS

Changes for 6966411 moved escape analysis into Optimize() method
after ResourceMark so on exit from Optimize() all data allocated
in resource area is freed. bcEscapeAnalyzer uses resource area
to keep dependency and bytecode analysis data and this data will
be lost on exit from Optimize(). The method compilation could be
retried (subsume_loads) with the same CI data but bcEscapeAnalyzer
dependency and bytecode analysis data are not regenerated and
contain garbage.

Solution:
Use GrowableArray and VectorSet allocated in ciEnv arena.
Removed unused _stack field.
                                     
2010-07-15
EVALUATION

http://hg.openjdk.java.net/jdk7/hotspot-gc/hotspot/rev/8099e71601df
                                     
2010-07-21



Hardware and Software, Engineered to Work Together