dbus-glib-1 bug in dbus_g_proxy_call

Havoc Pennington hp at redhat.com
Fri Jul 20 02:52:43 PDT 2007


Hi,

As the message says, this is normally a bug in some application using 
the library. You can't call the API with an invalid method name:

Cody Lodrige wrote:
> process 3676: arguments to dbus_message_new_method_call() were
> incorrect, assertion "_dbus_check_is_valid_member (method)" failed in
> file dbus-message.c line 1077.
> This is normally a bug in some application using the D-Bus library.
> 
> ** ERROR **: Out of memory

(though I don't know why it says out of memory)

This case is different:

> call_result = dbus_g_proxy_call(proxy, "DefaultAdapterIDONTEXIST",
> &error, G_TYPE_INVALID, G_TYPE_STRING, &adapter_path, G_TYPE_INVALID);
> 

In this case the method name is valid (well-formed) but just does not 
exist in the application you're talking to.

In the first case, the problem is 100% your fault (you should not be 
trying to call a non-well-formed method). In the second case, you could 
not avoid the error, since you don't necessarily know what the other app 
you're talking to will do or what methods it will claim to have.

In other words, the fix for the first error is "remove the code in your 
app that does this" and the fix for the second error may be to fix the 
other app, or it may be to add error handling code in your app to try a 
different method if your first choice is missing.

It would be wrong to ever write error-handling code for the first case, 
because right above handling the error you *caused* the error. So just 
don't cause it. That's why there's no GError for that, because "if (I 
just caused an error on the previous line)" is a silly piece of code to 
write.

Havoc



More information about the dbus mailing list