Not the OP, bu tI just hit the Stack Overflow with ThrowableProxy.init(). The root cause was a mistake in Exception chaining (Original Exception being used as the cause for a suppressed exception). This can be reproduced by Exception e = new Exception("foo"); Exception e2 = new Exception(e); e.initCause(e2) or Exception e = new Exception("foo"); Exception e2 = new Exception(e); e.addSuppressed(e2); e.printStackTrace() detects the circular reference: java.lang.Exception: foo {{ at TestCircularException.main(TestCircularException.java:10)}} Caused by: java.lang.Exception: java.lang.Exception: foo {{ at TestCircularException.main(TestCircularException.java:11)}} {{ [CIRCULAR REFERENCE:java.lang.Exception: foo]}} But logger.error("Error", e) results in a StackOverflowError thrown at the logging site, swallowing the original exception: java.lang.StackOverflowError {{ at ch.qos.logback.classic.spi.ThrowableProxy.<init>(ThrowableProxy.java:54)}} {{ at ch.qos.logback.classic.spi.ThrowableProxy.<init>(ThrowableProxy.java:60)}} {{ at ch.qos.logback.classic.spi.ThrowableProxy.<init>(ThrowableProxy.java:60)}} [...] |