Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-2047537 | 1.4.0 | Mandy Chung | P3 | Closed | Fixed | rc1 |
Using merlin-prebeta3 (1.4) release build 80 :
----------------------------------------------
When parsing a heap dump, we are often seeing classes and objects for which we have not received CLASS_LOAD/OBJ_ALLOC events. We attempt to request these events. When we request an OBJ_ALLOC event, more often than not the request fails, but the jvm does not crash. When we request a CLASS_LOAD event, an access violation occurs within jvm.dll.
Unexpected Signal : EXCEPTION_ACCESS_VIOLATION occurred at
PC=0x6D3836E8
Function=JVM_FindSignal+0x6DB7
Library=c:\jdk1.4b79\jdk1.4\jre\bin\client\jvm.dll
Refer to Incident Manager bug report # 132562 for more details about the outputs generated on windows platform.
We don't know if it was working before because this is the first time we are
trying to request CLASS_LOAD events while parsing a heap dump (we're trying
this to workaround some of the existing problems - Bug 4506239 - Missing class load events for object arrays in heap dump). It would be hard to see if it was working before because the problems we're attempting to workaround didn't exist before, therefore there was no need to request the CLASS_LOAD events while parsing the heap dump. Using my modified hprof (see below) with earlier versions wouldn't do the trick because class is never
NULL.
Reproduction Steps :
--------------------
In order to reproduce this, modify hprof_heapdump.c source file and Compile hprof again and run it with a simple "Hello World" java program. What I am doing is asking for the CLASS_LOAD event when we don't recognize the array element class (Bug 4506239). I added the following lines to function hprof_process_dump_buffer, under the JVMPI_GC_OBJ_ARRAY_DUMP case:
if (class == NULL && class_id != 0) {
CALL(RequestEvent)(JVMPI_EVENT_CLASS_LOAD, class_id);
}
Attached is the modify hprof_heapdump.c file.
rebuild libhprof.so using this modified source file and copy it to jdk1.4/jre/lib/sparc directory.
prithvi 283 =>./bin/java -Xrunhprof:heap=dump test
Hello World
Dumping Java heap ...
Unexpected Signal : 10 occurred at PC=0xFE69AAA0
Function=[Unknown. Nearest: JVM_RaiseSignal+0x34E80]
Library=/home/raghuv/jdk1.4/jre/lib/sparc/client/libjvm.so
Current Java thread:
Dynamic libraries:
0x10000 ./bin/java
0xff350000 /usr/lib/libthread.so.1
0xff390000 /usr/lib/libdl.so.1
0xff200000 /usr/lib/libc.so.1
0xff330000 /usr/platform/SUNW,Ultra-5_10/lib/libc_psr.so.1
0xfe400000 /home/raghuv/jdk1.4/jre/lib/sparc/client/libjvm.so
0xff2d0000 /usr/lib/libCrun.so.1
0xff1e0000 /usr/lib/libsocket.so.1
0xff100000 /usr/lib/libnsl.so.1
0xff0d0000 /usr/lib/libm.so.1
0xff300000 /usr/lib/libw.so.1
0xff0b0000 /usr/lib/libmp.so.2
0xff080000 /home/raghuv/jdk1.4/jre/lib/sparc/native_threads/libhpi.so
0xff050000 /home/raghuv/jdk1.4/jre/lib/sparc/libverify.so
0xff020000 /home/raghuv/jdk1.4/jre/lib/sparc/libjava.so
0xfe3e0000 /home/raghuv/jdk1.4/jre/lib/sparc/libzip.so
0xfcba0000 /home/raghuv/jdk1.4/jre/lib/sparc/libhprof.so
Local Time = Thu Sep 27 11:04:19 2001
Elapsed Time = 3
#
# HotSpot Virtual Machine Error : 10
# Error ID : 4F530E43505002BA 01
# Please report this error at
# http://java.sun.com/cgi-bin/bugreport.cgi
#
# Java VM: Java HotSpot(TM) Client VM (1.4.0-beta3-b80 mixed mode)
#
# An error report file has been saved as hs_err_pid8961.log.
# Please refer to the file for further information.
#
Abort
prithvi 284 =>
----------------------------------------------
When parsing a heap dump, we are often seeing classes and objects for which we have not received CLASS_LOAD/OBJ_ALLOC events. We attempt to request these events. When we request an OBJ_ALLOC event, more often than not the request fails, but the jvm does not crash. When we request a CLASS_LOAD event, an access violation occurs within jvm.dll.
Unexpected Signal : EXCEPTION_ACCESS_VIOLATION occurred at
PC=0x6D3836E8
Function=JVM_FindSignal+0x6DB7
Library=c:\jdk1.4b79\jdk1.4\jre\bin\client\jvm.dll
Refer to Incident Manager bug report # 132562 for more details about the outputs generated on windows platform.
We don't know if it was working before because this is the first time we are
trying to request CLASS_LOAD events while parsing a heap dump (we're trying
this to workaround some of the existing problems - Bug 4506239 - Missing class load events for object arrays in heap dump). It would be hard to see if it was working before because the problems we're attempting to workaround didn't exist before, therefore there was no need to request the CLASS_LOAD events while parsing the heap dump. Using my modified hprof (see below) with earlier versions wouldn't do the trick because class is never
NULL.
Reproduction Steps :
--------------------
In order to reproduce this, modify hprof_heapdump.c source file and Compile hprof again and run it with a simple "Hello World" java program. What I am doing is asking for the CLASS_LOAD event when we don't recognize the array element class (Bug 4506239). I added the following lines to function hprof_process_dump_buffer, under the JVMPI_GC_OBJ_ARRAY_DUMP case:
if (class == NULL && class_id != 0) {
CALL(RequestEvent)(JVMPI_EVENT_CLASS_LOAD, class_id);
}
Attached is the modify hprof_heapdump.c file.
rebuild libhprof.so using this modified source file and copy it to jdk1.4/jre/lib/sparc directory.
prithvi 283 =>./bin/java -Xrunhprof:heap=dump test
Hello World
Dumping Java heap ...
Unexpected Signal : 10 occurred at PC=0xFE69AAA0
Function=[Unknown. Nearest: JVM_RaiseSignal+0x34E80]
Library=/home/raghuv/jdk1.4/jre/lib/sparc/client/libjvm.so
Current Java thread:
Dynamic libraries:
0x10000 ./bin/java
0xff350000 /usr/lib/libthread.so.1
0xff390000 /usr/lib/libdl.so.1
0xff200000 /usr/lib/libc.so.1
0xff330000 /usr/platform/SUNW,Ultra-5_10/lib/libc_psr.so.1
0xfe400000 /home/raghuv/jdk1.4/jre/lib/sparc/client/libjvm.so
0xff2d0000 /usr/lib/libCrun.so.1
0xff1e0000 /usr/lib/libsocket.so.1
0xff100000 /usr/lib/libnsl.so.1
0xff0d0000 /usr/lib/libm.so.1
0xff300000 /usr/lib/libw.so.1
0xff0b0000 /usr/lib/libmp.so.2
0xff080000 /home/raghuv/jdk1.4/jre/lib/sparc/native_threads/libhpi.so
0xff050000 /home/raghuv/jdk1.4/jre/lib/sparc/libverify.so
0xff020000 /home/raghuv/jdk1.4/jre/lib/sparc/libjava.so
0xfe3e0000 /home/raghuv/jdk1.4/jre/lib/sparc/libzip.so
0xfcba0000 /home/raghuv/jdk1.4/jre/lib/sparc/libhprof.so
Local Time = Thu Sep 27 11:04:19 2001
Elapsed Time = 3
#
# HotSpot Virtual Machine Error : 10
# Error ID : 4F530E43505002BA 01
# Please report this error at
# http://java.sun.com/cgi-bin/bugreport.cgi
#
# Java VM: Java HotSpot(TM) Client VM (1.4.0-beta3-b80 mixed mode)
#
# An error report file has been saved as hs_err_pid8961.log.
# Please refer to the file for further information.
#
Abort
prithvi 284 =>
- backported by
-
JDK-2047537 Requesting CLASS_LOAD event causes hotspot VM to crash with Unxpected Signal.
-
- Closed
-
- duplicates
-
JDK-4506239 Missing class load events for object arrays in the heap dump.
-
- Closed
-