unix守护进程在没有coredump的情况下因不明原因停止

时间:2014-05-08 21:50:13

标签: c unix segmentation-fault coredump kill-process

我试图在用C编写的linux-daemon中找到一个错误。该守护进程应该在无限循环中运行来回答请求。偶尔它会在没有明显原因的情况下停止。没有创建coredump。没有将kernel-segfault消息写入/ var / log / messages

我们已经知道该过程的死亡是由某些请求引起的,但是我找不到发生错误的源位置。

这是我到目前为止所做的:

  • 使用-g -Wall重新编译,以ulimit -c unlimited
  • 开头
  • 使用-ABRT杀死,这将创建一个coredump,因此权限必须正常
  • 添加了char * p = NULL,c = * p;代码的某个地方。这会创建一个coredump和一个kern.info segfault syslog-message。而gdb a.out核心显示了一个完美的回溯

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

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

彼得

1 个答案:

答案 0 :(得分:1)

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

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

确保忽略SIG_PIPE。