Retrace fails for log4j2 stack traces
Java class file shrinker, optimizer, obfuscator, and preverifier
Brought to you by:
guardsquare
Retracing a stacktrace from Log4j2 fails. It takes a long time to compute and results in the very same stack trace.
But, when removing the trailing values between square brackets, then it works. You basically need to remove everything after the last closing parenthesis.
To my knowledge there is no way to tell Log4j2 not to add this information.
THIS DOES NOT WORK
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.)
at org.apache.naming.NamingContext.lookup(NamingContext.java:859) ~[catalina.jar:7.0.67]
at org.apache.naming.NamingContext.lookup(NamingContext.java:153) ~[catalina.jar:7.0.67]
at org.apache.naming.NamingContext.lookup(NamingContext.java:830) ~[catalina.jar:7.0.67]
at org.apache.naming.NamingContext.lookup(NamingContext.java:167) ~[catalina.jar:7.0.67]
at com.foo.jobs.Dhmoy.a(Runtime.scala:364) [classes/:?]
at com.foo.jobs.Dhmoy.p(Runtime.scala:340) [classes/:?]
at com.foo.web.BarBootSequence.b(BarBootSequence.scala:58) [classes/:?]
at com.foo.web.BarBootSequence$Eoqst.a(BarBootSequence.scala:35) [classes/:?]
at com.foo.web.BarBootSequence$Eoqst.apply(BarBootSequence.scala:35) [classes/:?]
at com.foo.web.BarBootSequence$Afmoy.a(BarBootSequence.scala:47) [classes/:?]
at com.foo.web.BarBootSequence$Afmoy.apply(BarBootSequence.scala:47) [classes/:?]
at scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33) [scala-library-2.11.7.jar:?]
at scala.collection.mutable.ArrayOps$ofRef.foreach(ArrayOps.scala:186) [scala-library-2.11.7.jar:?]
at com.foo.web.BarBootSequence.a(BarBootSequence.scala:47) [classes/:?]
at com.foo.web.BarBootSequence.initialize(BarBootSequence.scala:27) [classes/:?]
at org.springframework.web.context.ContextLoader.customizeContext(ContextLoader.java:485) [spring-web-4.2.1.RELEASE.jar:4.2.1.RELEASE]
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:445) [spring-web-4.2.1.RELEASE.jar:4.2.1.RELEASE]
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:328) [spring-web-4.2.1.RELEASE.jar:4.2.1.RELEASE]
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107) [spring-web-4.2.1.RELEASE.jar:4.2.1.RELEASE]
at com.foo.web.BarContextListener.contextInitialized(BarContextListener.scala:55) [classes/:?]
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5077) [catalina.jar:7.0.67]
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5591) [catalina.jar:7.0.67]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) [catalina.jar:7.0.67]
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901) [catalina.jar:7.0.67]
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877) [catalina.jar:7.0.67]
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652) [catalina.jar:7.0.67]
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:677) [catalina.jar:7.0.67]
at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1939) [catalina.jar:7.0.67]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439) [?:1.6.0_45]
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) [?:1.6.0_45]
at java.util.concurrent.FutureTask.run(FutureTask.java:138) [?:1.6.0_45]
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) [?:1.6.0_45]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) [?:1.6.0_45]
at java.lang.Thread.run(Thread.java:662) [?:1.6.0_45]
THIS DOES WORK
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.)
at org.apache.naming.NamingContext.lookup(NamingContext.java:859)
at org.apache.naming.NamingContext.lookup(NamingContext.java:153)
at org.apache.naming.NamingContext.lookup(NamingContext.java:830)
at org.apache.naming.NamingContext.lookup(NamingContext.java:167)
at com.foo.jobs.Dhmoy.a(Runtime.scala:364)
at com.foo.jobs.Dhmoy.p(Runtime.scala:340)
at com.foo.web.BarBootSequence.b(BarBootSequence.scala:58)
at com.foo.web.BarBootSequence$Eoqst.a(BarBootSequence.scala:35)
at com.foo.web.BarBootSequence$Eoqst.apply(BarBootSequence.scala:35) [classes/:?]
at com.foo.web.BarBootSequence$Afmoy.a(BarBootSequence.scala:47)
at com.foo.web.BarBootSequence$Afmoy.apply(BarBootSequence.scala:47)
at scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33)
at scala.collection.mutable.ArrayOps$ofRef.foreach(ArrayOps.scala:186)
at com.foo.web.BarBootSequence.a(BarBootSequence.scala:47)
at com.foo.web.BarBootSequence.initialize(BarBootSequence.scala:27)
at org.springframework.web.context.ContextLoader.customizeContext(ContextLoader.java:485)
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:445)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:328)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107)
at com.foo.web.BarContextListener.contextInitialized(BarContextListener.scala:55)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5077)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5591)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:677)
at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1939)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at java.lang.Thread.run(Thread.java:662)
The pattern in the upcoming ProGuard 5.3 should account for it: