无限递归导致 Segmentation fault
浏览:2444次 出处信息
某服务器上一个 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 (阅读:8290)
- 循环、迭代、遍历和递归 (阅读:4505)
- 递归并不一定非得是“自己调用自己的function” (阅读:3245)
- 小心递归次数限制 (阅读:3099)
- PHP正则之递归匹配 (阅读:2740)
- 倒置字符串中的单词 (阅读:2488)
- 递归创建目录的一个函数 (阅读:2107)
- 递归字符转义 (阅读:1988)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:漫话中文自动分词和语义识别(下):句法结构和语义结构
文章信息
- 作者:qingbo.blog 来源: qingbo.blog
- 标签: Segmentation 递归
- 发布时间:2012-03-04 20:33:00
建议继续学习
近3天十大热文
- [71] Twitter/微博客的学习摘要
- [66] IOS安全–浅谈关于IOS加固的几种方法
- [65] find命令的一点注意事项
- [63] android 开发入门
- [63] 如何拿下简短的域名
- [63] Go Reflect 性能
- [61] Oracle MTS模式下 进程地址与会话信
- [61] 流程管理与用户研究
- [58] 图书馆的世界纪录
- [58] 读书笔记-壹百度:百度十年千倍的29条法则