Memory leak in dbus / dbus-c++ ?
Havoc Pennington
hp at redhat.com
Tue Jul 31 09:56:14 PDT 2007
Hi,
Olivier Hochreutiner wrote:
> I checked that and it seems fine. Actually I remarked that
> dbus_connection_send_with_reply_and_block() returns a DBusMessage with
> refcount == 1, and the c++ binding calls dbus_message_ref() on it, and
> then later dbus_message_unref(), which means refcount is still 1 at
> the end and the message is not freed.
The caller of send_with_reply_and_block() should be calling unref() to
remove the returned refcount. So if the C++ binding does a ref(), it
should do two unref(), one for the ref() and one for the original refcount.
> I also remarked that the reply message returned by
> dbus_connection_send_with_reply_and_block() is also passed to the
> dispatcher. Is this expected ? It seems to me that this is not
> correct, since it's the reply to a known method call, so dispatching
> is not needed, or am I wrong ?
Filters installed on a connection have a chance to intercept every
message, but normally they will not do anything with a method reply.
You might use this feature for e.g. debug output.
Havoc
More information about the dbus
mailing list