[systemd-devel] sd 221 regression: login - nonexistent sessions via lightdm

David Herrmann dh.herrmann at gmail.com
Wed Jul 8 04:54:36 PDT 2015


Hi

On Wed, Jul 8, 2015 at 1:29 PM, poma <pomidorabelisima at gmail.com> wrote:
> Here is another case where this is still broken - LiveCD/DVD constellation.
> Initial log-in should work, but subsequent ones sind kaputt aber glücklich.
> So how to reproduce:
> just log-out & log-in, again.
>
> Here is a visual record:
> http://goo.gl/Gm4ffO
> Screencast/catch-a-tiger-by-the-toe.webm
>
> and here is a test compilation, so you can test it yourself:
> http://goo.gl/Gm4ffO
> ISO/Rawhide-Live-Xfce-708.iso

I see. I assume the greeter is again started on the same VT as the
leaving session. If the previous session now leaves stuff behind, we
end up with the same issue. Does the attached patch fix this?

(This is getting a bit convoluted.. we should really fix this properly)

Thanks
David

diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c
index 82654ee..91cc67d 100644
--- a/src/login/logind-dbus.c
+++ b/src/login/logind-dbus.c
@@ -699,9 +699,12 @@ static int method_create_session(
          * after the user-session and want the user-session to take
          * over the VT. We need to support this for
          * backwards-compatibility, so make sure we allow new sessions
-         * on a VT that a greeter is running on.
+         * on a VT that a greeter is running on. Furthermore, to allow
+         * re-logins, we have to allow a greeter to take over a used VT for
+         * the exact same reasons.
          */
-        if (vtnr > 0 &&
+        if (class != SESSION_GREETER &&
+            vtnr > 0 &&
             vtnr < m->seat0->position_count &&
             m->seat0->positions[vtnr] &&
             m->seat0->positions[vtnr]->class != SESSION_GREETER)


More information about the systemd-devel mailing list