Skip to content

Rebuild gdm #513

Merged
merged 4 commits into from
Oct 18, 2017
Merged

Rebuild gdm #513

merged 4 commits into from
Oct 18, 2017

Conversation

donald
Copy link
Collaborator

@donald donald commented Oct 17, 2017

Adds a patch to wors around a problem which sometimes froze gdm after
entering the password. It depends on timing with nis and the number of
users.

Removed debugging.

Patch description:

From: Donald Buczek buczek@molgen.mpg.de
Date: Tue, 17 Oct 2017 12:38:25 +0200
Subject: [PATCH] GdmSessionWorker: Wait for ActUserManager

We implicitly access the (singleton) ActUserManager via
GdmSessionSettings.

ActUserManager provided by libaccountsservice does asynchronous
method invocations via dbus to the account service daemon
(accountsdaemon.service). Depending on the number of users and the
definition of the user database (which may involve rpc calls in the
NIS case), the response to the ListCachedUsers call may take an
undefined amount of time.

We need to execute our main loop to get the responses for the
asynchronous method invocations processed and delivered to
ActUserManager.

However, the current implementation of the pam services does synchronous
method calls over the dbus and we don't return to our main loop while we
are waiting for the user to enter the username or the password. If
ActUserManger didn't complete its setup before we get into that state
and the user needs longer then a dbus specific timeout (several
seconds) to enter his data, the dbus daemon will delete the reply and
the login process doesn't complete.

The fix here is to check that ActUserManager has completed its setup
before we switch to the states involving pam.

This patch is not needed. To enable gdm debugging, add

    [debug]
    Enable=true

to /etc/gdm/custom.conf .
The patch works around a problem which sometimes froze gdm after
entering the password. It depends on timing with nis and the number of
users.

Patch description:

From: Donald Buczek <buczek@molgen.mpg.de>
Date: Tue, 17 Oct 2017 12:38:25 +0200
Subject: [PATCH] GdmSessionWorker: Wait for ActUserManager

We implicitly access the (singleton) ActUserManager via
GdmSessionSettings.

ActUserManager provided by libaccountsservice does asynchronous
method invocations via dbus to the account service daemon
(accountsdaemon.service). Depending on the number of users and the
definition of the user database (which may involve rpc calls in the
NIS case), the response to the ListCachedUsers call may take an
undefined amount of time.

We need to execute our main loop to get the responses for the
asynchronous method invocations processed and delivered to
ActUserManager.

However, the current implementation of the pam services does synchronous
method calls over the dbus and we don't return to our main loop while we
are waiting for the user to enter the username or the password. If
ActUserManger didn't complete its setup before we get into that state
and the user needs longer then a dbus specific timeout (several
seconds) to enter his data, the dbus daemon will delete the reply and
the login process doesn't complete.

The fix here is to check that ActUserManager has completed its setup
before we switch to the states involving pam.
@david david merged commit ee9ce3e into master Oct 18, 2017
@donald donald deleted the rebuild-gdm branch October 19, 2017 20:18
Sign in to join this conversation on GitHub.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants