logbook icon indicating copy to clipboard operation
logbook copied to clipboard

Stack overflow when trying to log a large XML response

Open jayguidos opened this issue 2 years ago • 1 comments

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

bad-stuff-xml.txt

  1. Use the attached file as an HTTP response
  2. 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:

jayguidos avatar May 20 '22 14:05 jayguidos

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

huge-json-value.txt

This is the way I configure my filter

JsonBodyFilters.replaceJsonStringProperty(
        Set.of("password"),
        "xxx"
)

rodriguesgm avatar Jul 26 '22 11:07 rodriguesgm

I had a similar issue with large XML responses. Seems to be resolved in 2.15.0. Thanks

teggr avatar Mar 02 '23 15:03 teggr

Version 2.15.0 also fixed for my case, thanks

rodriguesgm avatar Mar 06 '23 11:03 rodriguesgm

Closing the issue as it was fixed in 2.15.0

kasmarian avatar Mar 15 '23 22:03 kasmarian