[regression] Password accepted but login fails (blank purple screen and mouse pointer only)
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Release Notes for Ubuntu |
Fix Released
|
Undecided
|
Unassigned | ||
gdm |
Fix Released
|
Critical
|
|||
gdm3 (Ubuntu) |
Fix Released
|
High
|
Marco Trevisan (Treviño) | ||
Bionic |
Fix Released
|
High
|
Marco Trevisan (Treviño) | ||
gnome-shell (Ubuntu) |
Invalid
|
High
|
Unassigned | ||
Bionic |
Invalid
|
Undecided
|
Unassigned |
Bug Description
[ Description ]
Due to a refcounting bug, a GDBusConnection was getting disposed when it was still required. The symptom of this was that you couldn't log in on the second attempt if you'd got your password wrong on the first attempt. All you'd see is a blank purple screen and mouse pointer only.
[ Test case ]
1. Boot to GDM
2. Click your username
3. Type the wrong password a couple of times, pressing enter after each time
4. Type the right password
If the bug is happening, after 4. the system hangs at a blank screen with the mouse cursor. If you then switch to a VT or otherwise connect to the machine, you can examine the journal and you'll see a G_IS_DBUS_
[ Fix ]
Marco and I worked upstream on this fix. We found out that there was a problem like this-
The GdmClient has a shared GDBusConnection for its operations. The first time someone calls for it, it is created and stored in the object's private structure. Subsequent calls return *a new reference* to this same object. It turned out that the asynchronous method to get the connection was accidentally unreferencing its object before giving it to the caller if it was returning an already-existing connection.
For this to work properly, we need to nullify the pointer we stored when the connection goes away, so we know when to make a new one. There were some cases where we didn't add the weak references required to do that. Those are also fixed.
[ Regression potential ]
Now we share connections more than we did before. We also more carefully track when to clear our object. If we got this wrong, we might end up leaking the connection or dropping it in even more cases.
[ Original report ]
WORKAROUND: After typing an incorrect password, click Cancel, then click your name, then enter your password again.
---
Trying to log into my session (Gnome, Xorg), if I enter the wrong password before entering it correctly, the session doesn't load and I get a purple screen, a mouse cursor, and an invisible but clickable menu in the top right. If I enter it correctly the first time, there is no problem.
I've replicated this from a fresh boot, after logging out and after 'sudo service gdm restart' from the Ctrl-Alt-F4 console.
This is a fresh install, and didn't occur when I was using a previous install of 18.04 (until Friday).
ProblemType: Bug
DistroRelease: Ubuntu 18.04
Package: gdm3 3.28.0-0ubuntu1
ProcVersionSign
Uname: Linux 4.15.0-15-generic x86_64
ApportVersion: 2.20.9-0ubuntu6
Architecture: amd64
CurrentDesktop: ubuntu:GNOME
Date: Sun Apr 22 20:31:13 2018
InstallationDate: Installed on 2018-04-22 (0 days ago)
InstallationMedia: Ubuntu 18.04 LTS "Bionic Beaver" - Alpha amd64 (20180421.1)
SourcePackage: gdm3
UpgradeStatus: No upgrade log present (probably fresh install)
Related branches
- Iain Lane (community): Approve
-
Diff: 1768 lines (+1674/-0)15 files modifieddebian/changelog (+20/-0)
debian/patches/libgdb-Try-to-reuse-connections-from-the-available-proxie.patch (+162/-0)
debian/patches/libgdm-Don-t-double-ref-the-connection-got-from-task.patch (+35/-0)
debian/patches/libgdm-Don-t-leak-connection-on-sync-re-authentication.patch (+21/-0)
debian/patches/libgdm-Don-t-save-manager-address.patch (+102/-0)
debian/patches/libgdm-Drop-weak-refs-on-the-GDBusConnection.patch (+128/-0)
debian/patches/libgdm-Return-NULL-on-invalid-client-instances.patch (+84/-0)
debian/patches/libgdm-Unref-the-manager-propagated-from-task.patch (+36/-0)
debian/patches/libgdm-Use-auto-pointers-and-cleanup-code.patch (+65/-0)
debian/patches/libgdm-don-t-keep-manager-proxy-around-longer-than-we-nee.patch (+315/-0)
debian/patches/libgdm-drop-support-for-serializing-multiple-opens.patch (+189/-0)
debian/patches/libgdm-fix-pointer-boolean-task-confusion.patch (+47/-0)
debian/patches/libgdm-get-connection-explicitly.patch (+393/-0)
debian/patches/libgdm-use-g_object_unref-instead-of-g_clear_object-for-w.patch (+64/-0)
debian/patches/series (+13/-0)
- Iain Lane (community): Approve
-
Diff: 1931 lines (+1723/-35)16 files modifieddebian/changelog (+22/-0)
debian/patches/libgdb-Try-to-reuse-connections-from-the-available-proxie.patch (+162/-0)
debian/patches/libgdm-Don-t-double-ref-the-connection-got-from-task.patch (+35/-0)
debian/patches/libgdm-Don-t-leak-connection-on-sync-re-authentication.patch (+21/-0)
debian/patches/libgdm-Don-t-save-manager-address.patch (+102/-0)
debian/patches/libgdm-Drop-weak-refs-on-the-GDBusConnection.patch (+128/-0)
debian/patches/libgdm-Return-NULL-on-invalid-client-instances.patch (+84/-0)
debian/patches/libgdm-Unref-the-manager-propagated-from-task.patch (+36/-0)
debian/patches/libgdm-Use-auto-pointers-and-cleanup-code.patch (+65/-0)
debian/patches/libgdm-don-t-keep-manager-proxy-around-longer-than-we-nee.patch (+315/-0)
debian/patches/libgdm-drop-support-for-serializing-multiple-opens.patch (+189/-0)
debian/patches/libgdm-fix-pointer-boolean-task-confusion.patch (+47/-0)
debian/patches/libgdm-get-connection-explicitly.patch (+393/-0)
debian/patches/libgdm-use-g_object_unref-instead-of-g_clear_object-for-w.patch (+64/-0)
debian/patches/series (+13/-0)
debian/patches/ubuntu_nvidia_prime.patch (+47/-35)
tags: | added: regression |
summary: |
- Login fails when preceded by incorrect password + [regression] Login fails when preceded by incorrect password |
Changed in gnome-shell (Ubuntu): | |
status: | New → Incomplete |
Changed in gdm3 (Ubuntu): | |
importance: | Medium → High |
Changed in gnome-shell (Ubuntu): | |
importance: | Undecided → High |
summary: |
- [regression] gnome-shell startup fails with - g_dbus_connection_call_sync_internal: assertion 'G_IS_DBUS_CONNECTION - (connection)' failed + [regression] Login fails when preceded by incorrect password - gnome- + shell startup fails with g_dbus_connection_call_sync_internal: assertion + 'G_IS_DBUS_CONNECTION (connection)' failed |
summary: |
- [regression] Login fails when preceded by incorrect password - gnome- - shell startup fails with g_dbus_connection_call_sync_internal: assertion - 'G_IS_DBUS_CONNECTION (connection)' failed + [regression] Login fails when preceded by incorrect password |
summary: |
- [regression] Login fails when preceded by incorrect password + [regression] Login fails (blank purple screen and mouse pointer only) |
Changed in gdm3 (Ubuntu): | |
status: | Incomplete → Confirmed |
Changed in gnome-shell (Ubuntu): | |
status: | Incomplete → Confirmed |
summary: |
- [regression] Login fails (blank purple screen and mouse pointer only) + [regression] Password accepted but login fails (blank purple screen and + mouse pointer only) |
Changed in ubuntu-release-notes: | |
status: | New → Fix Released |
Changed in gdm: | |
importance: | Undecided → Unknown |
status: | New → Unknown |
Changed in gdm: | |
importance: | Unknown → Medium |
status: | Unknown → Confirmed |
Changed in gdm3 (Ubuntu): | |
status: | Confirmed → In Progress |
Changed in gdm: | |
importance: | Medium → Critical |
status: | Confirmed → Incomplete |
tags: | added: unlock |
Changed in gdm3 (Ubuntu): | |
assignee: | nobody → Iain Lane (laney) |
Changed in gdm: | |
status: | Incomplete → In Progress |
Changed in gdm: | |
status: | In Progress → Fix Released |
Changed in gnome-shell (Ubuntu Bionic): | |
status: | Confirmed → Invalid |
Changed in gnome-shell (Ubuntu): | |
status: | Won't Fix → Invalid |
Changed in gdm3 (Ubuntu Bionic): | |
status: | Confirmed → In Progress |
assignee: | nobody → Iain Lane (laney) |
description: | updated |
Changed in gdm3 (Ubuntu): | |
status: | In Progress → Fix Released |
Changed in gdm3 (Ubuntu Bionic): | |
status: | In Progress → Fix Committed |
tags: | added: verification-needed verification-needed-bionic |
tags: |
added: verification-done verification-done-bionic removed: verification-needed verification-needed-bionic |
tags: |
added: verification-needed verification-needed-bionic removed: verification-done verification-done-bionic |
Changed in gdm3 (Ubuntu Bionic): | |
importance: | Undecided → High |
Changed in gdm3 (Ubuntu): | |
assignee: | Iain Lane (laney) → Marco Trevisan (Treviño) (3v1n0) |
Changed in gdm3 (Ubuntu Bionic): | |
assignee: | Iain Lane (laney) → Marco Trevisan (Treviño) (3v1n0) |
tags: |
added: verification-failed-bionic removed: verification-needed-bionic |
description: | updated |
description: | updated |
Changed in gdm3 (Ubuntu Bionic): | |
status: | Fix Committed → In Progress |
Changed in gdm3 (Ubuntu): | |
status: | Fix Released → In Progress |
Changed in gdm3 (Ubuntu Bionic): | |
status: | In Progress → Fix Committed |
tags: |
added: verification-needed-bionic removed: verification-failed-bionic |
tags: |
added: verification-done-bionic removed: verification-needed-bionic |
tags: |
added: verification-done removed: verification-needed |
Changed in gdm3 (Ubuntu Bionic): | |
status: | Fix Committed → In Progress |
Changed in gdm3 (Ubuntu): | |
status: | In Progress → Fix Committed |
Changed in gdm3 (Ubuntu Bionic): | |
status: | In Progress → Fix Committed |
Changed in gdm3 (Ubuntu): | |
status: | Fix Committed → Fix Released |
tags: |
added: regression-proposed verification-failed-bionic removed: verification-done verification-done-bionic |
tags: | removed: regression |
tags: |
added: verification-done-bionic removed: verification-needed-bionic |
information type: | Public → Public Security |
information type: | Public Security → Public |
Changed in gdm3 (Ubuntu Bionic): | |
milestone: | none → ubuntu-18.04.1 |
Maybe this is related to bug 1765261. Some people have suggested there are key repeat problems so if a key is getting unexpectedly repeated in bug 1765261 then that would count as an incorrect password.