【问题标题】:unix daemon stops for unknown reason without coredumpunix 守护进程在没有 coredump 的情况下因未知原因停止
【发布时间】:2014-06-26 12:27:31
【问题描述】:

我正在尝试在用 C 编写的 linux-daemon 中查找错误。该守护程序应该在无限循环中运行以响应请求。偶尔它会无缘无故地停止。没有创建核心转储。没有内核段错误消息写入 /var/log/messages

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

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

  • 用 -g -Wall 重新编译,用 ulimit -c unlimited 开始
  • 用 -ABRT 杀死,这将创建一个核心转储,因此权限必须正常
  • 添加了 char *p=NULL, c=*p;代码的某个地方。这将创建一个 coredump 和一个 kern.info 段错误系统日志消息。 gdb a.out core 显示了完美的回溯

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

如果没有核心转储,还有什么可能会杀死 unix 进程???

彼得

【问题讨论】:

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


    【解决方案1】:

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

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

    确保忽略 SIG_PIPE。

    【讨论】:

      猜你喜欢
      • 2012-08-28
      • 1970-01-01
      • 1970-01-01
      • 2018-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-10
      相关资源
      最近更新 更多