I am using the dbus-c++ binding to create a proxy for connman's (connman.net) Service API
(http://git.kernel.org/?p=network/connman/connman.git;a=blob;f=doc/service-api.txt;h=629c0245ffad3a52170801bd75ba8497015c47d4;hb=HEAD)
which is exposed on dbus. The method found in connman's Service interface xml, looks like so:
<method name="GetProperties"> <arg type="a{sv}" direction="out"/> </method>
The proxy file that was auto-generated using "dbusxx-xml2cpp" utility, created the method in question like so:
Line 1: std::map< std::string, ::DBus::Variant > GetProperties()
Line 2: {
Line 3: ::DBus::CallMessage call;
Line 4: call.member("GetProperties");
Line 5: ::DBus::Message ret = invoke_method (call);
Line 6: ::DBus::MessageIter ri = ret.reader();
Line 7: std::map< std::string, ::DBus::Variant > argout;
Line 8: ri >> argout;
Line 9: return argout;
Line 10: }
It's on Line 8, that I get the warning/error, on x86 running Ubuntu 11.04 with libdbus-c++-1-0 package(0~20110310-1ubuntu1):
" process 30342: arguments to dbus_message_iter_open_container() were incorrect, assertion "(type == DBUS_TYPE_STRUCT && contained_signature == NULL) || (type == DBUS_TYPE_DICT_ENTRY && contained_signature == NULL) || (type == DBUS_TYPE_VARIANT && contained_signature != NULL) || (type == DBUS_TYPE_ARRAY && contained_signature != NULL)" failed in file dbus-message.c line 2677.
This is normally a bug in some application using the D-Bus library.
process 30342: dbus message iterator looks uninitialized or corrupted "
....and lots more..... But the process DOES NOT terminate/abort here.
On Meego (1.2) however, running on an ARM based target, the process TERMINATES after this assertion error!
The package used in meego on the ARM based board is:
libdbus-c++-0.5.1-4.3.armv7hl.rpm
libdbus-c++-devel-0.5.1-4.3.armv7hl.rpm
Please help in resolving this issue. Is there another way in which the iterator can insert the DICT value - (std::map< std::string, ::DBus::Variant > ) without throwing these assertion errors?
Any help would be appreciated.
-Roy.
View and moderate all "bugs Discussion" comments posted by this user
Mark all as spam, and block user from posting to "Bugs"
Please provide a solution or alternatives.