技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 算法 --> 无限递归导致 Segmentation fault

无限递归导致 Segmentation fault

浏览:2421次  出处信息

    某服务器上一个 cron job 是 shell 脚本调用 Java 程序,最近老是报 Segmentation fault, 每次看见此信息

    /bin/sh: line 1: 4285 Segmentation fault java ...

    总觉得无处下手,bash 的问题?Java 版本不对?信息量太少了。其实遇到这种事情不能谎,表面上没有信息一定要挖出信息来。今天仔细一看,这个脚本把标准输出重定向到一个日志文件去了,于是去看日志。这个程序的主体是对一个信息列表做循环,恰好在每个循环的关键部分开始前、结束后都会写一条日志。其目的是为了计时,不过正是这两条日志让我很快找到了错误缘由,因为发现日志文件的末尾只有一个开始前的,说面在这个循环的处理过程里面发生了 Segmentation fault.

    找出程序的源代码,发现循环里面调用的方法有一个是递归的,情况就开始明朗了,猜测就是递归无法终止导致 stack overflow,segmentation fault. 果然,根据日志里最后一行日志中记录的真实数据,发现这条数据是有问题的,会导致此方法无限递归。

    Wikipedia 的 Segmentation fault 词条里有一节是 "Common causes", 我这次遇到的就是最后一条。

建议继续学习:

  1. PHP与递归Recursion    (阅读:8230)
  2. 循环、迭代、遍历和递归    (阅读:4432)
  3. 递归并不一定非得是“自己调用自己的function”    (阅读:3167)
  4. 小心递归次数限制    (阅读:3070)
  5. PHP正则之递归匹配    (阅读:2705)
  6. 倒置字符串中的单词    (阅读:2463)
  7. 递归创建目录的一个函数    (阅读:2087)
  8. 递归字符转义    (阅读:1961)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1