Uploaded image for project: 'Log4j 2'
  1. Log4j 2
  2. LOG4J2-832

ThrowableProxy fails if a class in logged stack trace throws java.lang.Error from initializer

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Blocker
    • Resolution: Fixed
    • 2.0, 2.0.2, 2.1
    • 2.1
    • Core
    • None
    • Java 1.7u67 Linux/OSX/Win7, Java 1.7u60 Linux, Java 1.7u25 Linux

    Description

      When the Logger attempts to log a message with an exception stack trace, it uses the ThrowableProxy class to introspect classes in the stack trace frames.

      If the class sun.reflect.misc.Trampoline is in the stack trace, the introspection performed by ThrowableProxy will fail causing a java.lang.Error to be thrown by the Logger call.

      The sun.reflect.misc.Trampoline class is used by the sun.reflect.misc.MethodUtil class to perform reflection-based method invocations. MethodUtil is widely used by libraries to perform method invocations. I've encountered this problem when invoking methods over JMX and inside Jetty.

      I am classifying this as a blocker because it means that any logging statement that is logging a Throwable message containing a MethodUtil-based reflection stack trace can cause a java.lang.Error to be thrown by Log4j2.

      I will attach a unit test for this failure.

      Attachments

        1. Log4j2UninitializableClassTest.java
          1 kB
          Seth Leger
        2. Log4j2MethodUtilTrampolineTest.java
          2 kB
          Seth Leger
        3. ggregory-log4j2.patch
          3 kB
          Gary D. Gregory
        4. LOG4J2-832.patch
          1 kB
          Seth Leger
        5. Log4j2MethodUtilTrampolineTest.java
          1 kB
          Seth Leger
        6. pom.xml
          1.0 kB
          Seth Leger

        Issue Links

          Activity

            People

              Unassigned Unassigned
              soleger Seth Leger
              Votes:
              1 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: