Avahi 守护进程在程序退出时释放客户端时断言

问题描述

我在我的应用程序中实现了一个 avahi 客户端。它成功向守护程序注册,由作为注册过程的一部分返回的状态确定,但是当我的应用程序尝试关闭时,守护程序断言从而阻止程序正常退出

我的问题是为什么?

我的 avahi_client 在 pthread 中运行。 线程在启动时注册客户端,然后进入简单循环。

    do {

        /* Run the main loop */
        avahi_simple_poll_loop(simplePollApi);

    } while (avahi_thread_active == TRUE);

注册包括以下调用

    simplePollApi = avahi_simple_poll_new();

    if (simplePollApi)
    {
        pollApi = avahi_simple_poll_get(simplePollApi);

        if (!pollApi)
        {
            avahi_simple_poll_free(simplePollApi);
            return (-1);
        }
    }

    avahiClient = avahi_client_new(pollApi,flags,avahiClientCallback,&userData,&avahiErr);

    if (avahiClient == NULL)
    {
        avahi_simple_poll_free(simplePollApi);
        return (-1);
    }

通过日志,我可以看到这一切都成功了,并且没有报告任何错误。我的回调收到客户端正在运行的状态更改警报 (AVAHI_CLIENT_S_RUNNING)。回调和其他参数是根据规范提供的。一切似乎都在按预期运行。

然后我尝试退出

    if(simplePollApi)
    {
        avahi_simple_poll_quit(simplePollApi);
        avahi_simple_poll_free(simplePollApi);
        simplePollApi = (AvahiSimplePoll *)NULL;
    }

    if(avahiClient)
    {
        avahi_client_free(avahiClient);
        avahiClient = (AvahiClient *)NULL;
    }

我看到的断言是:simple-watch.c:206: watch_free: Assertion `!w->dead' Failed.

断言似乎是调用释放客户端的结果。 有没有使用过 Avahi 的人可以告诉我哪里出错了?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)