~ubuntu-desktop/ubuntu/+source/gdm3:upstream/latest

Last commit made on 2019-10-07
Get this branch:
git clone -b upstream/latest https://git.launchpad.net/~ubuntu-desktop/ubuntu/+source/gdm3
Members of Ubuntu Desktop can upload to this branch. Log in for directions.

Branch merges

Branch information

Name:
upstream/latest
Repository:
lp:~ubuntu-desktop/ubuntu/+source/gdm3

Recent commits

6138ae7... by Iain Lane

New upstream version 3.34.1

80e0101... by Iain Lane <email address hidden>

configure: bump to 3.34.1

aa62046... by Iain Lane <email address hidden>

NEWS: update for release

1320aa7... by Ask Hjorth Larsen

Updated Danish translation

621f088... by Matej Urbančič

Added Slovenian translation

be1b6cc... by Iain Lane

Merge branch 'wip/xiaoguang/duplicated-session' into 'master'

libgdm: Remove duplicate sessions when on Xorg

See merge request GNOME/gdm!84

2136c3b... by Xiaoguang Wang <email address hidden>

libgdm: Remove duplicate sessions when on Xorg

When gdm works on Xorg it's possible to have duplicate sessions, we need
to remove them.

ec4ea50... by Dusan Kazik

Update Slovak translation

ab54b37... by Iain Lane

Merge branch 'wip/benzea/user-switching-logind-tty' into 'master'

gdm-session-worker: Assume login_vt is on GDM_INITIAL_VT

Closes #515

See merge request GNOME/gdm!86

0e05e2f... by Benjamin Berg <email address hidden>

gdm-session-worker: Drop login_vt assuming it is GDM_INITIAL_VT

When a session ends, its "session worker" is closed. Since
3e8220921bb608afd06ed677104fd2244b901a28 (3.33.4), we uninitialise PAM
when this happens. As part of this procedure, we jump back to the login
screen, if the screen being killed is not itself the login screen.

This has broken fast user switching. It goes like this - this
explanation is a bit complicated, bear with us:

We want to jump back to the login screen when a normal user session
ends, so that people can log in again. We do not want to do this when a
login screen itself ends. When session workers start up, they query for
the *currently active VT* and save this in `login_vt`. Then later on, we
check if our session ID is the same as `login_vt`, and jump to
`login_vt` if they are different - this means that it was a user session
not a login session. Querying the currently active VT is fine for the
first greeter, but when initiating a user switch it's wrong as this
gives the user VT.

GDM greeters are killed once they have spawned a session. They are
associated with a logind session, and therefore a PAM session. There are
some actions performed when unregistering PAM sessions, including the
previously mentioned VT jump. Before
3e8220921bb608afd06ed677104fd2244b901a28 we only uninitialised PAM when
the session itself exited so the bug was masked, but now (since this
commit), if the login screen's *worker* exits first - as happens in the
normal case when GDM kills it - we also do this uninitialisation. Since
we falsely recorded the login screen as the first user's VT, this means
that checking `login_vt != session_vt` returns `TRUE` and we jump back
to the previous user's session immediately after logging into the new
session: fast user switching is broken.

Since the work on shutting down the GDM session has been finished, we
can assume that the login_vt is always on GDM_INITIAL_VT (see
example c71bc5d6c3bc2ec448b5c72ce9a811d9c0c7905e
"local-display-factory: Remove initial VT is in use check" and
39fb4ff64e6a0653e70a3bfab31da47b49227d59 "manager: don't run autologin
display on tty1"). So simply replace all usages of login_vt with
GDM_INITIAL_VT to solve the above problem.

Note that in the case where ENABLE_USER_DISPLAY_SERVER is not enabled,
the login_vt is always the same as the session_vt. We can simply remove
the VT switching magic there and everything should be working as
expected.

This is a simpler version of the patch by Iain Lane <email address hidden>,
taking into account that we can make the assumption about the login_vt.

Closes #515