Wierd Dbus问题 - dbus_connection_send失败

时间:2011-11-24 09:28:21

标签: dbus

我是DBus的初学者并使用dbus编写了一个示例应用程序,但我遇到了一个奇怪的问题。我的应用程序在guest虚拟机操作系统上正常运行为Ubuntu(在Windows主机上的虚拟机上),但同一个应用程序无法在独立的Ubuntu系统上运行(也尝试过meego,也没有运气)。

然后,我验证了对dbus,glib库版本的明显疑虑。它在两种环境中都是一样的,问题是一致的。我的意思是应用程序总是在虚拟机上没有任何问题,并且总是在独立的ubuntu上崩溃。

这是关于这个问题的简要说明。

  1. App应该在dbus上发送150个信号,另一个应用程序是 接收这些信号。 (发送和接收方面没有问题。)
  2. 我有一个DbusMessage [150]的数组(也尝试使用150个DBusMessage的列表)...将参数附加到dbus消息上并一次发送到总线......没有循环。 ..
  3. dbus API的顺序都是正确的,并通过引用多个示例源代码进行验证。
  4. 以上所有方法都运行正常,但在独立的ubuntu系统上,我总能在dbus_connection_send()调用上看到分段错误。
  5. 我重新验证了所有可能发生“seg fault”的地方,这对我来说都很好看。这就是我将我的arg附加到dbus消息的方式。

    dbus_message_append_args(pDbusMsg, DBUS_TYPE_ARRAY, DBUS_TYPE_BYTE, &pData, sizeof(pData), DBUS_TYPE_INVALID) != TRUE)

  6. 然后连接发送..然后calling dbus_connection_flush()。此外,由于我的应用程序必须再次发送相同的消息(但不是立即),我通过调用dbus_message_new_signal()重新注册相同的信号..我已经验证了所有指针/内存/ dbusmessage ..一切看起来很好并且有效在虚拟化的ubuntu操作系统上很好。

    只是添加,我尝试使用dbus_connection_send_preallocated()发送,它适用于少量消息(10-15~),但不够一致。

    你有过这样的问题吗,请让我知道解决这个问题的任何线索......任何帮助都会受到赞赏或任何示例/教程以及考虑到我刚开始使用dbus: p

    由于

1 个答案:

答案 0 :(得分:0)

我不知道您是否听说过与dbus相关的调试工具。首先,您可以尝试使用一些dbus-debugging-tool调用公开的函数。如果在使用该工具调用时它不会引发分段错误,那么您可能应该在代码中查找问题。否则你应该检查与环境有关的事情。

其中一个工具是 - DFeet

另一个这样的调试器(基于命令行)也由Qt人提供。