无限递归导致 Segmentation fault
浏览:2372次 出处信息
某服务器上一个 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 (阅读:8129)
- 循环、迭代、遍历和递归 (阅读:4323)
- 递归并不一定非得是“自己调用自己的function” (阅读:3060)
- 小心递归次数限制 (阅读:3012)
- PHP正则之递归匹配 (阅读:2647)
- 倒置字符串中的单词 (阅读:2442)
- 递归创建目录的一个函数 (阅读:2041)
- 递归字符转义 (阅读:1931)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:漫话中文自动分词和语义识别(下):句法结构和语义结构
文章信息
- 作者:qingbo.blog 来源: qingbo.blog
- 标签: Segmentation 递归
- 发布时间:2012-03-04 20:33:00
建议继续学习
近3天十大热文
- [16] Go Reflect 性能
- [15] 浏览器的工作原理:新式网络浏览器幕后揭秘
- [14] iTerm2 (Mac Terminal)
- [13] 浅谈Web安全验证码
- [13] iOS可视化编程 Tips 之“无需代码设置
- [12] 手把手教你CSRF防护
- [12] 基于HTTP缓存轻松实现客户端应用的离线支持
- [12] 界面设计速成
- [11] osx平台上lol英雄联盟launcher启
- [11] 系统工程师的自我修养- sed篇