Bug#789118: Cannot unlock screen after upgrading GNOME if locked before upgrade

Simon McVittie smcv at debian.org
Wed Jan 25 12:52:13 UTC 2017


On Sun, 11 Oct 2015 at 15:48:10 -0700, Josh Triplett wrote:
> I just encountered this problem again, and in addition to the repeated
> authentication failure messages, I also saw a message on the lock screen
> matching this one I later found in logs:
> 
> gnome-session[551]: (gnome-shell:956): Gjs-WARNING **: JS ERROR: Failed to start verification for user: Gio.DBusError: GDBus.Error:org.freedesktop.DBus.Error.InvalidArgs: GDBus.Error:org.freedesktop.DBus.Error.InvalidArgs: Type of message, '(sssssssb)', does not match expected type '(sssssssbb)'

This is really a gdm3 issue, which is why I've reassigned it there.
gnome-shell uses libgdm to communicate with a process called
gdm-session-worker, so that the actual authentication (PAM) can happen in
a privileged process. Unfortunately, the old gnome-shell will be using
jessie's libgdm, which expects a D-Bus API from jessie; and the
gdm-session-worker is started on-demand, so you got one that is using
stretch's libgdm, which expects a D-Bus API from stretch (with an extra
parameter).

It's possible to hack around this in stretch's gdm (patch attached),
but the best workaround I can see is still horrible, and so far I
haven't actually got unlocking to work again. With that
incompatibility out of the way, there's another one:

    Jan 25 12:28:31 host gdm-session-worker.really[11355]: pam_unix(gdm-password:auth): conversation failed
    Jan 25 12:28:31 host gdm-session-worker.really[11355]: pam_unix(gdm-password:auth): auth could not identify password for [user]

(gdm-session-worker.really is the real gdm-session-worker - I've used
dpkg-divert to inject more logging on my test system).

Possibly related, or perhaps just a side-effect of failing authentication:

    Jan 25 12:28:14 host gnome-session[5143]: (gnome-shell:5342): Gjs-WARNING **: JS
     ERROR: Exception in callback for signal: next: Error: can't convert this._frame
     to an integer
    Jan 25 12:28:14 host gnome-session[5143]: Animation<._showFrame at resource:///org/
    gnome/shell/ui/animation.js:59
    Jan 25 12:28:14 host gnome-session[5143]: wrapper at resource:///org/gnome/gjs/modules/lang.js:169
    Jan 25 12:28:14 host gnome-session[5143]: Animation<.play at resource:///org/gnome/shell/ui/animation.js:34
    Jan 25 12:28:14 host gnome-session[5143]: wrapper at resource:///org/gnome/gjs/modules/lang.js:169
    Jan 25 12:28:14 host gnome-session[5143]: AuthPrompt<.setActorInDefaultButtonWell at resource:///org/gnome/shell/gdm/authPrompt.js:313
    Jan 25 12:28:14 host gnome-session[5143]: wrapper at resource:///org/gnome/gjs/modules/lang.js:169
    Jan 25 12:28:14 host gnome-session[5143]: AuthPrompt<.startSpinning at resource:///org/gnome/shell/gdm/authPrompt.js:329
    Jan 25 12:28:14 host gnome-session[5143]: wrapper at resource:///org/gnome/gjs/modules/lang.js:169
    Jan 25 12:28:14 host gnome-session[5143]: AuthPrompt<._init/<@resource:///org/gnome/shell/gdm/authPrompt.js:67
    Jan 25 12:28:14 host gnome-session[5143]: _emit at resource:///org/gnome/gjs/modules/signals.js:124
    Jan 25 12:28:14 host gnome-session[5143]: AuthPrompt<._initButtons/<@resource:///org/gnome/shell/gdm/authPrompt.js:191

I broadly agree with upstream on this issue: the more distribution
development I do, the less faith I have in our ability to support
in-place major upgrades, which change relatively fundamental things while
the OS is still fully active. We already don't actually restart gdm,
because that would terminate all user X/Wayland sessions, or dbus, because
that would terminate all D-Bus connections.

We can get away with in-place upgrades for stable updates, because they
already don't change very much, but for stable -> next-stable or for
testing/unstable, it's very easy to create a situation that can't work.

unattended-upgrades has an InstallOnShutdown mode, which is what SteamOS
uses (with some patches that I wrote a couple of years ago to improve it,
<https://bugs.debian.org/741356>). systemd has systemd.offline-updates(7),
which PackageKit and GNOME Software can use.

    S
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 789118-proof-of-concept.patch
Type: text/x-diff
Size: 7000 bytes
Desc: not available
URL: <http://lists.alioth.debian.org/pipermail/pkg-gnome-maintainers/attachments/20170125/e36600bd/attachment.patch>


More information about the pkg-gnome-maintainers mailing list