Name: egR10015 Date: 09/11/2003
--------------------------------------
Test : nsk/jvmti/GarbageCollectionStart/gcstart002
: nsk/jvmti/GarbageCollectionFinish/gcfinish001
TestBase : testbase_vm
VM : all
Mode : all
Platform : generic
OS : generic
JDK : 1.5.0-b18
--------------------------------------
The JVMTI events GarbageCollectionStart, GarbageCollectionFinish
do not allow to call the raw monitor functions and memory management
functions. It contradicts the spec saying:
| This event is sent while the world is still stopped, thus the event
| handler should not use JNI functions or JVMTI functions (except the
| raw monitor functions, Allocate or Deallocate).
The mentioned tests call the following functions
CreateRawMonitor()
RawMonitorEnter()
RawMonitorExit()
DestroyRawMonitor()
Allocate()
Deallocate()
during processing an appropriate GC event, but all the functions fail
with the error JVMTI_ERROR_UNATTACHED_THREAD.
To reproduce the bug run
sh do_gcstart.sh $JAVA_HOME for the test 'gcstart002'
or
sh do_gcfinish.sh $JAVA_HOME for the test 'gcfinish001'
in
/net/jano.sfbay/export/disk20/GammaBase/Bugs/<this bug number>
where JAVA_HOME should point to jdk1.5
----------------- output on Solsparc with HS 1.5-b18: -------------------
$ sh do_gcstart.sh ~/hotspot/jdk1.5/solsparc
gcstart002.c:
share/JVMTITools.c:
share/agent_tools.c:
share/jni_tools.c:
share/jvmti_tools.c:
share/native_thread.c:
share/nsk_tools.c:
Compiling test classes...
java version "1.5.0-beta"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-beta-b18)
Java HotSpot(TM) Client VM (build 1.5.0-beta-b18, mixed mode)
Executing the test ...
- gcstart002.c, 159: setting event callbacks ...
- gcstart002.c, 167: setting event callbacks done
enabling JVMTI events ...
- gcstart002.c, 174: enabling the events done
- gcstart002.c, 114: >>>> GarbageCollectionStart event #1 received
- gcstart002.c, 34: GarbageCollectionStart: creating a raw monitor ...
# ERROR: gcstart002.c, 36: NSK_CPP_STUB3(CreateRawMonitor, jvmti_env, "_lock",
&_lock)
# jvmti error: code=115, name=JVMTI_ERROR_UNATTACHED_THREAD
# ERROR: gcstart002.c, 39: TEST FAILED: GarbageCollectionStart: unable to create
a raw monitor
- gcstart002.c, 84: GarbageCollectionStart: allocating memory ...
# ERROR: gcstart002.c, 86: NSK_CPP_STUB3(Allocate, jvmti_env, MEM_SIZE, &mem)
# jvmti error: code=115, name=JVMTI_ERROR_UNATTACHED_THREAD
# ERROR: gcstart002.c, 89: TEST FAILED: GarbageCollectionStart: unable to
allocate memory
- gcstart002.c, 120: <<<<
...
- gcstart002.c, 114: >>>> GarbageCollectionStart event #97 received
- gcstart002.c, 34: GarbageCollectionStart: creating a raw monitor ...
# ERROR: gcstart002.c, 36: NSK_CPP_STUB3(CreateRawMonitor, jvmti_env, "_lock",
&_lock)
# jvmti error: code=115, name=JVMTI_ERROR_UNATTACHED_THREAD
# ERROR: gcstart002.c, 39: TEST FAILED: GarbageCollectionStart: unable to create
a raw monitor
- gcstart002.c, 84: GarbageCollectionStart: allocating memory ...
# ERROR: gcstart002.c, 86: NSK_CPP_STUB3(Allocate, jvmti_env, MEM_SIZE, &mem)
# jvmti error: code=115, name=JVMTI_ERROR_UNATTACHED_THREAD
# ERROR: gcstart002.c, 89: TEST FAILED: GarbageCollectionStart: unable to
allocate memory
- gcstart002.c, 120: <<<<
- gcstart002.c, 125: VMDeath event received
exit code = 97
-------------------------------------------------------------------------
The tests will be available in release 23 of the testbase_vm.
======================================================================
Name: egR10015 Date: 09/30/2003
The same issue concerns the JVMTI event ObjectFree. In particular, the
function GetPhase() returns JVMTI_ERROR_UNATTACHED_THREAD during callback.
This bug affects the following NSK test:
nsk/jvmti/ObjectFree/objfree002
which will be available in release 23 of the testbase_vm.
Here is fragment of test log:
---------------------------------------------------------------
- objfree002.c, 33: >>>> ObjectFree event received
# ERROR: objfree002.c, 37: NSK_CPP_STUB2(GetPhase, jvmti_env, &phase)
# jvmti error: code=115, name=JVMTI_ERROR_UNATTACHED_THREAD
# ERROR: objfree002.c, 39: TEST FAILED: unable to obtain phase of the VM execution
- objfree002.c, 58: CHECK PASSED: ObjectFree event #1 received for the object previously tagged with 8
- objfree002.c, 60: <<<<
---------------------------------------------------------------
======================================================================
Name: egR10015 Date: 10/22/2003
The bug affects also the following NSK test:
nsk/jvmti/ObjectFree/objfree001
which fixed version will be available in release 24 of the testbase_vm.
======================================================================