JDK-4489842 : profiler "prof" crashes VM with assert(i < len, "oopmap not found")
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 1.4.0
  • Priority: P4
  • Status: Closed
  • Resolution: Duplicate
  • OS: generic
  • CPU: generic
  • Submitted: 2001-08-08
  • Updated: 2001-08-23
  • Resolved: 2001-08-17
Related Reports
Duplicate :  
Relates :  
Description

Name: egR10015			Date: 08/08/2001



HotSpot 1.4.0-beta_refresh-b74 fails to pass the following test

nsk/jdi/ArrayReference/setValues_l/setvaluesl001

from testbase_nsk on all platforms in profiling mode with
standard profiler "prof". The VM intermittently crashes, usually
one time in 8-10 executions of the test. The debug VM crashes
on every execution with the following assertions:

assert(i < len, "oopmap not found")
Error ID: /export/home3/jdk/jdk1.4/ws/hotspot/src/share/vm/compiler/oopMap.cpp, 335 [Patched]

or

assert(!precise || at(i)->offset() == pc_offset, "oopmap not found")
Error happened during: deoptimize
Error ID: /export/home3/jdk/jdk1.4/ws/hotspot/src/share/vm/compiler/oopMap.cpp, 336 [ Patched ]

The crash happens only if standard profiler "prof" is enabled by
java option "-prof".

The test mentioned above checks the setValues(List) method of
ArrayReference interface of com.sun.jdi package. It consists of
a debugger part (the file setvaluesl001.java) and a debuggee part
(the file setvaluesl001a.java).

To reproduce the bug run with HS1.4

ksh doit.sh $JAVA_HOME
or
ksh doit_g.sh $DEBUG_JAVA_HOME

in
/net/sqesvr.eng/export/vsn/GammaBase/Bugs/<this bug number>

where JAVA_HOME should point to jdk1.4

and wait until the VM crash.

------------------ output on SolSparc with HS 1.4.0-b74: --------------------
$ ksh doit.sh ~/hotspot/jdk1.4/solsparc
Compiling support classes...
Compiling test classes...
java version "1.4.0-beta_refresh"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.0-beta_refresh-b74)
Java HotSpot(TM) Client VM (build 1.4.0-beta_refresh-b74, mixed mode)

