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



    • 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


      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.


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

        Issue Links



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