You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Michael Keppler (Jira)" <ji...@apache.org> on 2023/07/19 12:03:00 UTC

[jira] [Created] (MNG-7846) endless loop in DefaultExceptionHandler.getMessage()

Michael Keppler created MNG-7846:
------------------------------------

             Summary: endless loop in DefaultExceptionHandler.getMessage()
                 Key: MNG-7846
                 URL: https://issues.apache.org/jira/browse/MNG-7846
             Project: Maven
          Issue Type: Bug
          Components: Core
    Affects Versions: 3.9.3
            Reporter: Michael Keppler
         Attachments: image-2023-07-19-13-59-02-398.png

The default exception handler iterates all nested exceptions in a loop that's only left when exception.cause == null

See [https://github.com/apache/maven/blob/4a5b6c5f2b662fbf356f86ffe44d99d3d52f9fa9/maven-core/src/main/java/org/apache/maven/exception/DefaultExceptionHandler.java#L228C56-L228C64]

Unfortunately there can be exceptions where the cause is a reference to the containing exception, e.g. exception.cause == exception. That code then becomes an endless loop. I just experienced such an endless loop and was able to find a JRubyException pointing to itself in the heap dump of the thread:

!image-2023-07-19-13-59-02-398.png!

The loop cancelation condition should therefore be changed to 
{code:java}
t != null && t != t.getCause(){code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)