哪个进程正在发送SIGKILL

时间:2015-02-11 11:41:49

标签: linux crash signals dbus sigkill

在我的linux系统中,我有一个守护进程,它很早就开始(在启动期间)。   启动期间的守护程序只是初始化g_dbus名称。   具体来说:

        guint id = g_bus_own_name ( G_BUS_TYPE_SESSION,
                            DBUS_NAME,
                            G_BUS_NAME_OWNER_FLAGS_NONE,
                            bus_acquired_handler,
                            name_acquired_handler,
                            name_lost_handler,
                            NULL,
                            NULL);

但令我惊讶的是,我总是得到这个:

        ##### deliver signal SIG : 9, [BT]<Process Name>#1(679) get_signal_to_deliver
        ##### deliver signal SIG : 9, [BT]<Process Name>#2(681) get_signal_to_deliver

我也尝试了这个:

        dmesg | grep -i 'killed process'

但问题是,不知何故,dmesg是空的。 (我认为这是有目的的)

我还检查了全球和我的过程中的静态变量&amp;我没有分配大的内存。此外,也没有内存泄漏

我的进程在系统中也具有root权限,因此这也不是问题。

最后一点。在两个或从systemd(该守护进程)自动重启后,根本没有问题。

有人可以帮助理解这种行为吗?所以我能够解决。

1 个答案:

答案 0 :(得分:0)

我解决了我的问题。   虽然,我不是这方面的专家,但这就是我解决的问题。这让我得出了结果。

首先是解决方案,然后我们会尝试推理。

检查系统总线是否启动:

          while(conn==NULL) {
             dbus_bus_get(DBUS_BUS_SYSTEM,&err);
             if(dbus_error_is_set(&err)){
                 usleep(1000*50);
              }

之后只需获得系统总线:

    guint id = g_bus_own_name ( G_BUS_TYPE_SYSTEM,
                        DBUS_NAME,
                        G_BUS_NAME_OWNER_FLAGS_NONE,
                        bus_acquired_handler,
                        name_acquired_handler,
                        name_lost_handler,
                        NULL,
                        NULL);                    

现在没有信号&amp;守护进程顺利进行。

现在的理由。     我想,早些时候我试图获得会话总线,在启动时它没有创建,因此内核正在向我的进程发送信号9。所以,我转移到系统总线,它比会话总线早发布。     此外,在获得系统总线之前,确保甚至system_bus正常运行也是相关的。因此解决方案。

为了回答发送sigkill的过程,在我看来,没有特别的过程。它来自内核本身。

希望这对其他人也有用。