dbus-python 0.80rc1 release candidate
Simon McVittie
simon.mcvittie at collabora.co.uk
Fri Dec 8 07:47:20 PST 2006
On Thu, 07 Dec 2006 at 17:04:58 -0500, John (J5) Palmieri wrote:
> On Wed, 2006-12-06 at 14:50 +0000, Simon McVittie wrote:
> > Release candidate 1 for dbus-python 0.80 is now available. Please
> > download, test, try to break it.
>
> Still tracking it down but sugar no longer starts. We are getting a
> connection != NULL assertion when calling
> dbus_connection_send_with_reply.
Assuming you're not mixing versions (in which case all bets are off):
- Functions matching dbus_connection_send* are only called from
Connection_send_message, Connection_send_message_with_reply
and Connection_send_message_with_reply_and_block
- All of those functions can only be called on a Connection or subclass
- Connections successfully allocated by Connection_NewConsumingDBusConnection
should always have a non-NULL connection (if a NULL DBusConnection was
passed, dbus_connection_set_data would crash)
- Connection_tp_new always calls Connection_NewConsumingDBusConnection
- Bus_tp_new always calls either Connection_tp_new or
Connection_NewConsumingDBusConnection (although in verifying this, I
did discover that connecting a Bus to a non-standard address wouldn't
have worked)
- (any Connection *)->conn is only ever set NULL by Connection_tp_dealloc.
I suppose the tp_dealloc could conceivably explode if the Connection and its
filters/object path handlers participate in a reference cycle, *and* one of
the filters/object path handlers invokes a Connection method. Also,
crashes might occur in a threaded environment if you're ludicrously
unlucky? (I'm not sure whether that's actually possible or whether the
refcount machinery and the GIL protect us.)
I'll ponder that and see if it's possible to fix the invariant that every
Connection* always has a non-NULL DBusConnection*. Adding some assertions
would probably be a good move in any case.
More information about the dbus
mailing list