You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Christopher Schultz <ch...@christopherschultz.net> on 2018/02/09 19:24:15 UTC

StackOverflow when setting request attribute

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

All,

I've been starting to see these lately in my dev environment, which is
currently running 8.5.28:

Caused by: java.lang.StackOverflowError
        at
org.apache.catalina.core.ApplicationHttpRequest.setAttribute(Application
HttpRequest.java:304)
        at
org.apache.catalina.core.ApplicationHttpRequest.setAttribute(Application
HttpRequest.java:304)
        at
org.apache.catalina.core.ApplicationHttpRequest.setAttribute(Application
HttpRequest.java:304)
        at
[etc.]

It looks like the only way that should happen is when a request is set
as the parent of itself.

I'm fairly confident we don't play any games with request objects. We
certain never call ApplicationHttpRequest.setRequest() and I doubt any
library code is doing that, either.

I haven't yet been able to reproduce it, but I can see instances in my
log files.

It looks to be related to another error:
java.lang.IllegalStateException: Cannot create a session after the
response has been committed

Also, the stack trace from above (farther up the stack) looks like
it's recursively calling the service-dispatcher:

        [...]
        at
org.apache.catalina.core.ApplicationHttpRequest.setAttribute(Application
HttpRequest.java:304)
        at
javax.servlet.ServletRequestWrapper.setAttribute(ServletRequestWrapper.j
ava:252)
        at
org.apache.struts.util.ModuleUtils.selectModule(ModuleUtils.java:244)
        at
org.apache.struts.util.ModuleUtils.selectModule(ModuleUtils.java:227)
        at
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1903)
        at
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:661)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
tionFilterChain.java:231)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt
erChain.java:166)
        at
org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatc
her.java:728)
        at
org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDisp
atcher.java:591)
        at
org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispat
cher.java:527)
        at
org.apache.struts.action.ExceptionHandler.handleCommittedResponse(Except
ionHandler.java:207)
        at
org.apache.struts.action.ExceptionHandler.execute(ExceptionHandler.java:
165)
        at
org.apache.struts.chain.commands.servlet.ExceptionHandler.handle(Excepti
onHandler.java:65)
        at
org.apache.struts.chain.commands.AbstractExceptionHandler.execute(Abstra
ctExceptionHandler.java:99)
        at
org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommand
Base.java:51)
        at
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
        at
org.apache.struts.chain.commands.ExceptionCatcher.postprocess(ExceptionC
atcher.java:163)
        at
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:210)
        at
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableReq
uestProcessor.java:283)
        at
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
        at
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:661)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
 [etc.]

Any ideas as to what could be happening, here?

I might be able to actually "catch(StackOverflowError)" in a Filter or
something and grab some additional information about the request, but
so far I'm sorry to say that I can't reproduce it on demand.

Thanks,
- -chris
-----BEGIN PGP SIGNATURE-----
Comment: GPGTools - http://gpgtools.org
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iQJRBAEBCAA7FiEEMmKgYcQvxMe7tcJcHPApP6U8pFgFAlp99V8dHGNocmlzQGNo
cmlzdG9waGVyc2NodWx0ei5uZXQACgkQHPApP6U8pFjOlg/+JwfrOZiO3ocxfJWg
i/SXKznXdYrVRXpaisVGStRIv4DIU5ShJ0UJEQIrNDEE3HqkhW8gNr+Cm+rM3siS
FMsDXYVWixmwG/IBH40o38SERP8Y6rsuBEUo795T8DfxRNC0mmxmULyilYOCHtmP
pEBBUeBBsZJuzTe62aPGyJ2pE3e6AsLLeO8wr5k5BuL/xaQ+xyz2+v2rSqtnxKVH
iCEfaKd/af/3j+dDwkBSS7swNgvoBExXYDvhRpHFSXQW3mrJxFmYQeusC2MYQAer
7rBikugD1IE5BqbfgFo51o+ykxpPw9E/ysgUy6qqwkQoRwOYHTzihguaThd/amhJ
rxhjG78oUVmDyuxADtAFVj7Deh1SsROVUz1TJHY4j3kgtaeccNVeeAoQGbbdzCIB
YR5rTXqSvBs3d9FwK67N5FWfSxj8WB7kyjCwenaQSEVktBvU5fu6VXlV5oFa02N7
KTZ/n6RJxGV5irx7YVCvAXU+0ypuD1WCqmbIo6AkZ0IrgNRrN4weFrQ7whKAWzjT
oY1yXSeA3DKoQE5I1jAvjCwAlb8Y1j6M0NFW8cqIVN/iSGwXbAvVd8sxx38aIn52
E7vIKHfBKqFiv2N69+El1hSqFje9Z05cdFqGr4Hq+O3szkqgdnGVWRKO20ZGpHAq
G2yKRrGuHi0/mgSBDQt9x8hL710=
=5DqY
-----END PGP SIGNATURE-----

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org