logbook
logbook copied to clipboard
Stack overflow when trying to log a large XML response
I am using 2.14.0, and when trying to log a particular XML response I get a stack overflow error.
Description
There appears to be several fixes around this already, see Issue: 686. The REST endpoint I am logging works with many XML responses, but this particular response always results in a stack overflow.
Expected Behavior
There should be no stack overflows.
Actual Behavior
There is a stack overflow and it kills the remainder of the HTTP response processing
Possible Fix
Steps to Reproduce
- Use the attached file as an HTTP response
- observe the stack overflow
2022-05-20T13:32:46.860Z ERROR [http-nio-0.0.0.0-9010-exec-7] o.a.c.c.C.[.[.[.[dispatcherServlet] - Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Filter execution threw an exception] with root cause java.lang.StackOverflowError: null at java.base/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863) at java.base/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713) at java.base/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964) at java.base/java.util.regex.Pattern$Branch.match(Pattern.java:4749) at java.base/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804) at java.base/java.util.regex.Pattern$Ques.match(Pattern.java:4262) at java.base/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964) at java.base/java.util.regex.Pattern$Branch.match(Pattern.java:4749) at java.base/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804) at java.base/java.util.regex.Pattern$Ques.match(Pattern.java:4262) at java.base/java.util.regex.Pattern$Curly.match0(Pattern.java:4395) at java.base/java.util.regex.Pattern$Curly.match0(Pattern.java:4408) at java.base/java.util.regex.Pattern$Curly.match0(Pattern.java:4408) at java.base/java.util.regex.Pattern$Curly.match0(Pattern.java:4408) at java.base/java.util.regex.Pattern$Curly.match0(Pattern.java:4408) at java.base/java.util.regex.Pattern$Curly.match0(Pattern.java:4408) at java.base/java.util.regex.Pattern$Curly.match0(Pattern.java:4408) at java.base/java.util.regex.Pattern$Curly.match0(Pattern.java:4408) at java.base/java.util.regex.Pattern$Curly.match0(Pattern.java:4408) at java.base/java.util.regex.Pattern$Curly.match0(Pattern.java:4408) at java.base/java.util.regex.Pattern$Curly.match0(Pattern.java:4408) at java.base/java.util.regex.Pattern$Curly.match0(Pattern.java:4408) at java.base/java.util.regex.Pattern$Curly.match0(Pattern.java:4408) at java.base/java.util.regex.Pattern$Curly.match0(Pattern.java:4408) at java.base/java.util.regex.Pattern$Curly.match0(Pattern.java:4408) <1000 more lines>
Context
Your Environment
- Version used:
- Link to your project:
I'm also having the same issue but with a large JSON response. Basically I got a service that was returning a stacktrace in the response making a huge JSON value and this is causing the Stackoverflow error
I could reproduce it with version 2.14.0 with this fake json payload
This is the way I configure my filter
JsonBodyFilters.replaceJsonStringProperty(
Set.of("password"),
"xxx"
)
I had a similar issue with large XML responses. Seems to be resolved in 2.15.0. Thanks
Version 2.15.0 also fixed for my case, thanks
Closing the issue as it was fixed in 2.15.0