Unix守护进程因未知原因停止,没有coredump



我试图找到一个用c编写的linux守护进程中的错误。守护进程应该在一个无尽的循环中运行,回答请求。偶尔它会莫名其妙地停止。没有创建coredump。没有kernel-segfault消息被写入/var/log/messages

我们已经知道进程的死亡是由某些请求引起的,但是我无法在源代码中找到错误发生的位置。

到目前为止我所做的是:

  • 用-g -Wall重新编译,从ulimit开始-c unlimited
  • 用-ABRT杀死,这将创建一个coredump,所以权限必须是ok的
  • 添加char *p=NULL, c=*p;代码的某处。这将创建一个coredump和一个kern.info segfault syslog-message。gdb .out内核显示了一个完美的回溯

这一切都让我相信,问题不是由错误的指针引起的。每个exit()语句之前都有syslog()语句,因此进程不会自行停止。这个系统上没有任何用户可能会终止这个进程。

如果没有coredump,还有什么可以杀死unix进程?

彼得

某些信号的默认处理程序。

如果这是一个守护进程,它可能处理一些网络通信。默认情况下,套接字操作可能引发SIG_PIPE信号。默认处理程序只是退出程序。

确保忽略SIG_PIPE

相关内容

  • 没有找到相关文章

最新更新