JDK-6489232 : VM crashes after class class redefining (VM_Operation: change breakpoints)
  • Type: Bug
  • Component: hotspot
  • Sub-Component: jvmti
  • Affected Version: 6
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2006-11-02
  • Updated: 2010-04-02
  • Resolved: 2007-04-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 6 JDK 7 Other
6u4Fixed 7Fixed hs10Fixed
Related Reports
Relates :  
Relates :  
Relates :  
Relates :  
Description
Stress test against class redefining crashes with SIGSEGV. Test serveral times stops test thread at breakpoint, performs changes in constant pool of class executed by test thread and resumes test thread. I was able to reproduce this failure on solaris-sparc, linux-i586, windows-amd64. Test sources are attached.

Example of hs_err file:
#
# An unexpected error has been detected by Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0xfebb62ac, pid=22544, tid=3
#
# Java VM: Java HotSpot(TM) Client VM (1.6.0-rc-b103 mixed mode)
# Problematic frame:
# V  [libjvm.so+0x3b62ac]
#
# 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 (0x000ab400):  VMThread [id=3]

siginfo:si_signo=11, si_errno=0, si_code=1, si_addr=0x00000000

Registers:
 O0=0x0000cc00 O1=0x00013800 O2=0xfff71e67 O3=0x0008e000
 O4=0xfedfc000 O5=0x00023574 O6=0xfc0ffb90 O7=0x000ce518
 G1=0x0000cfec G2=0x00011c00 G3=0x00023400 G4=0x00013aac
 G5=0x00000000 G6=0x00000000 G7=0xff330400 Y=0xfffff8b5
 PC=0xfebb62ac nPC=0xfebb62b0


Top of Stack: (sp=0xfc0ffb90)
0xfc0ffb90:   fec022a4 f80040b0 f8003a68 fee1f574
0xfc0ffba0:   00000000 007f9671 fee0faac 000001c4
0xfc0ffbb0:   fed6de62 fed6de67 00011f04 fee0df04
0xfc0ffbc0:   fee08fec fee0faac fc0ffc60 febb6528
0xfc0ffbd0:   00000005 00000001 00000000 00000000
0xfc0ffbe0:   00000000 ff330400 00000000 f3e7f6d8
0xfc0ffbf0:   00000000 000abbac 000ab7c0 000ab7b8
0xfc0ffc00:   0002e268 fed6de62 00014000 99d98b88 

Instructions: (pc=0xfebb62ac)
0xfebb629c:   f0 23 a0 74 a6 06 c0 0d b6 06 c0 1a e8 03 e0 04
0xfebb62ac:   da 05 20 00 ac 83 7f ff 06 80 00 74 b1 2d a0 02 

Stack: [0xfc080000,0xfc100000),  sp=0xfc0ffb90,  free space=510k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0x3b62ac]
V  [libjvm.so+0x3b6530]
V  [libjvm.so+0x13f82c]
V  [libjvm.so+0x4e5df4]
V  [libjvm.so+0x4e6380]
V  [libjvm.so+0xb66ac]
V  [libjvm.so+0x413a0c]

VM_Operation (0xf3e7f654): change breakpoints, mode: safepoint, requested by thread 0x000e2800


---------------  P R O C E S S  ---------------

Java Threads: ( => current thread )
  0x00106000 JavaThread "TestThread" [_thread_blocked, id=13]
  0x000f1c00 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=11]
  0x000f0c00 JavaThread "CompilerThread0" daemon [_thread_blocked, id=10]
  0x000e5800 JavaThread "JDWP Command Reader" daemon [_thread_in_native, id=9]
  0x000e4400 JavaThread "JDWP Event Helper Thread" daemon [_thread_blocked, id=8]
  0x000e2800 JavaThread "JDWP Transport Listener: dt_socket" daemon [_thread_blocked, id=7]
  0x000c4c00 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=6]
  0x000af800 JavaThread "Finalizer" daemon [_thread_blocked, id=5]
  0x000ae800 JavaThread "Reference Handler" daemon [_thread_blocked, id=4]
  0x00030800 JavaThread "main" [_thread_in_native, id=2]

Other Threads:
=>0x000ab400 VMThread [id=3]
  0x000f3400 WatcherThread [id=12]

VM state:at safepoint (normal execution)

VM Mutex/Monitor currently owned by a thread:  ([mutex/lock_event])
[0x0002fc10/0x0002fc40] Threads_lock - owner thread: 0x000ab400

