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

Circular reference in printed stack trace is not correctly indented & ambiguous

    XMLWordPrintable

Details

    • b04
    • generic
    • generic

    Backports

      Description

        A DESCRIPTION OF THE PROBLEM :
        When printing the stack trace of an exception which has circular references, the text "[CIRCULAR REFERENCE:...]" is always indented with a single tab, ignoring the current indentation level. This can be confusing for suppressed exceptions as demonstrated in the provided code.

        Note also that there is a space missing after the colon:
        "[CIRCULAR REFERENCE:java.lang.Exception: first]"

        And ideally this message should include the caption (e.g. "Suppressed: [CIRCULAR ...") as well. Currently it is ambiguous whether this line represents a suppressed exception of the enclosing exception, or the cause of a preceding suppressed exception.


        ---------- BEGIN SOURCE ----------
        public class DejaVuStackTrace {
            public static void main(String[] args) {
                Exception first = new Exception("first");
                Exception second = new Exception("second");
                first.addSuppressed(second);
                Exception third = new Exception("third");
                second.addSuppressed(third);
                Exception fourth = new Exception("fourth");
                third.addSuppressed(fourth);
                
                // Create circular reference
                fourth.addSuppressed(first);
                
                fourth.addSuppressed(new Exception("fifth"));
                
                first.printStackTrace();
            }
        }
        ---------- END SOURCE ----------

        CUSTOMER SUBMITTED WORKAROUND :
        Suggested fix:
        https://github.com/openjdk/jdk/blob/c5cc07bec63fd7cad3e052cef53a5b19a4978e40/src/java.base/share/classes/java/lang/Throwable.java#L696
        Change the line to this:
        s.println(prefix + caption + "[CIRCULAR REFERENCE: " + this + "]");

        FREQUENCY : always


        Attachments

          Issue Links

            Activity

              People

                darcy Joe Darcy
                webbuggrp Webbug Group
                Votes:
                0 Vote for this issue
                Watchers:
                4 Start watching this issue

                Dates

                  Created:
                  Updated:
                  Resolved: