无限递归导致 Segmentation fault
浏览:2510次 出处信息
某服务器上一个 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", 我这次遇到的就是最后一条。
建议继续学习:
- PHP与递归Recursion (阅读:8370)
- 循环、迭代、遍历和递归 (阅读:4570)
- 递归并不一定非得是“自己调用自己的function” (阅读:3332)
- 小心递归次数限制 (阅读:3161)
- PHP正则之递归匹配 (阅读:2796)
- 倒置字符串中的单词 (阅读:2530)
- 递归创建目录的一个函数 (阅读:2140)
- 递归字符转义 (阅读:2037)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:漫话中文自动分词和语义识别(下):句法结构和语义结构
文章信息
- 作者:qingbo.blog 来源: qingbo.blog
- 标签: Segmentation 递归
- 发布时间:2012-03-04 20:33:00
建议继续学习
近3天十大热文
-
[84] memory prefetch浅析
-
[54] 基本排序算法的PHP实现
-
[50] 深入浅出cassandra 4 数据一致性问
-
[43] 转载:cassandra读写性能原理分析
-
[40] javascript插入样式
-
[39] MySQL半同步存在的问题
-
[37] Inline Form Labels
-
[37] JS中如何判断字符串类型的数字
-
[35] 字符引用和空白字符
-
[33] 获取Dom元素的X/Y坐标