----------------------------------
Executing the test (attempt #1)...
[skipped]
exit code = 95
----------------------------------
Executing the test (attempt #2)...
HPROF ERROR: thread local table NULL in method exit 9eefc
HPROF ERROR: thread local table NULL in method exit 9eefc
HPROF ERROR: thread local table NULL in method exit 9f8ac
HPROF ERROR : stack underflow in method exit
HPROF ERROR : stack underflow in method exit
binder> Listening for a pipe connection to port: 7000
binder> VirtualMachineManager: version 1.4
binder> FindingConnector: default
binder> LaunchingConnector:
binder>     name: com.sun.jdi.CommandLineLaunch
binder>     description: Launches target using Sun Java VM command line and attaches to it
binder>     transport: dt_socket
binder> Connector arguments:
binder>     home=/export/ld54/java/dest/jdk1.4.0beta-b74/solsparc/jre
binder>     vmexec=java
binder>     options= -classpath ".:share/classes:/home/eug/hotspot/jdk1.4/solsparc/lib/tools.jar"
binder>     main=nsk.jdi.ArrayReference.setValues_l.setvaluesl001a -verbose "-verbose" "-waittime=1"
binder>     quote="
binder>     suspend=true
binder> Launch debugee
binder> Waiting for pipe connection
debugee.stderr> debugee.pipe> Making pipe connection to socket: localhost:7000
debugee.stderr> DEBUGEE> debugee started.
debuger> debugee's "ready" signal recieved.
debuger> Total fields in debugee read: 22 total fields in debuger: 14

debuger> Got sample fields for primitive types.
debuger> boolean is nsk.jdi.ArrayReference.setValues_l.ClassToCheck.z1S
debuger> byte is nsk.jdi.ArrayReference.setValues_l.ClassToCheck.b1S
debuger> char is nsk.jdi.ArrayReference.setValues_l.ClassToCheck.c1S
debuger> double is nsk.jdi.ArrayReference.setValues_l.ClassToCheck.d1S
debuger> float is nsk.jdi.ArrayReference.setValues_l.ClassToCheck.f1S
debuger> int is nsk.jdi.ArrayReference.setValues_l.ClassToCheck.i1S
debuger> long is nsk.jdi.ArrayReference.setValues_l.ClassToCheck.l1S
debuger> short is nsk.jdi.ArrayReference.setValues_l.ClassToCheck.r1S

debuger> Got sample array references for primitive types.
debuger> boolean is instance of boolean[2] (id=106)
debuger> byte is instance of byte[5] (id=107)
debuger> char is instance of char[4] (id=108)
debuger> double is instance of double[9] (id=109)
debuger> float is instance of float[9] (id=110)
debuger> int is instance of int[6] (id=111)
debuger> long is instance of long[5] (id=112)
debuger> short is instance of short[5] (id=113)

debuger> Got list of values for primitive types.
debuger> boolean is [true, false]
debuger> byte is [-128, -1, 0, 1, 127]

Unexpected Signal : 11 occurred at PC=0xFE59C8A4
Function=JVM_IsInterrupted+0xC30
Library=/export/ld54/java/dest/jdk1.4.0beta-b74/solsparc/jre/lib/sparc/client/libjvm.so


Dynamic libraries:
0x10000 	/home/eug/hotspot/jdk1.4/solsparc/bin/java
0xff360000 	/usr/lib/libthread.so.1
0xff3a0000 	/usr/lib/libdl.so.1
0xff280000 	/usr/lib/libc.so.1
0xff270000 	/usr/platform/SUNW,Ultra-60/lib/libc_psr.so.1
0xfe400000 	/export/ld54/java/dest/jdk1.4.0beta-b74/solsparc/jre/lib/sparc/client/libjvm.so
0xff210000 	/usr/lib/libCrun.so.1
0xff1f0000 	/usr/lib/libsocket.so.1
0xff100000 	/usr/lib/libnsl.so.1
0xff0d0000 	/usr/lib/libm.so.1
0xff240000 	/usr/lib/libw.so.1
0xff0b0000 	/usr/lib/libmp.so.2
0xff080000 	/export/ld54/java/dest/jdk1.4.0beta-b74/solsparc/jre/lib/sparc/native_threads/libhpi.so
0xff050000 	/export/ld54/java/dest/jdk1.4.0beta-b74/solsparc/jre/lib/sparc/libverify.so
0xff020000 	/export/ld54/java/dest/jdk1.4.0beta-b74/solsparc/jre/lib/sparc/libjava.so
0xfe7e0000 	/export/ld54/java/dest/jdk1.4.0beta-b74/solsparc/jre/lib/sparc/libzip.so
0xfe200000 	/export/ld54/java/dest/jdk1.4.0beta-b74/solsparc/jre/lib/sparc/libhprof.so
0xfe180000 	/export/ld54/java/dest/jdk1.4.0beta-b74/solsparc/jre/lib/sparc/libnet.so
0xfe160000 	/usr/lib/nss_nisplus.so.1
0xfc960000 	/usr/lib/libdoor.so.1
0xfc940000 	/export/ld54/java/dest/jdk1.4.0beta-b74/solsparc/jre/lib/sparc/libnio.so
0xfc920000 	/usr/lib/libposix4.so.1
0xfc860000 	/usr/lib/libaio.so.1

Local Time = Wed Aug  8 15:28:05 2001
Elapsed Time = 11
#
# HotSpot Virtual Machine Error : 11
# Error ID : 4F530E43505002D7 01
# Please report this error at
# http://java.sun.com/cgi-bin/bugreport.cgi
#
# Java VM: Java HotSpot(TM) Client VM (1.4.0-beta_refresh-b74 mixed mode)
#
# An error report file has been saved as hs_err_pid6814.log.
# Please refer to the file for further information.
#
doit.sh[46]: 6814 Abort
exit code = 134
-----------------------------------------------------------------------------

---------------- output on SolSparc with debug HS 1.4.0-b74:-----------------
$ ksh doit_g.sh ~/hotspot/jdk1.4/solsparc
Compiling support classes...
Note: share/Status.java uses or overrides a deprecated API.
Note: Recompile with -deprecation for details.
Compiling test classes...
Note: setvaluesl001.java uses or overrides a deprecated API.
Note: Recompile with -deprecation for details.
java version "1.4.0-beta_refresh"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.0-beta_refresh-b74)
Java HotSpot(TM) Client VM (build 1.4.0-beta_refresh-b74-debug, mixed mode)

----------------------------------
Executing the test (attempt #1)...
HPROF ERROR: thread local table NULL in method exit c7690
HPROF ERROR: thread local table NULL in method exit c7690
HPROF ERROR: thread local table NULL in method exit c8388
HPROF ERROR : stack underflow in method exit
HPROF ERROR : stack underflow in method exit
binder> Listening for a pipe connection to port: 7000
binder> VirtualMachineManager: version 1.4
binder> FindingConnector: default
binder> LaunchingConnector:
binder>     name: com.sun.jdi.CommandLineLaunch
binder>     description: Launches target using Sun Java VM command line and attaches to it
binder>     transport: dt_socket
binder> Connector arguments:
binder>     home=/export/ld54/java/dest/jdk1.4.0beta-b74/solsparc/jre
binder>     vmexec=java
binder>     options= -classpath ".:share/classes:/home/eug/hotspot/jdk1.4/solsparc/lib/tools.jar"
binder>     main=nsk.jdi.ArrayReference.setValues_l.setvaluesl001a -verbose "-verbose" "-waittime=1"
binder>     quote="
binder>     suspend=true
binder> Launch debugee
debugee.stderr> debugee.pipe> Making pipe connection to socket: localhost:7000
debugee.stderr> DEBUGEE> debugee started.
binder> Waiting for pipe connection
debuger> debugee's "ready" signal recieved.
debuger> Total fields in debugee read: 22 total fields in debuger: 14

debuger> Got sample fields for primitive types.
debuger> boolean is nsk.jdi.ArrayReference.setValues_l.ClassToCheck.z1S
#
# HotSpot Virtual Machine Error, assertion failure
# Please report this error at
# http://java.sun.com/cgi-bin/bugreport.cgi
#
# Java VM: Java HotSpot(TM) Client VM (1.4.0-beta_refresh-b74-debug mixed mode)
#
# assert(!precise || at(i)->offset() == pc_offset, "oopmap not found")
#
# Error ID: /export/home3/jdk/jdk1.4/ws/hotspot/src/share/vm/compiler/oopMap.cpp, 336 [ Patched ]
#
# Problematic Thread: prio=5 tid=0xc59c0 nid=0x4 runnable 
#
Dumping core....
doit_g.sh[46]: 6857 Abort
exit code = 134
-----------------------------------------------------------------------------

======================================================================