8022836: JVM crashes in JVMTIENVBASE::GET_CURRENT_CONTENDED_MONITOR and GET_OWNED_MONITOR

Check that the _java_thread parameter is valid when it is possible that the JavaThread has exited after the initial checks were made in generated/jvmtifiles/jvmtiEnter.cpp: jvmti_GetCurrentContendedMonitor()

Reviewed-by: dcubed, dsamersoff
This commit is contained in:
Sergey Gabdurakhmanov 2013-09-18 16:48:49 +04:00
parent 876967ae1f
commit c5c705217b

View File

@ -406,8 +406,12 @@ public:
VMOp_Type type() const { return VMOp_GetCurrentContendedMonitor; } VMOp_Type type() const { return VMOp_GetCurrentContendedMonitor; }
jvmtiError result() { return _result; } jvmtiError result() { return _result; }
void doit() { void doit() {
_result = JVMTI_ERROR_THREAD_NOT_ALIVE;
if (Threads::includes(_java_thread) && !_java_thread->is_exiting() &&
_java_thread->threadObj() != NULL) {
_result = ((JvmtiEnvBase *)_env)->get_current_contended_monitor(_calling_thread,_java_thread,_owned_monitor_ptr); _result = ((JvmtiEnvBase *)_env)->get_current_contended_monitor(_calling_thread,_java_thread,_owned_monitor_ptr);
} }
}
}; };
// VM operation to get stack trace at safepoint. // VM operation to get stack trace at safepoint.