In common/user-list.c, load_users() calls load_passwd_file(). The intended code path is is for load_passwd_file() to make use of the org.freedesktop.Accounts.ListCachedUsers DBus call.[1] However, due to the accounts-daemon failure[2], it falls back on the slow code path, which calls load_passwd_file(), which then calls make_passwd_user() for every single user.[3] That results in a check for the existence of ~/.face and ~/.face.icon for potentially thousands of LDAP users, possibly with NFS-mounted home directories!
Why lightdm behaves the way it does…
In common/user-list.c, load_users() calls load_passwd_file(). The intended code path is is for load_passwd_file() to make use of the org.freedesktop .Accounts. ListCachedUsers DBus call.[1] However, due to the accounts-daemon failure[2], it falls back on the slow code path, which calls load_passwd_file(), which then calls make_passwd_user() for every single user.[3] That results in a check for the existence of ~/.face and ~/.face.icon for potentially thousands of LDAP users, possibly with NFS-mounted home directories!
[1]: https:/ /bazaar. launchpad. net/~lightdm- team/lightdm/ 1.10/view/ 1995/common/ user-list. c#L908 /bugs.launchpad .net/ubuntu/ +source/ accountsservice /+bug/1350393/ comments/ 4 /bazaar. launchpad. net/~lightdm- team/lightdm/ 1.10/view/ 1995/common/ user-list. c#L264
[2]: https:/
[3]: https:/