Heap
 def new generation   total 2560K, used 1718K [0xf4000000, 0xf42c0000, 0xf4710000)
  eden space 2304K,  63% used [0xf4000000, 0xf416d9d8, 0xf4240000)
  from space 256K, 100% used [0xf4240000, 0xf4280000, 0xf4280000)
  to   space 256K,   0% used [0xf4280000, 0xf4280000, 0xf42c0000)
 tenured generation   total 22024K, used 21489K [0xf4710000, 0xf5c92000, 0xf8000000)
   the space 22024K,  97% used [0xf4710000, 0xf5c0c618, 0xf5c0c800, 0xf5c92000)
 compacting perm gen  total 12288K, used 2353K [0xf8000000, 0xf8c00000, 0xfc000000)
   the space 12288K,  19% used [0xf8000000, 0xf824c7d0, 0xf824c800, 0xf8c00000)
No shared spaces configured.

Dynamic libraries:
0x00010000 	/net/vmsqe-amd-01.russia/export3/vmsqe/jdk-builds/JDK6b103/solaris-sparc/jre/bin/java
0xff370000 	/usr/lib/libthread.so.1
0xff350000 	/net/vmsqe-amd-01.russia/export3/vmsqe/jdk-builds/JDK6b103/solaris-sparc/jre/bin/../lib/sparc/jli/libjli.so
0xff3fa000 	/usr/lib/libdl.so.1
0xff200000 	/usr/lib/libc.so.1
0xff3e6000 	/usr/platform/SUNW,Ultra-5_10/lib/libc_psr.so.1
0xfe800000 	/net/vmsqe-amd-01.russia/export3/vmsqe/jdk-builds/JDK6b103/solaris-sparc/jre/lib/sparc/client/libjvm.so
0xff300000 	/usr/lib/libsocket.so.1
0xff2e0000 	/usr/lib/libsched.so.1
0xff1b0000 	/usr/lib/libm.so.1
0xff180000 	/usr/lib/libCrun.so.1
0xff160000 	/usr/lib/libdoor.so.1
0xff080000 	/usr/lib/libnsl.so.1
0xff140000 	/usr/lib/libmp.so.2
0xfef60000 	/net/vmsqe-amd-01.russia/export3/vmsqe/jdk-builds/JDK6b103/solaris-sparc/jre/lib/sparc/native_threads/libhpi.so
0xfef10000 	/net/vmsqe-amd-01.russia/export3/vmsqe/jdk-builds/JDK6b103/solaris-sparc/jre/lib/sparc/libjdwp.so
0xfeef0000 	/net/vmsqe-amd-01.russia/export3/vmsqe/jdk-builds/JDK6b103/solaris-sparc/jre/lib/sparc/libnpt.so
0xfeed0000 	/usr/lib/iconv/UTF-8%646.so
0xfeeb0000 	/usr/lib/iconv/646%UTF-8.so
0xfee70000 	/net/vmsqe-amd-01.russia/export3/vmsqe/jdk-builds/JDK6b103/solaris-sparc/jre/lib/sparc/libverify.so
0xfe7c0000 	/net/vmsqe-amd-01.russia/export3/vmsqe/jdk-builds/JDK6b103/solaris-sparc/jre/lib/sparc/libjava.so
0xfee40000 	/net/vmsqe-amd-01.russia/export3/vmsqe/jdk-builds/JDK6b103/solaris-sparc/jre/lib/sparc/libzip.so
0xfe7a0000 	/net/vmsqe-amd-01.russia/export3/vmsqe/jdk-builds/JDK6b103/solaris-sparc/jre/lib/sparc/libdt_socket.so
0xfe6d0000 	/usr/lib/nss_nis.so.1
0xfe6a0000 	/net/vmsqe-amd-01.russia/export3/vmsqe/jdk-builds/JDK6b103/solaris-sparc/jre/lib/sparc/libnet.so

VM Arguments:
jvm_args: -Xdebug -Xrunjdwp:transport=dt_socket,address=vmsqe-u10-03:45576,suspend=y
java_command: RetransformStress_Debuggee
Launcher Type: SUN_STANDARD

