chiark / gitweb /
sd-bus: add note about sd_bus_unref() recursion
authorDavid Herrmann <dh.herrmann@gmail.com>
Sat, 22 Mar 2014 17:06:38 +0000 (18:06 +0100)
committerDavid Herrmann <dh.herrmann@gmail.com>
Sat, 22 Mar 2014 17:06:38 +0000 (18:06 +0100)
commiteb33a6f858c2cd39dcf9c2f39514c9f83ed040fe
tree6bf4d80d8f66d252574407de3b10af7011f42378
parent22fdeadcc06e95fe41ac4de872ec245c0887547f
sd-bus: add note about sd_bus_unref() recursion

In sd_bus_unref() we check for self-reference loops and destruct our
queues in case we're the only reference holders. However, we do _not_
modify our own ref-count, thus effectively causing the
message-destructions to enter with the same reference count as we did.

The only reason this doesn't cause an endless recursion (or trigger
assert(m->n_ref > 0) in sd_bus_message_unref()) is the fact that we
decrease queue-counters _before_ calling _unref(). That's not obvious at
all, so add a big fat note in bus_reset_queues() to everyone touching that
code.
src/libsystemd/sd-bus/sd-bus.c