[LightDM] [systemd-devel] sd 221 regression: login - nonexistent sessions via lightdm
David Herrmann
dh.herrmann at gmail.com
Tue Jul 7 10:10:58 PDT 2015
Hi
On Tue, Jul 7, 2015 at 6:55 PM, Martin Pitt <martin.pitt at 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;
More information about the LightDM
mailing list