一个栈溢出错误:

ava.lang.StackOverflowErrorat org.apache.catalina.core.ApplicationHttpRequest$AttributeNamesEnumerator.findNext(ApplicationHttpRequest.java:996)at org.apache.catalina.core.ApplicationHttpRequest$AttributeNamesEnumerator.findNext(ApplicationHttpRequest.java:996)at org.apache.catalina.core.ApplicationHttpRequest$AttributeNamesEnumerator.hasMoreElements(ApplicationHttpRequest.java:971)at >>>>>>>>>>>>>>>>>>> 中间省略几百行同样的内容 <<<<<<<<<<<<<<<<<<<<<<<
org.apache.catalina.core.ApplicationHttpRequest$AttributeNamesEnumerator.findNext(ApplicationHttpRequest.java:996)at org.apache.catalina.core.ApplicationHttpRequest$AttributeNamesEnumerator.hasMoreElements(ApplicationHttpRequest.java:971)at org.apache.catalina.core.ApplicationHttpRequest$AttributeNamesEnumerator.findNext(ApplicationHttpRequest.java:996)at org.apache.catalina.core.ApplicationHttpRequest$AttributeNamesEnumerator.hasMoreElements(ApplicationHttpRequest.java:971)at org.apache.catalina.core.ApplicationHttpRequest$AttributeNamesEnumerator.findNext(ApplicationHttpRequest.java:996)at org.apache.catalina.core.ApplicationHttpRequest$AttributeNamesEnumerator.hasMoreElements(ApplicationHttpRequest.java:971)at org.apache.catalina.core.ApplicationHttpRequest$AttributeNamesEnumerator.findNext(ApplicationHttpRequest.java:996)at org.apache.catalina.core.ApplicationHttpRequest$AttributeNamesEnumerator.hasMoreElements(ApplicationHttpRequest.java:971)at org.apache.catalina.core.ApplicationHttpRequest$AttributeNamesEnumerator.findNext(ApplicationHttpRequest.java:996)at org.apache.catalina.core.ApplicationHttpRequest$AttributeNamesEnumerator.hasMoreElements(ApplicationHttpRequest.java:971)at org.apache.catalina.core.ApplicationHttpRequest$AttributeNamesEnumerator.findNext(ApplicationHttpRequest.java:996)at org.apache.catalina.core.ApplicationHttpRequest$AttributeNamesEnumerator.hasMoreElements(ApplicationHttpRequest.java:971)at org.apache.catalina.core.ApplicationHttpRequest$AttributeNamesEnumerator.findNext(ApplicationHttpRequest.java:996)at org.apache.catalina.core.ApplicationHttpRequest$AttributeNamesEnumerator.hasMoreElements(ApplicationHttpRequest.java:971)at org.apache.catalina.core.ApplicationHttpRequest$AttributeNamesEnumerator.findNext(ApplicationHttpRequest.java:996)at org.apache.catalina.core.ApplicationHttpRequest$AttributeNamesEnumerator.hasMoreElements(ApplicationHttpRequest.java:971)at org.apache.catalina.core.ApplicationHttpRequest$AttributeNamesEnumerator.findNext(ApplicationHttpRequest.java:996)at org.apache.catalina.core.ApplicationHttpRequest$AttributeNamesEnumerator.hasMoreElements(ApplicationHttpRequest.java:971)at org.apache.catalina.core.ApplicationHttpRequest$AttributeNamesEnumerator.findNext(ApplicationHttpRequest.java:996)at org.apache.catalina.core.ApplicationHttpRequest$AttributeNamesEnumerator.hasMoreElements(ApplicationHttpRequest.java:971)at org.apache.catalina.core.ApplicationHttpRequest$AttributeNamesEnumerator.findNext(ApplicationHttpRequest.java:996)at org.apache.catalina.core.ApplicationHttpRequest$AttributeNamesEnumerator.hasMoreElements(ApplicationHttpRequest.java:971)at org.apache.catalina.core.ApplicationHttpRequest$AttributeNamesEnumerator.findNext(ApplicationHttpRequest.java:996)at org.apache.catalina.core.ApplicationHttpRequest$AttributeNamesEnumerator.hasMoreElements(ApplicationHttpRequest.java:971)at org.apache.catalina.core.ApplicationHttpRequest$AttributeNamesEnumerator.findNext(ApplicationHttpRequest.java:996)at org.apache.catalina.core.ApplicationHttpRequest$AttributeNamesEnumerator.hasMoreElements(ApplicationHttpRequest.java:971)at org.apache.catalina.core.ApplicationHttpRequest$AttributeNamesEnumerator.findNext(ApplicationHttpRequest.java:996)at org.apache.catalina.core.ApplicationHttpRequest$AttributeNamesEnumerator.hasMoreElements(ApplicationHttpRequest.java:971)at org.apache.catalina.core.ApplicationHttpRequest$AttributeNamesEnumerator.findNext(ApplicationHttpRequest.java:996)at org.apache.catalina.core.ApplicationHttpRequest$AttributeNamesEnumerator.hasMoreElements(ApplicationHttpRequest.java:971)at org.apache.catalina.core.ApplicationHttpRequest$AttributeNamesEnumerator.findNext(ApplicationHttpRequest.java:996)at org.apache.catalina.core.ApplicationHttpRequest$AttributeNamesEnumerator.hasMoreElements(ApplicationHttpRequest.java:971)at org.apache.catalina.core.ApplicationHttpRequest$AttributeNamesEnumerator.findNext(ApplicationHttpRequest.java:996)at org.apache.catalina.core.ApplicationHttpRequest$AttributeNamesEnumerator.hasMoreElements(ApplicationHttpRequest.java:971)at org.apache.catalina.core.ApplicationHttpRequest$AttributeNamesEnumerator.findNext(ApplicationHttpRequest.java:996)at org.apache.catalina.core.ApplicationHttpRequest$AttributeNamesEnumerator.hasMoreElements(ApplicationHttpRequest.java:971)at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:873)at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:967)at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:869)at javax.servlet.http.HttpServlet.service(HttpServlet.java:661)at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:843)at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.apache.logging.log4j.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:64)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:728)

