我是DBus的初学者,使用dbus编写了一个示例应用程序,但我面临一个奇怪的问题。我的应用程序在客户端操作系统上运行良好,与Ubuntu(在带有Windows主机的虚拟框中)一样,但同一个应用程序无法在独立的Ubuntu系统上运行(也在meego上尝试过,也没有运气过关)。Wierd Dbus问题 - dbus_connection_send失败
然后,我验证了对dbus,glib库版本的明显疑虑。它在两个环境中都是一样的,问题是一致的。我的意思是应用程序总是运行时没有任何虚拟盒子上的问题,并且总是在独立的Ubuntu上崩溃。
这里是关于这个问题的简要描述。
- 应用应该发送上DBUS 150点的信号和其他应用是 接收这些信号。 (在这里没有问题发送&收到)。
- 我有一个DbusMessage [150]的数组(也尝试了150 DBusMessage的列表)...将参数附加到dbus消息并发送到总线..一次...一个没有循环。 ..
- dbus API的顺序都是正确的,并通过引用多个示例源代码进行验证。
- 所有上述工作正常,但在独立的Ubuntu系统上,我总是可以看到分段错误,在dbus_connection_send()调用。
我重新认识了“seg故障”可能发生的每一个可能发生的地方,这一切对我来说都很好。这是我如何将我的arg附加到dbus消息。
dbus_message_append_args(pDbusMsg, DBUS_TYPE_ARRAY, DBUS_TYPE_BYTE, &pData, sizeof(pData), DBUS_TYPE_INVALID) != TRUE)
然后连接send..and然后calling dbus_connection_flush()
。此外,由于我的应用程序必须再次发送相同的消息(但不是立即),我重新登记相同的信号,通过调用dbus_message_new_signal()
..我已验证所有指针/内存/ dbusmessage..everything看起来不错,并在虚拟化ubuntu操作系统。
只是添加,我试着与dbus_connection_send_preallocated()
发送,它适用于几条消息(10-15〜),但不够一致。
你有没有遇到过这样的问题,请让我知道任何线索来解决这个问题....任何帮助将不胜感激或任何示例/教程,以及考虑到我刚刚开始与dbus :P
感谢
问题是探索性的或含糊不清的,并没有包含足够的细节来知道代码在做什么或如何诊断问题。 –