Environment Variables:
CLASSPATH=/set/vmsqe/jdk-builds/latest/solaris-sparc/lib/tools.jar:/home/sb196040/eclipse_jpda/vm_testbase3/bin
PATH=/usr/dt/bin:/usr/openwin/bin:/usr/ccs/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/ucb:/usr/local/bin:/usr/dist/local/exe:/usr/dist/exe:/usr/sfw/bin:/usr/lib/lp/postscript:.
LD_LIBRARY_PATH=/net/vmsqe-amd-01.russia/export3/vmsqe/jdk-builds/JDK6b103/solaris-sparc/jre/lib/sparc/client:/net/vmsqe-amd-01.russia/export3/vmsqe/jdk-builds/JDK6b103/solaris-sparc/jre/lib/sparc:/net/vmsqe-amd-01.russia/export3/vmsqe/jdk-builds/JDK6b103/solaris-sparc/jre/../lib/sparc:/home/sb196040/eclipse_jpda/vm_testbase3
SHELL=/bin/bash
DISPLAY=d-espb04-127-83:0.0
HOSTTYPE=sparc
OSTYPE=solaris2.9
MACHTYPE=sparc-sun-solaris2.9

Signal Handlers:
SIGSEGV: [libjvm.so+0x4e4300], sa_mask[0]=0x7fbffeff, sa_flags=0x0000000c
SIGBUS: [libjvm.so+0x4e4300], sa_mask[0]=0x7fbffeff, sa_flags=0x0000000c
SIGFPE: [libjvm.so+0x172aa8], sa_mask[0]=0x7fbffeff, sa_flags=0x0000000c
SIGPIPE: [libjvm.so+0x172aa8], sa_mask[0]=0x7fbffeff, sa_flags=0x0000000c
SIGILL: [libjvm.so+0x172aa8], sa_mask[0]=0x7fbffeff, sa_flags=0x0000000c
SIGUSR1: [libjvm.so+0x4180e8], sa_mask[0]=0x00000000, sa_flags=0x00000008
SIGUSR2: [libjvm.so+0x172aa8], sa_mask[0]=0x7fbffeff, sa_flags=0x0000000c
SIGHUP: [libjvm.so+0x4155c0], sa_mask[0]=0x7fbffeff, sa_flags=0x00000004
SIGINT: [libjvm.so+0x4155c0], sa_mask[0]=0x7fbffeff, sa_flags=0x00000004
SIGQUIT: [libjvm.so+0x4155c0], sa_mask[0]=0x7fbffeff, sa_flags=0x00000004
SIGTERM: [libjvm.so+0x4155c0], sa_mask[0]=0x7fbffeff, sa_flags=0x00000004
SIGQUIT: [libjvm.so+0x4155c0], sa_mask[0]=0x7fbffeff, sa_flags=0x00000004
SIGTERM: [libjvm.so+0x4155c0], sa_mask[0]=0x7fbffeff, sa_flags=0x00000004
SIGUSR1: [libjvm.so+0x4180e8], sa_mask[0]=0x00000000, sa_flags=0x00000008
SIGUSR2: [libjvm.so+0x172aa8], sa_mask[0]=0x7fbffeff, sa_flags=0x0000000c


---------------  S Y S T E M  ---------------

OS:                        Solaris 9 9/04 s9s_u7wos_09 SPARC
           Copyright 2004 Sun Microsystems, Inc.  All Rights Reserved.
                        Use is subject to license terms.
                             Assembled 29 June 2004

uname:SunOS 5.9 Generic_118558-21 sun4u  (T2 libthread)
rlimit: STACK 8192k, CORE infinity, NOFILE 65536, AS infinity
load average:0.49 0.18 0.12

CPU:total 1 has_v8, has_v9, has_vis1

Memory: 8k page, physical 262144k(128496k free)

vm_info: Java HotSpot(TM) Client VM (1.6.0-rc-b103) for solaris-sparc, built on Oct 19 2006 01:34:04 by "" with unknown Workshop:0x580
hs_err file run through the hs_err script:
#
# An unexpected error has been detected by Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0xfebb62ac, pid=22544, tid=3
#
# Java VM: Java HotSpot(TM) Client VM (1.6.0-rc-b103 mixed mode)
# Problematic frame:
# V  [libjvm.so+0x3b62ac]
#
# 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 (0x000ab400):  VMThread [id=3]

siginfo:si_signo=11, si_errno=0, si_code=1, si_addr=0x00000000;;
;; si_signo=11  SIGSEGV
;; si_code=1    SEGV_MAPERR /* Address not mapped to object.  */

Registers:
 O0=0x0000cc00 O1=0x00013800 O2=0xfff71e67 O3=0x0008e000
 O4=0xfedfc000 O5=0x00023574 O6=0xfc0ffb90 O7=0x000ce518
 G1=0x0000cfec G2=0x00011c00 G3=0x00023400 G4=0x00013aac
 G5=0x00000000 G6=0x00000000 G7=0xff330400 Y=0xfffff8b5
 PC=0xfebb62ac nPC=0xfebb62b0


