问题描述
我在我的应用程序中实现了一个 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 (将#修改为@)