< prev index next >
src/hotspot/share/prims/jvmtiEnvBase.cpp
Print this page
@@ -1505,16 +1505,28 @@
}
}
void
GetOwnedMonitorInfoClosure::do_thread(Thread *target) {
- _result = ((JvmtiEnvBase *)_env)->get_owned_monitors(_calling_thread, (JavaThread *)target, _owned_monitors_list);
+ assert(target->is_Java_thread(), "just checking");
+ JavaThread *jt = (JavaThread *)target;
+ if (!jt->is_exiting() && (jt->threadObj() != NULL)) {
+ _result = ((JvmtiEnvBase *)_env)->get_owned_monitors(_calling_thread,
+ jt,
+ _owned_monitors_list);
+ }
}
void
GetCurrentContendedMonitorClosure::do_thread(Thread *target) {
- _result = ((JvmtiEnvBase *)_env)->get_current_contended_monitor(_calling_thread, (JavaThread *)target, _owned_monitor_ptr);
+ assert(target->is_Java_thread(), "just checking");
+ JavaThread *jt = (JavaThread *)target;
+ if (!jt->is_exiting() && (jt->threadObj() != NULL)) {
+ _result = ((JvmtiEnvBase *)_env)->get_current_contended_monitor(_calling_thread,
+ jt,
+ _owned_monitor_ptr);
+ }
}
void
VM_GetStackTrace::doit() {
_result = JVMTI_ERROR_THREAD_NOT_ALIVE;
< prev index next >