On Wed, Jun 1, 2016 at 10:58 AM, Matthias Clasen <mclasen(a)redhat.com> wrote:
Leaking session processes have been a perennial problem that
we have been battling forever (gconf, ibus, pulseaudio, the list goes
on...). And they are causing actual problems, from preventing re-login
to subtly breaking the next session to slowing down shutdown.
This is definitely true. It's a class of bug that's hit us over and
over again. (in addition to gconf, ibus, and pulseaudio above, you
could add bonobo-activation-server, evolution-data-server, gam_server
off the top of my head). The problem is that background services
don't generally take display connections, since they don't need to
display anything. So they don't die when the display goes away.
We tried to fix this a long time ago with the introduction of dbus
into the desktop. The idea was the session dbus-daemon daemon would
define the scope of the session, and services would grab a bus
connection if they wanted to be scoped to the session.
Of course, starting in Fedora 24, we no longer have a session bus.
It's a user bus now. So the bus won't go away until the last user
session (for a user) ends, and those background services won't go away
until they lose their bus connections, since they still rely on
dbus-daemon to cut the cord when the session ends. While those
background services are waiting for their bus connection to disappear,
they're keeping the session alive (but in a "closing" state).
To me, KillUserProcesses=yes is better from a theoretical
it-should-have-always-done-this-if-it-could-have standpoint, and it's
better from real world
I don't like that it requires users to have to change workflows, so
that's a negative and I understand why the change is controversial.
We may want to consider reverting the user bus change for F24 and
revisit in F25, not sure.