Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8323792

ThreadSnapshot::initialize can cause assert in Thread::check_for_dangling_thread_pointer (possibility of dangling Thread pointer)

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: P4 P4
    • tbd
    • 16
    • hotspot
    • None
    • svc

      In src/hotspot/share/services/threadService.cpp,
      ThreadSnapshot::initialize(ThreadsList * t_list, JavaThread* thread)
      calls ThreadService::get_current_contended_monitor(thread) before checking the thread status.

      This can assert with:

      # Internal Error (/opt/mach5/mesos/work_dir/slaves/cd627e65-f015-4fb1-a1d2-b6c9b8127f98-S128392/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/41b9616d-be93-4073-9914-cea1bdf51c63/runs/dda0431a-6601-4acf-a7ff-239577d6bb87/workspace/open/src/hotspot/share/runtime/thread.cpp:286), pid=19781, tid=19923
      # assert(!thread->is_Java_thread() || JavaThread::cast(thread)->is_handshake_safe_for(Thread::current()) || !JavaThread::cast(thread)->on_thread_list() || SafepointSynchronize::is_at_safepoint() || ThreadsSMRSupport::is_a_protected_JavaThread_with_lock(JavaThread::cast(thread))) failed: possibility of dangling Thread pointer




      Stack: [0x00007f207c9eb000,0x00007f207caeb000], sp=0x00007f207cae9630, free space=1017k
      Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
      V [libjvm.so+0x17acab6] Thread::check_for_dangling_thread_pointer(Thread*)+0x106 (thread.cpp:290)
      V [libjvm.so+0x17b9e5e] ThreadService::get_current_contended_monitor(JavaThread*)+0x2e (threadService.cpp:232)

      V [libjvm.so+0x17bbd00] ThreadSnapshot::initialize(ThreadsList*, JavaThread*)+0x160 (threadService.cpp:919)

      V [libjvm.so+0x17bc68e] ThreadDumpResult::add_thread_snapshot(JavaThread*)+0x7e (threadService.cpp:574)
      V [libjvm.so+0x134f9bb] jmm_GetThreadInfo+0x5bb (management.cpp:1133)
      j sun.management.ThreadImpl.getThreadInfo1([JI[Ljava/lang/management/ThreadInfo;)V+0 java.management@23-internal
      j sun.management.ThreadImpl.getThreadInfo([JI)[Ljava/lang/management/ThreadInfo;+60 java.management@23-internal
      j ThreadInfoTest4$MyGetThreadInfoThread.run()V+8
      v ~StubRoutines::call_stub 0x00007f210405cd21

            kevinw Kevin Walls
            kevinw Kevin Walls
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated: