< prev index next >

src/hotspot/share/services/threadService.cpp

Print this page
*** 1120,11 ***
    }
  }
  
  
  // jdk.internal.vm.ThreadSnapshot support
- #if INCLUDE_JVMTI
  
  class GetThreadSnapshotHandshakeClosure: public HandshakeClosure {
  private:
    static OopStorage* oop_storage() {
      assert(_thread_service_storage != nullptr, "sanity");
--- 1120,10 ---

*** 1474,10 ***
--- 1473,15 ---
      Handshake::execute(&cl, thread_oop);
    } else {
      Handshake::execute(&cl, &tlh, java_thread);
    }
  
+   // thread not alive
+   if (cl._thread_status == JavaThreadStatus::NEW || cl._thread_status == JavaThreadStatus::TERMINATED) {
+      return nullptr;
+   }
+ 
    // StackTrace
    InstanceKlass* ste_klass = vmClasses::StackTraceElement_klass();
    assert(ste_klass != nullptr, "must be loaded");
  
    objArrayHandle trace = oopFactory::new_objArray_handle(ste_klass, cl._frame_count, CHECK_NULL);

*** 1532,7 ***
      jdk_internal_vm_ThreadSnapshot::set_blocker(snapshot(),
          cl._blocker._type, cl._blocker._obj.resolve(), cl._blocker._owner.resolve());
    }
    return snapshot();
  }
- 
- #endif // INCLUDE_JVMTI
--- 1536,5 ---
< prev index next >