tomcat版本是8.5.38版本,spring是4.2.6.RELEASE,出错的代码也找到了:
DispatcherServlet:

protected void doService(HttpServletRequest request, HttpServletResponse response) throws Exception {if (logger.isDebugEnabled()) {String resumed = WebAsyncUtils.getAsyncManager(request).hasConcurrentResult() ? " resumed" : "";logger.debug("DispatcherServlet with name '" + getServletName() + "'" + resumed +" processing " + request.getMethod() + " request for [" + getRequestUri(request) + "]");}// Keep a snapshot of the request attributes in case of an include,// to be able to restore the original attributes after the include.Map<String, Object> attributesSnapshot = null;if (WebUtils.isIncludeRequest(request)) {attributesSnapshot = new HashMap<String, Object>();Enumeration<?> attrNames = request.getAttributeNames();while (attrNames.hasMoreElements()) { //这个地方死循环了String attrName = (String) attrNames.nextElement();if (this.cleanupAfterInclude || attrName.startsWith("org.springframework.web.servlet")) {attributesSnapshot.put(attrName, request.getAttribute(attrName));}}}.....
}    

ApplicationHttpRequest中的内部类AttributeNamesEnumerator:

  @Overridepublic boolean hasMoreElements() {return ((pos != last) || (next != null)|| ((next = findNext()) != null));}protected String findNext() {String result = null;while ((result == null) && (parentEnumeration.hasMoreElements())) {String current = parentEnumeration.nextElement();if (!isSpecial(current)) {result = current;}}return result;}

从错误日志上来看,先调用hasMoreElements,再调用findNext, 以此为循环,直到栈溢出。

不知道怎么回事,只找到一篇tomcat的issue,有知道的指点一些。