Top of Stack: (sp=0xfc0ffb90)
0xfc0ffb90:   fec022a4 f80040b0 f8003a68 fee1f574
0xfc0ffba0:   00000000 007f9671 fee0faac 000001c4
0xfc0ffbb0:   fed6de62 fed6de67 00011f04 fee0df04
0xfc0ffbc0:   fee08fec fee0faac fc0ffc60 febb6528
0xfc0ffbd0:   00000005 00000001 00000000 00000000
0xfc0ffbe0:   00000000 ff330400 00000000 f3e7f6d8
0xfc0ffbf0:   00000000 000abbac 000ab7c0 000ab7b8
0xfc0ffc00:   0002e268 fed6de62 00014000 99d98b88

Instructions: (pc=0xfebb62ac)
0xfebb629c:   f0 23 a0 74 a6 06 c0 0d b6 06 c0 1a e8 03 e0 04
0xfebb62ac:   da 05 20 00 ac 83 7f ff 06 80 00 74 b1 2d a0 02
;;
Stack: [0xfc080000,0xfc100000),  sp=0xfc0ffb90,  free space=510k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0x3b62ac];;  __1cPJvmtiBreakpointWeach_method_version_do6MmNmethodOopDesc_Mi_v_v_+0x1b0
V  [libjvm.so+0x3b6530];;  __1cPJvmtiBreakpointDset6M_v_+0x40
V  [libjvm.so+0x13f82c];;  __1cMVM_OperationIevaluate6M_v_+0x88
V  [libjvm.so+0x4e5df4];;  __1cIVMThreadSevaluate_operation6MpnMVM_Operation__v_+0xd4
V  [libjvm.so+0x4e6380];;  __1cIVMThreadEloop6M_v_+0x46c
V  [libjvm.so+0xb66ac];;  __1cIVMThreadDrun6M_v_+0xa0
V  [libjvm.so+0x413a0c];;  java_start+0x120

VM_Operation (0xf3e7f654): change breakpoints, mode: safepoint, requested by thread 0x000e2800


---------------  P R O C E S S  ---------------

Java Threads: ( => current thread )
  0x00106000 JavaThread "TestThread" [_thread_blocked, id=13]
  0x000f1c00 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=11]
  0x000f0c00 JavaThread "CompilerThread0" daemon [_thread_blocked, id=10]
  0x000e5800 JavaThread "JDWP Command Reader" daemon [_thread_in_native, id=9]
  0x000e4400 JavaThread "JDWP Event Helper Thread" daemon [_thread_blocked, id=8]
  0x000e2800 JavaThread "JDWP Transport Listener: dt_socket" daemon [_thread_blocked, id=7]
  0x000c4c00 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=6]
  0x000af800 JavaThread "Finalizer" daemon [_thread_blocked, id=5]
  0x000ae800 JavaThread "Reference Handler" daemon [_thread_blocked, id=4]
  0x00030800 JavaThread "main" [_thread_in_native, id=2]

Other Threads:
=>0x000ab400 VMThread [id=3]
  0x000f3400 WatcherThread [id=12]

VM state:at safepoint (normal execution)

VM Mutex/Monitor currently owned by a thread:  ([mutex/lock_event])
[0x0002fc10/0x0002fc40] Threads_lock - owner thread: 0x000ab400

Heap
 def new generation   total 2560K, used 1718K [0xf4000000, 0xf42c0000, 0xf4710000)
  eden space 2304K,  63% used [0xf4000000, 0xf416d9d8, 0xf4240000)
  from space 256K, 100% used [0xf4240000, 0xf4280000, 0xf4280000)
  to   space 256K,   0% used [0xf4280000, 0xf4280000, 0xf42c0000)
 tenured generation   total 22024K, used 21489K [0xf4710000, 0xf5c92000, 0xf8000000)
   the space 22024K,  97% used [0xf4710000, 0xf5c0c618, 0xf5c0c800, 0xf5c92000)
 compacting perm gen  total 12288K, used 2353K [0xf8000000, 0xf8c00000, 0xfc000000)
   the space 12288K,  19% used [0xf8000000, 0xf824c7d0, 0xf824c800, 0xf8c00000)
No shared spaces configured.

