[Bug 887946] Re: [SRU] Deadlocks in main loop
Launchpad Bug Tracker
887946 at bugs.launchpad.net
Tue Jul 10 05:26:45 UTC 2012
** Branch linked: lp:ubuntu/lucid-proposed/glib2.0
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to glib2.0 in Ubuntu.
https://bugs.launchpad.net/bugs/887946
Title:
[SRU] Deadlocks in main loop
Status in “glib2.0” package in Ubuntu:
Invalid
Status in “glib2.0” source package in Lucid:
Fix Committed
Status in “glib2.0” source package in Maverick:
Won't Fix
Bug description:
Some applications get stuck in a deadlock when utilizing glib. One of
examples is lrmadmin, when connecting to lrmd. Upstream provided a fix
for this bug and Ubuntu's version 11.04 and newer do not have this
issue.
Ubuntu 10.04 and 10.10 do not contain the fix. Upstream fix:
https://mail.gnome.org/archives/commits-list/2010-November/msg01816.html
[Impact]
Remove potential and demonstratable deadlocks in glib code.
[Development Fix]
Bug is fixed in Ubuntu 11.04 and later by the simple fact that these version have newer version of glib2.0 which contains this fix.
[Stable Fix]
Proposed fix is cherry picked from the upstream's, at the time, latest version of glib. This part of the code did not change since then.
[Test Case]
* Install lucid
* Install python-software-properties:
apt-get install python-software-properties
* add ubuntu-ha-maintainers lucid ppa and update repo:
apt-add-repository ppa:ubuntu-ha-maintainers/ppa ; apt-get update
* Install pacemaker:
apt-get -y install pacemaker
* Enable corosync (/etc/default/corosync) and start it:
sed -i -e 's/START=no/START=yes/' /etc/default/corosync
service corosync start
* Open two client->server connections:
lrmadmin -C ; lrmadmin -C
It deadlocks on second run (it actually never finishes the first run).
* Kill lrmd and stop corosync:
killall -9 lrmd ; service corosync stop
* install fix
apt-get update && apt-get install libglib2.0-0
* Start corosync:
service corosync start
* Run the test again:
lrmadmin -C ; lrmadmin -C ; lrmadmin -C ; lrmadmin -C
* It doesn't deadlock.
[Regression Potential]
Regression potential should be very small. This change is still present in almost unmodified upstream code to this day (g_source_unref_internal of glib/gmain.c). The upstream trunk commit is at http://git.gnome.org/browse/glib/commit/?id=b358202856682e5cdefb0b4b8aaed3a45d9a85fa .
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/glib2.0/+bug/887946/+subscriptions
More information about the foundations-bugs
mailing list