一个奇怪的问题:tomcat 栈溢出 StackOverflowError错误相关推荐

  1. dedecms在linux主机下的一个奇怪错误

    扬帆blog原创文章,转载请保留原地址:http://www.wesoho.com/article/asp/2874.htm dedecms上传到linux空间后遇到一个问题,所有header转向失效 ...

  2. Android开发中StackOverflowError错误实例分析

    http://blog.csdn.net/mozhizun/article/details/7051300 http://blog.csdn.net/gaomatrix/article/details ...

  3. MinGW 和 MSVC 下,使用 FILE 类型的一个奇怪的问题

    今天遇到一个奇怪的问题. 开发环境: 1. Eclipse CDT,使用 MinGW 的 gcc 编译器和函数库 2. Visual Studio 2008 问题描述: 在 eclipse cdt 中 ...

  4. Delphi XE 使用 MySQL 数据库一个奇怪的问题

    Delphi XE 使用 MySQL 数据库一个奇怪的问题 我用的是自带的 ADO 组件连接 MYSQL ,连接很简单,如下: 1.下载一个 MYSQL 驱动安装上 下载地址 2.连接串 Adoc.C ...

  5. java.lang.stackoverflowerror_java.lang.StackOverflowError——如何解决StackOverflowError错误

    StackOverflowError在程序栈空间耗尽时抛出,通常是深度递归导致.StackOverflowError继承了VirtualMachineError类,后者表示JVM已被破坏或资源耗尽.更 ...

  6. 关于使用JAVA正则表达式报java.lang.StackOverflowError错误问题

    最近在使用hadoop做apache日志分析,发现测试数据没问题,但数据一多就出问题,报 java.lang.StackOverflowError错误,最后定位为正则表达式栈溢出,发现某些行的日志数据 ...

  7. Tomcat快速入门(Tomcat安装 把一个项目发布到tomcat中 Eclipse配置Tomcat idea配置tomcat)

    文章目录 服务器的概念 服务器 Web服务器软件:接收客户端发送的请求和响应客户端请求. 常见的Web服务器软件 Tomcat安装 win下启动乱码问题解决 Tomcat目录介绍 如何把一个项目发布到 ...

  8. JAVA中StackOverflowError错误

    StackOverflowError 原因 根据名字的意思可以大致知道它是跟函数栈有关的错误,就是函数栈调用太深了,可能是代码中有了循环调用方法而无法退出的情况.而像while这样的死循环,不会报错, ...

  9. tomcat闪退错误排查

    大家是不是有这样一个问题.每次tomcat闪退不知道错误在哪里?然后只能疯狂的百度,去猜测错误的可能性. 也许能够百度解决问题,也许百度了一天问题还是没有解决. 今天我们来通过修改tomcat的配置, ...

最新文章

  1. SharePoint【Query Options系列】-- Query Options的一些用法 01. 展开用户列信息
  2. STM32 中JTAG 引脚作为普通IO口设置方法
  3. 全国计算机等级考试题库二级C操作题100套(第97套)
  4. 马云电脑水平曝光;快狗打车回应裁员50% ;华为邀请开发者加入应用商店 | 极客头条...
  5. 选股不重要,重在选时
  6. 「2012-12-29」3x3手机锁屏矩阵图像的组合数量
  7. SQL Server分页3种方案比拼[转]
  8. A Game with Traps—— 二分
  9. 谷歌火狐等浏览器Flash安装失败,安装后进入网站仍提示未安装Flash
  10. 基于java springboot记账本微信小程序源码(毕设)
  11. 科来数据包生成器使用方法
  12. 网络数据采集技术snmp/netflow/sflow/network telemetry简介
  13. springboot拦截器Interceptor
  14. 如何给单片机烧录程序?
  15. 如何快速搭建红队练习靶场
  16. 使用Canal同步数据到ES
  17. 鸟哥Linux学习之——数据流重定向
  18. 算法初步——冒泡排序
  19. nohup 执行mysql命令_Linux nohup命令:后台命令脱离终端运行
  20. 充电电流的大小是谁决定的?

热门文章

  1. maven中常用jar包插件
  2. ZOJ 3826 Hierarchical Notation 模拟
  3. centos下使用yum命令安装php mcrypt扩展
  4. 研磨设计模式之 工厂方法模式-3
  5. 配置 IIS 7 显示详细错误信息
  6. 设计可扩展的应用程序
  7. 【python】面向对象的封装、继承、多态的练习题
  8. 软件测试用例设计方法之边界值分析法
  9. java服务端异步处理机制_Java异步处理机制实例详解
  10. 5条简洁的JavaScript技巧