Я новичок в DBus и написал пример приложения на dbus, но столкнулся со странной проблемой. Мое приложение отлично работает на гостевой ОС под Ubuntu (на виртуальной коробке с хостом Windows), но то же самое приложение не работает на автономной системе Ubuntu (также пробовал на meego, но тоже не повезло).
Затем я проверил очевидные сомнения относительно версий библиотек dbus, glib. Это одинаково на обеих средах, и проблема является последовательной. Я имею в виду, что приложение всегда работает без каких-либо проблем на виртуальной коробке и всегда вылетает на автономной Ubuntu.
Вот краткое описание вопроса.
- Приложение должно отправлять 150 сигналов на dbus, а другое приложение
получать эти сигналы. (Здесь нет проблем при отправке и получении).
- У меня есть массив DbusMessage [150] (также пробовал со списком 150 DBusMessage) ... добавление аргументов к сообщению dbus и отправка на шину .. один за один раз ... без зацикливания. ..
- Последовательность API-интерфейсов dbus верна и проверена путем ссылки на несколько примеров исходного кода.
- Все вышеперечисленное прекрасно работает, но в автономной системе Ubuntu я всегда вижу ошибку сегментации при вызове dbus_connection_send ().
Я перепроверил все возможные места, где могут происходить "ошибки сегмента", и все это выглядит хорошо для меня. Вот как я добавляю свой arg к сообщению dbus.
dbus_message_append_args(pDbusMsg, DBUS_TYPE_ARRAY, DBUS_TYPE_BYTE, &pData, sizeof(pData),
DBUS_TYPE_INVALID) != TRUE)
затем соединение отправьте .. а затем calling dbus_connection_flush()
. Кроме того, так как мое приложение должно отправлять то же сообщение снова (но не сразу), я повторно регистрирую тот же сигнал, вызывая dbus_message_new_signal()
.. Я проверил все указатели / memory / dbusmessage..все выглядит нормально и работает нормально виртуализированная ОС Ubuntu.
Просто добавлю, я попытался отправить с dbus_connection_send_preallocated()
, и он отлично работает для нескольких сообщений (10-15 ~), но недостаточно согласованно.
У вас когда-нибудь возникала такая проблема, пожалуйста, дайте мне знать любую подсказку, чтобы решить эту проблему .... Буду признателен за любую помощь или любые примеры / учебники, учитывая, что я только начинаю с dbus: P
Спасибо