Dynamic libraries:
0x00010000      /net/vmsqe-amd-01.russia/export3/vmsqe/jdk-builds/JDK6b103/solaris-sparc/jre/bin/java
0xff370000      /usr/lib/libthread.so.1
0xff350000      /net/vmsqe-amd-01.russia/export3/vmsqe/jdk-builds/JDK6b103/solaris-sparc/jre/bin/../lib/sparc/jli/libjli.so
0xff3fa000      /usr/lib/libdl.so.1
0xff200000      /usr/lib/libc.so.1
0xff3e6000      /usr/platform/SUNW,Ultra-5_10/lib/libc_psr.so.1
0xfe800000      /net/vmsqe-amd-01.russia/export3/vmsqe/jdk-builds/JDK6b103/solaris-sparc/jre/lib/sparc/client/libjvm.so
0xff300000      /usr/lib/libsocket.so.1
0xff2e0000      /usr/lib/libsched.so.1
0xff1b0000      /usr/lib/libm.so.1
0xff180000      /usr/lib/libCrun.so.1
0xff160000      /usr/lib/libdoor.so.1
0xff080000      /usr/lib/libnsl.so.1
0xff140000      /usr/lib/libmp.so.2
0xfef60000      /net/vmsqe-amd-01.russia/export3/vmsqe/jdk-builds/JDK6b103/solaris-sparc/jre/lib/sparc/native_threads/libhpi.so
0xfef10000      /net/vmsqe-amd-01.russia/export3/vmsqe/jdk-builds/JDK6b103/solaris-sparc/jre/lib/sparc/libjdwp.so
0xfeef0000      /net/vmsqe-amd-01.russia/export3/vmsqe/jdk-builds/JDK6b103/solaris-sparc/jre/lib/sparc/libnpt.so
0xfeed0000      /usr/lib/iconv/UTF-8%646.so
0xfeeb0000      /usr/lib/iconv/646%UTF-8.so
0xfee70000      /net/vmsqe-amd-01.russia/export3/vmsqe/jdk-builds/JDK6b103/solaris-sparc/jre/lib/sparc/libverify.so
0xfe7c0000      /net/vmsqe-amd-01.russia/export3/vmsqe/jdk-builds/JDK6b103/solaris-sparc/jre/lib/sparc/libjava.so
0xfee40000      /net/vmsqe-amd-01.russia/export3/vmsqe/jdk-builds/JDK6b103/solaris-sparc/jre/lib/sparc/libzip.so
0xfe7a0000      /net/vmsqe-amd-01.russia/export3/vmsqe/jdk-builds/JDK6b103/solaris-sparc/jre/lib/sparc/libdt_socket.so
0xfe6d0000      /usr/lib/nss_nis.so.1
0xfe6a0000      /net/vmsqe-amd-01.russia/export3/vmsqe/jdk-builds/JDK6b103/solaris-sparc/jre/lib/sparc/libnet.so

VM Arguments:
jvm_args: -Xdebug -Xrunjdwp:transport=dt_socket,address=vmsqe-u10-03:45576,suspend=y
java_command: RetransformStress_Debuggee
Launcher Type: SUN_STANDARD

Environment Variables:
CLASSPATH=/set/vmsqe/jdk-builds/latest/solaris-sparc/lib/tools.jar:/home/sb196040/eclipse_jpda/vm_testbase3/bin
PATH=/usr/dt/bin:/usr/openwin/bin:/usr/ccs/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/ucb:/usr/local/bin:/usr/dist/local/exe:/usr/dist/exe:/usr/sfw/bin:/usr/lib/lp/postscript:.
LD_LIBRARY_PATH=/net/vmsqe-amd-01.russia/export3/vmsqe/jdk-builds/JDK6b103/solaris-sparc/jre/lib/sparc/client:/net/vmsqe-amd-01.russia/export3/vmsqe/jdk-builds/JDK6b103/solaris-sparc/jre/lib/sparc:/net/vmsqe-amd-01.russia/export3/vmsqe/jdk-builds/JDK6b103/solaris-sparc/jre/../lib/sparc:/home/sb196040/eclipse_jpda/vm_testbase3
SHELL=/bin/bash
DISPLAY=d-espb04-127-83:0.0
HOSTTYPE=sparc
OSTYPE=solaris2.9
MACHTYPE=sparc-sun-solaris2.9

