Uploaded image for project: 'Java Mission Control'
  1. Java Mission Control
  2. JMC-5936

Stacktrace view sometimes does not group frames correctly

    Details

    • Sprint:
      JMC 7 Iter 5, JMC 7 Iter 6

      Description

      The stacktrace view will sometimes show duplicate frames or frame groups, like

      A 17
      --B 17
      ----C 17
      A 5
      --B 5
      ----C 5

      When it should have been
      A 22
      --B 22
      ----C 22

      This only happens with JDK 9 recordings with multiple chunks.
      It's more visible in tree mode, but exists in both modes.

      From https://community.oracle.com/message/14759727
      Even though the issue from JMC-5530 is "solved" by reloading the page several times, the stacktrace view still shows duplicate frames.

      I have been able to reproduce this with JMC 7.0 as well. Disappears after changing "Distinguish Line By" to Line and then back to Method. This did not help for community user, might have helped by repeating it several times (because that's what they had to do to get rid of JMC-5530)

      Repro 1:

      1. Open t:\klara\jfr\eclipse4.7_jdk9_buildall_jmc_objectcount_enabled.jfr
      2. Go to Memory page
      3. Select "char[]" in the table
      4. Change stacktrace view to be displayed as tree
      5. Notice that the top line is "void java.io.BufferedReader.<init>(Reader, int) 898"
      6. Change from "char[]" to another class and back (actually it's often enough just to click on "char[]" again)
      7. BUG => Notice that the top line is now char[] org.eclipse.jdt.internal.compiler.classfmt.ClassFileStruct.utf8At(int, int) 1241" (which is likely more correct that BufferedReader

      Repro 2 (which seems to be a different issue):

      1. Open t:\klara\jfr\eclipse4.7_jdk9_buildall_jmc_objectcount_enabled.jfr
      2. Go to Memory page
      3. Select "char[]" in the table
      4. Change stacktrace view to be displayed as tree
      5. Expand "void java.io.BufferedReader.<init>(Reader, int)"
      6. Expand "void org.eclipse.core.internal.filebuffers.ResourceTextFileBuffer.setDocumentContent(IDocument, IFile, String)"
      7. Intermediate frame is "void org.eclipse.core.internal.filebuffers.ResourceTextFileBuffer.initializeFileBufferContent(IProgressMonitor)"
      8. Note that "void org.eclipse.core.internal.filebuffers.ResourceFileBuffer.create(IPath, IProgressMonitor)" exists on two rows, one with count 17, one with count 13
      9. Change "Distinguish Frames By" to Line, notice that the 17 + 13 lines are now grouped together
      10. Change "Distinguish Frames By" back to Method, the 17 +13 lines are now grouped together and the bug cannot be reproduced until the recording is reopened.

      Sometimes the duplicate frame is at another level in the stacktrace.

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                klward Klara Ward
                Reporter:
                klward Klara Ward
              • Votes:
                0 Vote for this issue
                Watchers:
                2 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: