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

SA on windows thread inspection is broken

XMLWordPrintable

    • svc
    • master

        After the change JDK-7161732 (which came in 8-b42) the SA on windows cannot inspect the VM threads.
        It appears that moving the _thread_id variable broke an undocumented assumption in WindbgX86Thread.java in the SA:
            // another hack here is that we use sys thread id instead of handle.
            // windbg can't get details based on handles it seems.
            // I assume that osThread_win32 thread struct has _thread_id (which
            // sys thread id) just after handle field.
            this.sysId = (int) addr.addOffsetTo(debugger.getAddressSize()).getCIntegerAt(0, 4, true);

        Now that the system thread id is no longer located right after the thread HANDLE this obviously won't work.
        This breaks for example "jstack -F <pid>" which is the common way to inspect a hung VM on Windows.

        ILW=HLH => P2
        I=H SA on windows is basically useless for real usage
        L=L not super-common to use, but "jstack -F" is an exported interface
        W=H no known work-around

              Unassigned Unassigned
              mgerdin Mikael Gerdin (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              8 Start watching this issue

                Created:
                Updated:
                Resolved: