[Pm-utils] upower/pm-utils deadlock when pm-suspend called by upowerd

Vincent Untz vuntz at gnome.org
Tue Jun 22 03:54:33 PDT 2010


Hi,

(I'm not subscribed, please cc me if you need input from me :-))

There's a nice deadlock when pm-suspend is called by upowerd:

 + upowerd calls pm-suspend with g_spawn_sync(). That's because it wants
   to know if the call failed to return an error via dbus if needed.

 + pm-suspend suspends, everything is happy. Then it resumes.

 + the /usr/lib/pm-utils/sleep.d/00powersave hook calls pm-powersave
   with no argument

 + pm-powersave needs to know if the computer is on battery or not. So
   it calls on_ac_power.

 + on_ac_power knows that upower is cool, so it asks upower via dbus if
   the computer is on battery... except that upowerd is still blocked in
   g_spawn_sync()

The results of this is that the calling process is blocked for some time
(a dbus timeout), which can result in ugly ghost windows. See
https://bugzilla.novell.com/show_bug.cgi?id=615646 for example.

Richard is thinking that the pm-powersave part might be better handled
by upowerd itself instead of a hook for pm-suspend...

Cheers,

Vincent

-- 
Les gens heureux ne sont pas pressés.


More information about the Pm-utils mailing list