Signal Handlers:
SIGSEGV: [libjvm.so+0x4e4300], sa_mask[0]=0x7fbffeff, sa_flags=0x0000000c
SIGBUS: [libjvm.so+0x4e4300], sa_mask[0]=0x7fbffeff, sa_flags=0x0000000c
SIGFPE: [libjvm.so+0x172aa8], sa_mask[0]=0x7fbffeff, sa_flags=0x0000000c
SIGPIPE: [libjvm.so+0x172aa8], sa_mask[0]=0x7fbffeff, sa_flags=0x0000000c
SIGILL: [libjvm.so+0x172aa8], sa_mask[0]=0x7fbffeff, sa_flags=0x0000000c
SIGUSR1: [libjvm.so+0x4180e8], sa_mask[0]=0x00000000, sa_flags=0x00000008
SIGUSR2: [libjvm.so+0x172aa8], sa_mask[0]=0x7fbffeff, sa_flags=0x0000000c
SIGHUP: [libjvm.so+0x4155c0], sa_mask[0]=0x7fbffeff, sa_flags=0x00000004
SIGINT: [libjvm.so+0x4155c0], sa_mask[0]=0x7fbffeff, sa_flags=0x00000004
SIGQUIT: [libjvm.so+0x4155c0], sa_mask[0]=0x7fbffeff, sa_flags=0x00000004
SIGTERM: [libjvm.so+0x4155c0], sa_mask[0]=0x7fbffeff, sa_flags=0x00000004
SIGQUIT: [libjvm.so+0x4155c0], sa_mask[0]=0x7fbffeff, sa_flags=0x00000004
SIGTERM: [libjvm.so+0x4155c0], sa_mask[0]=0x7fbffeff, sa_flags=0x00000004
SIGUSR1: [libjvm.so+0x4180e8], sa_mask[0]=0x00000000, sa_flags=0x00000008
SIGUSR2: [libjvm.so+0x172aa8], sa_mask[0]=0x7fbffeff, sa_flags=0x0000000c


---------------  S Y S T E M  ---------------

OS:                        Solaris 9 9/04 s9s_u7wos_09 SPARC
           Copyright 2004 Sun Microsystems, Inc.  All Rights Reserved.
                        Use is subject to license terms.
                             Assembled 29 June 2004

uname:SunOS 5.9 Generic_118558-21 sun4u  (T2 libthread)
rlimit: STACK 8192k, CORE infinity, NOFILE 65536, AS infinity
load average:0.49 0.18 0.12

CPU:total 1 has_v8, has_v9, has_vis1

Memory: 8k page, physical 262144k(128496k free)

vm_info: Java HotSpot(TM) Client VM (1.6.0-rc-b103) for solaris-sparc, built on Oct 19 2006 01:34:04 by "" with unknown Workshop:0x580

Comments
SUGGESTED FIX See attached 6489232-webrev-cr0.tgz file for the proposed fix.
10-04-2007

EVALUATION My hazy memory was wrong! Here is the relevant comment from src/share/vm/oops/instanceKlass.hpp: // A Handle-ized version of PreviousVersionNode. class PreviousVersionInfo : public ResourceObj { private: constantPoolHandle _prev_constant_pool_handle; // If the previous version of the instanceKlass doesn't have any // EMCP methods, then _prev_EMCP_methods will be NULL. Since the // methods cannot be collected while we hold a handle, // _prev_EMCP_methods should never have a length of zero. GrowableArray<methodHandle>* _prev_EMCP_method_handles; Even the underlying "node" says something similar: class PreviousVersionNode : public CHeapObj { private: jweak _prev_constant_pool; // If the previous version of the instanceKlass doesn't have any // EMCP methods, then _prev_EMCP_methods will be NULL. If all the // EMCP methods have been collected, then _prev_EMCP_methods can // have a length of zero. GrowableArray<jweak>* _prev_EMCP_methods; I checked all uses of PreviousVersionNode->prev_EMCP_methods() and all callers properly handle a returned NULL value. I checked all uses of PreviousVersionInfo->prev_EMCP_method_handles() and the failing call is the only location that doesn't properly check for a NULL value. This crashing situation can occur when: - RedefineClasses() is used to redefine all methods in a class so there are no EMCP methods. - A breakpoint is set in the redefined class so that the list of previous versions must be searched. - The PreviousVersionNode._prev_constant_pool field hasn't been collected yet. This explains why sometimes the test passes.
05-04-2007

EVALUATION This crash occurs because the method Handles array returned by PreviousVersionInfo->prev_EMCP_method_handles() is NULL instead of empty. My hazy memory says that when you have a PreviousVersionInfo node as returned by a PreviousVersionWalker, the method Handles array should always exist and not ever be NULL. However, clearly it is NULL so I need to figure out why.
05-04-2007