After upgrading an Ubuntu 14.04 ("trusty") machine to the latest 16.04 Hardware Enablement packages, I ran into login problems. I could log into my user account and see the GNOME desktop for a split second before getting thrown back into the LightDM login manager.
The solution I found was to install this missing package:
apt install libwayland-egl1-mesa-lts-xenial
Looking for clues in the logs
The first place I looked was the log file for the login manager
/var/log/lightdm/lightdm.log) where I found the following:
DEBUG: Session pid=12743: Running command /usr/sbin/lightdm-session gnome-session --session=gnome DEBUG: Creating shared data directory /var/lib/lightdm-data/username DEBUG: Session pid=12743: Logging to .xsession-errors
This told me that the login manager runs the
gnome-session command and
gets it to create a session of type gnome. That command line is defined
/usr/share/xsessions/gnome.desktop (look for
[Desktop Entry] Name=GNOME Comment=This session logs you into GNOME Exec=gnome-session --session=gnome TryExec=gnome-shell X-LightDM-DesktopName=GNOME
I couldn't see anything unexpected there, but it did point to another log
~/.xsession-errors) which contained the following:
Script for ibus started at run_im. Script for auto started at run_im. Script for default started at run_im. init: Le processus gnome-session (GNOME) main (11946) s'est achevé avec l'état 1 init: Déconnecté du bus D-Bus notifié init: Le processus logrotate main (11831) a été tué par le signal TERM init: Le processus update-notifier-crash (/var/crash/_usr_bin_unattended-upgrade.0.crash) main (11908) a été tué par le signal TERM
Seaching for French error messages isn't as useful as searching for English
ones, so I took a look at
/var/log/syslog and found this:
gnome-session: WARNING: App 'gnome-shell.desktop' exited with code 127 gnome-session: WARNING: App 'gnome-shell.desktop' exited with code 127 gnome-session: WARNING: App 'gnome-shell.desktop' respawning too quickly gnome-session: CRITICAL: We failed, but the fail whale is dead. Sorry....
It looks like
gnome-session is executing
gnome-shell and that this last
command is terminating prematurely. This would explain why
exits immediately after login.
Increasing the amount of logging
In order to get more verbose debugging information out of
created a new type of session (GNOME debug) by copying the regular GNOME
cp /usr/share/xsessions/gnome.desktop /usr/share/xsessions/gnome-debug.desktop
and then adding
--debug to the command line inside
[Desktop Entry] Name=GNOME debug Comment=This session logs you into GNOME debug Exec=gnome-session --debug --session=gnome TryExec=gnome-shell X-LightDM-DesktopName=GNOME debug
After restarting LightDM (
service lightdm restart), I clicked the GNOME
logo next to the password field and chose GNOME debug before trying to
This time, I had a lot more information in
gnome-session: DEBUG(+): GsmAutostartApp: starting gnome-shell.desktop: command=/usr/bin/gnome-shell startup-id=10d41f1f5c81914ec61471971137183000000128780000 gnome-session: DEBUG(+): GsmAutostartApp: started pid:13121 ... /usr/bin/gnome-shell: error while loading shared libraries: libwayland-egl.so.1: cannot open shared object file: No such file or directory gnome-session: DEBUG(+): GsmAutostartApp: (pid:13121) done (status:127) gnome-session: WARNING: App 'gnome-shell.desktop' exited with code 127
which suggests that
gnome-shell won't start because of a missing library.
Finding the missing library
To find the missing library, I used the apt-file command:
apt-file update apt-file search libwayland-egl.so.1
and found that this file is provided by the following packages:
Since I installed the LTS Enablement stack, the package I needed to install to fix this was libwayland-egl1-mesa-lts-xenial.
I filed a bug for this on Launchpad.