--nextPart5219931.zOfESV62Tq Content-Type: Text/Plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Em Quinta-feira 27. Maio 2010, =C3=A0s 16.43.20, Lubos Lunak escreveu: > If this is an important issue to fix, what is the patch and the problem= =20 > (=3Dsomething specific) it fixes? The patch is attached to the bugzilla report that Sebastian linked to. It can't be applied to the current 1.2 tree because it contains a behaviour= =20 change in one of the basic event-loop integration callbacks. The issue in question is that, when libdbus-1 needs to call the callback fo= r=20 enabling, disabling or toggling timers, or socket notifiers (DBusTimeout an= d=20 DBusWatch in libdbus-1 parlance), it needs to drop the locks. It's standard= =20 procedure: you're calling out to user code, you drop all locks you have in= =20 place, because the user may do strange things and recurse back to you. The problem is that, if we drop the locks, then a recursion may change the= =20 pointers in the structures that were being modified (think reallocation). S= o=20 libdbus-1 has had for years now this hack that doesn't work that simply mak= es=20 the pointer NULL to indicate that a recursion has happened. Couple that with threading and you have this issue happening when two separ= ate=20 threads try to send a D-Bus message at the same time: when one drops its=20 locks, the other one tries to send, and finds the structures set to NULL. T= hat=20 second one fails without setting a proper error message, which in libdbus-1= =20 means "Out of memory". The fix is to *not* drop the locks and document what the binding may or may= not=20 do in that callback. =2D-=20 Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org Senior Product Manager - Nokia, Qt Development Frameworks PGP/GPG: 0x6EF45358; fingerprint: E067 918B B660 DBD1 105C 966C 33F5 F005 6EF4 5358 --nextPart5219931.zOfESV62Tq Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) iD8DBQBL/tpDM/XwBW70U1gRAkCTAKCo0at0+1u8ApBZEmRe04x0/cIaIQCgyNql IXiJCm3d76Xjq3lD4Nirl4U= =P4JB -----END PGP SIGNATURE----- --nextPart5219931.zOfESV62Tq--