8295816: jdwp jck tests failing with "FATAL ERROR in native method: JDWP SetTag, jvmtiError=JVMTI_ERROR_WRONG_PHASE(112)"
8295815: misc JDI tests failed with "JDWP exit error JVMTI_ERROR_WRONG_PHASE(112)" Reviewed-by: sspitsyn, amenkov, dcubed
This commit is contained in:
parent
e0c29307f7
commit
fec61746d1
@ -68,6 +68,21 @@ cbTrackingClassPrepare(jvmtiEnv* jvmti_env, JNIEnv *env, jthread thread, jclass
|
||||
addPreparedClass(env, klass);
|
||||
}
|
||||
|
||||
/*
|
||||
* It's ok to get WRONG_PHASE errors once the vm is dead. We can just
|
||||
* ignore the event in that case.
|
||||
*/
|
||||
static jboolean
|
||||
is_wrong_phase(jvmtiError error)
|
||||
{
|
||||
if (error == JVMTI_ERROR_WRONG_PHASE) {
|
||||
JDI_ASSERT(gdata->vmDead);
|
||||
return JNI_TRUE;
|
||||
}
|
||||
return JNI_FALSE;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Add a class to the prepared class hash table.
|
||||
*/
|
||||
@ -78,14 +93,20 @@ addPreparedClass(JNIEnv *env, jclass klass)
|
||||
|
||||
char* signature;
|
||||
error = classSignature(klass, &signature, NULL);
|
||||
if (is_wrong_phase(error)) {
|
||||
return;
|
||||
}
|
||||
if (error != JVMTI_ERROR_NONE) {
|
||||
EXIT_ERROR(error,"signature");
|
||||
}
|
||||
|
||||
if (gdata && gdata->assertOn) {
|
||||
if (gdata->assertOn) {
|
||||
// Check if already tagged.
|
||||
jlong tag;
|
||||
error = JVMTI_FUNC_PTR(trackingEnv, GetTag)(trackingEnv, klass, &tag);
|
||||
if (is_wrong_phase(error)) {
|
||||
return;
|
||||
}
|
||||
if (error != JVMTI_ERROR_NONE) {
|
||||
EXIT_ERROR(error, "Unable to GetTag with class trackingEnv");
|
||||
}
|
||||
@ -99,6 +120,9 @@ addPreparedClass(JNIEnv *env, jclass klass)
|
||||
}
|
||||
|
||||
error = JVMTI_FUNC_PTR(trackingEnv, SetTag)(trackingEnv, klass, ptr_to_jlong(signature));
|
||||
if (is_wrong_phase(error)) {
|
||||
return;
|
||||
}
|
||||
if (error != JVMTI_ERROR_NONE) {
|
||||
jvmtiDeallocate(signature);
|
||||
EXIT_ERROR(error,"SetTag");
|
||||
|
Loading…
Reference in New Issue
Block a user