aix下进程异常退出问题排查
2015-02-05 20:14
543 查看
现象:一常驻进程运行一段时间后异常退出,其父进程检测到其exit code为1,该进程主要工作为从队列中收到某种类型的消息时做oracle数据库的select操作
问题分析:经排查代码中并无exit操作,初步怀疑是oracle提供的库中有函数执行了exit,但无直接证据。为此通过atexit注册一个函数,该函数可打印本线程的堆栈信息,当进程通过exit退出时,必调用此函数
解决:分析进程退出时的堆栈信息
0x090000000010bda0 waitpid(??, ??, ??) + 0x200
0x09000000001e268c system(??) + 0x14c
0x0000000100001394 cleanup() + 0x114
0x0900000000054e40 exit(??) + 0x140
0x090000000be6d04c skgesigCrash(??) + 0x4c
0x090000000be6d3e8 skgesig_sigactionHandler(??, ??, ??) + 0x1e8
<signal>
0x090000000ddf7024 ........................................
可看到程序运行过程中,代码问题产生了信号,该信号被oracle的信号处理函数skgesig_sigactionHandler捕获,skgesig_sigactionHandler做了exit操作导致进程退出。至于为何产生这个信号,由于数据库操作的代码是其他部门开发的,未能深究。
问题分析:经排查代码中并无exit操作,初步怀疑是oracle提供的库中有函数执行了exit,但无直接证据。为此通过atexit注册一个函数,该函数可打印本线程的堆栈信息,当进程通过exit退出时,必调用此函数
解决:分析进程退出时的堆栈信息
0x090000000010bda0 waitpid(??, ??, ??) + 0x200
0x09000000001e268c system(??) + 0x14c
0x0000000100001394 cleanup() + 0x114
0x0900000000054e40 exit(??) + 0x140
0x090000000be6d04c skgesigCrash(??) + 0x4c
0x090000000be6d3e8 skgesig_sigactionHandler(??, ??, ??) + 0x1e8
<signal>
0x090000000ddf7024 ........................................
可看到程序运行过程中,代码问题产生了信号,该信号被oracle的信号处理函数skgesig_sigactionHandler捕获,skgesig_sigactionHandler做了exit操作导致进程退出。至于为何产生这个信号,由于数据库操作的代码是其他部门开发的,未能深究。
相关文章推荐
- Windows服务器上lsass.exe进程CPU使用率异常问题排查方法
- Tomcat shutdown执行后无法退出进程问题排查及解决
- Nginx问题定位之监控进程异常退出
- 记问题排查:java进程未正常退出
- nginx问题定位之监控进程异常退出
- 解决进程间共享内存,由于某个进程异常退出导致死锁问题
- Nginx问题定位之监控进程异常退出
- Nginx问题定位之监控进程异常退出
- 性能测试jvm进程意外退出问题排查
- nginx问题定位之监控进程异常退出
- Tomcat shutdown执行后无法退出进程问题排查及解决
- YARN ResourceManager 进程异常退出问题追查
- 一次软件异常退出的排查(IE、Adobe Reader无法打开问题)
- Nginx问题定位之监控进程异常退出
- 应用放到android4.0终端,遇到了异常退出的问题.
- 碰到bind错误,主程序异常,调用处理函数退出问题
- AIX使用g++编译的程序使用异常时的问题
- 详谈 UNIX 环境进程异常退出
- 关于用loadlin引导安装异常退出的问题
- VBOX下WinXP虚拟机异常退出问题解决