Tomcat中Parameters: Invalid chunk ignored

Jun  25 2007   10 : 34 : 54  PM org.apache.tomcat.util.http.Parameters processParameters
WARNING: Parameters: Invalid chunk ignored.
相信很多人,在使用Tomcat中碰到过上面这个问题。我也为此苦恼过。现将解决办法,告诉大家及解决问题的一点感悟。
数次碰到这个问题没有解决后,促使我想到去看原代码,根据异常信息,我找到抛出异常的代码段。现将原代码引入到文章中。
 
if( nameEnd<=nameStart ) {
                  StringBuilder msg = new StringBuilder("Parameters: Invalid chunk ");
                  // No name eg &=xx& will trigger this
                  if (valEnd >= nameStart) {
                      msg.append('\'');
                     try {
                         msg.append(new String(bytes, nameStart,
                                 valEnd - nameStart, DEFAULT_ENCODING));
                      } catch (UnsupportedEncodingException e) {
                         // Should never happen
                         log.error("Unable to convert bytes", e);
                     }
                     msg.append("' ");
                 }
               msg.append("ignored.");
                log.warn(msg);
                 continue;               // invalid chunk - it's better to ignore
            }

不知你注意到没,我在上面代码第3行的注释上,加上了下划线,相信你看到这句话时,知道应该做了。
对了,你猜对了。没有参数名称(例如,&=xx&aa=11),每个&后面没有参数名称,这样的情况发生后,将
触发这个异常。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: malloc_consolidate(): invalid chunk size 的意思是 malloc_consolidate() 函数遇到了无效的块大小。这通常是由于程序试图释放一个无效的内存块或者是内存泄漏导致的。建议检查程序的内存分配和释放操作,确保它们正确无误。 ### 回答2: malloc_consolidate()是一个在C语言用于动态内存分配的函数。它负责维护堆的数据结构,以便更好地利用动态内存。但是,当出现"invalid chunk size"的错误时,说明该函数无法正确处理堆某个块的大小。 造成这个问题的原因可能是多种多样的。其一种可能是在动态内存分配的过程,出现了越界访问或缓冲区溢出等问题,导致了对某个块的尺寸记录的混乱或被篡改了。另外,也可能是别的原因导致malloc_consolidate()无法正确将某个已经释放的块合并到后续的块。这些都可能导致该函数所存在的问题。 解决这个问题的方法,需要我们针对具体的情况进行调查和分析。典型的做法是通过调试程序的方式,利用一些工具来检查内存分配的情况,找到出现问题的地方以及对应的内存分配操作,进而对其进行修正和改善。例如,可以使用Valgrind的memcheck工具来检查进程的内存错误和泄漏问题,或使用gdb进行调试,定位出问题的具体原因。 总而言之,解决malloc_consolidate()出现"invalid chunk size"错误,需要我们深入理解内存分配的原理和过程,确定问题所在,然后针对性地进行修正和优化。这有可能涉及到程序整体结构的调整和代码的重构,需要我们有足够的耐心和技术能力来完成。 ### 回答3: malloc_consolidate()是一个C语言的函数,用于堆内存的管理,具体作用是整理释放内存块后的未连续的内存空间,将它们合并成更大的内存块,提高内存的利用率。 但是,在使用malloc_consolidate()函数时,有可能会出现“invalid chunk size”的错误提示。这个错误通常是由于程序员使用了不正确的内存地址或尺寸,导致函数无法正确运行。 具体来说,这个错误可能有以下几种原因: 1)堆内存的指针地址不合法或者已经被释放 2)在调用malloc()等内存分配函数时,传递了不合法的尺寸参数(比如负数) 3)堆内存存在内存越界或数据损坏等问题。 如果程序员遇到了“invalid chunk size”的错误提示,可以尝试使用调试工具进行调试,查看具体的错误代码位置和堆内存的状态,以找到问题所在。另外,建议在程序开发时,对内存分配和释放等操作进行更加严格的验证和处理,以避免出现不必要的错误。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值