[Pkg-utopia-maintainers] Bug#426412: Bug#426412: Bug#426412: python-dbus: system_bus.remove_signal_receiver() freezes
Simon McVittie
smcv at ianadd.pseudorandom.co.uk
Mon May 28 18:53:52 UTC 2007
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On Mon, 28 May 2007 at 20:22:21 +0100, Tony Houghton wrote:
> In <20070528174346.GA30779 at celebrin.pseudorandom.co.uk>, you wrote:
>
> > remove_signal_receiver() takes and releases a lock (which protects the
> > signal-match tree from concurrent modification when dbus-python is used
> > multi-threaded). I'll check other places where this lock is used -
> > there's probably some code path where it's not being released properly.
>
> FWIW after I read this I thought perhaps it's a reentrancy problem,
> caused by the application trying to call remove_signal_receiver() from a
> signal receiver. So I made DevTray defer the calls with
> gobject.idle_add() but it still froze. So I was on the wrong track :-(.
No, it's a different sort of reentrancy problem - in a proxy that tracks
name-owner changes, remove_signal_receiver() can trigger a recursive call
to itself (internally, a match on NameOwnerChanged is removed too) which
attempts to re-take the lock.
I've sent a patch for review upstream; there should be a 0.81.1 in a day or
so.
Simon
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: OpenPGP key: http://www.pseudorandom.co.uk/2003/contact/ or pgp.net
iD8DBQFGWyVAWSc8zVUw7HYRAtBXAKC58CPnmGWVf6zsagkkCvHCJ7rEzgCg4Tel
J5ERm73xeAPYcfRjXkW0Ya4=
=PIYc
-----END PGP SIGNATURE-----
More information about the Pkg-utopia-maintainers
mailing list