Hi On Tue, Jul 7, 2015 at 6:55 PM, Martin Pitt <martin.p...@ubuntu.com> wrote: > Hey David, > > David Herrmann [2015-07-07 18:31 +0200]: >> > Revert "login: re-use VT-sessions if they already exist" - commit 0204c4b >> > http://cgit.freedesktop.org/systemd/systemd/commit/?id=0204c4b >> >> Can someone elaborate what exactly lightdm does here? We really want >> to prevent multiple sessions on the same VT. This is just nasty and >> never made any sense. So I'm really interested why lightdm doesn't >> kill it's manager-session before it starts the new session. Any >> particular reason here? > > I'll let Robert answer with the details, but something I noticed: > > It's not that simple to reproduce, but sometimes it seems the lightdm > "greeter" session (running as user lightdm, where you select user/type > password and so on) doesn't completely terminate, but some processes > stay around in it. Thus the greeter session stays around in state > "Closing", and then the "real" session starts on the same VT. > > I asked the reporter of https://launchpad.net/bugs/1472259 to attach > systemd-cgls, so that we can see what's running in the session.
So it might indeed just be a race in lightdm. Hmm.. Anyway, this patch here should also fix the issue (if it does, I'll commit something proper). Thanks David diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c index 0cc2cdf..bced693 100644 --- a/src/login/logind-dbus.c +++ b/src/login/logind-dbus.c @@ -690,8 +690,11 @@ static int method_create_session } manager_get_session_by_pid(m, leader, &session); - if (!session && vtnr > 0 && vtnr < m->seat0->position_count) + if (!session && vtnr > 0 && vtnr < m->seat0->position_count) { session = m->seat0->positions[vtnr]; + if (session && session->class == SESSION_GREETER) + session = NULL; + } if (session) { _cleanup_free_ char *path = NULL; _cleanup_close_ int fifo_fd = -1; _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel