unix守护程序因未知原因停止,但没有coredump

unix守护程序因未知原因停止,但没有coredump,c,unix,segmentation-fault,coredump,kill-process,C,Unix,Segmentation Fault,Coredump,Kill Process,我试图在一个用C编写的linux守护进程中找到一个bug。这个守护进程应该在一个无休止的回答请求的循环中运行。偶尔它会无缘无故地停止。没有创建coredump。没有内核segfault消息写入/var/log/messages 我们已经知道进程的死亡是由某些请求引起的,但是我在源代码中找不到bug发生的位置 以下是我到目前为止所做的: 使用-g-Wall重新编译,从ulimit-c unlimited开始 使用-ABRT进行kill,这将创建一个coredump,因此权限必须是确定的 添加了c

我试图在一个用C编写的linux守护进程中找到一个bug。这个守护进程应该在一个无休止的回答请求的循环中运行。偶尔它会无缘无故地停止。没有创建coredump。没有内核segfault消息写入/var/log/messages

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

以下是我到目前为止所做的:

  • 使用-g-Wall重新编译,从ulimit-c unlimited开始
  • 使用-ABRT进行kill,这将创建一个coredump,因此权限必须是确定的
  • 添加了char*p=NULL,c=*p;代码的某个地方。这将创建coredump和kern.info segfault syslog消息。gdb a.out core显示了一个完美的回溯
这一切让我相信,问题不是由错误的指针引起的。每个exit()-语句前面都有syslog()-语句,因此进程本身不会停止。而且这个系统上没有可能终止进程的用户

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


Peter

某些信号的默认处理程序

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

确保忽略信号管道