XDMCP broken under Lightdm/Unity (does not allow two simultaneous login screens)

Bug #1794403 reported by rob g
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Light Display Manager
New
Undecided
Unassigned

Bug Description

XDMCP broken under Lightdm/Unity (does not allow two simultaneous login screens)

I have Ubuntu installed as a guest under Xen. I've discovered
that when the greeter is open on the GUI console, it will
not open on an XDMCP connection but will simply present a
black screen. Note for other readers, the GUI doesn't work
under Xen unless you specify nomodeset on the boot line.

If I login on the console, then the greeter appears on the XDMCP
connection. Similarly, if the greeter is open on an XDMCP connection,
the console will not provide a greeter but will present a black
screen. Logging on the the XDCMP connection will allow the console
to present a login screen. Note that this makes is extremely hard
to debug XDMCP connections. I've seen many questions about a black
display on an XDMCP connection -- some of them are undoubtedly this bug.

I therefore conclude that either the display manager or the greeter
is broken.

Other data:

I'm running Ubuntu 18.04 LTS
I have stopped the gdm3 service but not uninstalled it
I have added lightdm and started the service
The lightdm configuration file is:

  /etc/lightdm/lightdm.conf.d/lightdm.conf
  [note for others, I had to create this file]

and contains:

------
[XDMCPServer]
enabled=true
------

I also tried adding MaxSessions=3 (I didn't see any support info
to suggest this might work, but other DMs use it) but to no effect.

I'm using the unity greeter.

The /usr/share/lightdm/lightdm.conf.d directory contains:

50-disable-guest.conf 50-guest-wrapper.conf 50-xserver-command.conf
50-disable-log-backup.conf 50-ubuntu.conf
50-greeter-wrapper.conf 50-unity-greeter.conf

The end of /var/log/syslog contains:
------
Sep 25 20:21:36 ubuntu systemd[1]: Started Time & Date Service.
Sep 25 20:22:01 ubuntu pulseaudio[3929]: [pulseaudio] bluez5-util.c: GetManagedO
bjects() failed: org.freedesktop.DBus.Error.NoReply: Did not receive a reply. Po
ssible causes include: the remote application did not send a reply, the message
bus security policy blocked the reply, the reply timeout expired, or the network
 connection was broken.
Sep 25 20:31:10 ubuntu systemd[1]: Started Session c17 of user lightdm.
Sep 25 20:31:10 ubuntu lightdm[2913]: Error activating login1 session: GDBus.Err
or:org.freedesktop.DBus.Error.NotSupported: Operation not supported
------

the end of /var/log/lightdm/lightdm.log contains:
------
[+1015.73s] DEBUG: Session pid=3967: Running command /usr/lib/lightdm/lightdm-gr
eeter-session /usr/sbin/unity-greeter
[+1015.73s] DEBUG: Session pid=3967: Logging to /var/log/lightdm/xdmcp1-greeter.
log
[+1015.74s] DEBUG: Activating login1 session c17
[+1015.74s] WARNING: Error activating login1 session: GDBus.Error:org.freedeskto
p.DBus.Error.NotSupported: Operation not supported
[+1015.85s] DEBUG: Greeter connected version=1.26.0 api=1 resettable=false
[+1195.78s] DEBUG: Got KeepAlive(display_number=2 session_id=42703) from 192.168
.0.2:48957
[+1195.78s] DEBUG: Send Alive(session_running=true session_id=42703) to 192.168.
0.2:48957
[+1375.80s] DEBUG: Got KeepAlive(display_number=2 session_id=42703) from 192.168
.0.2:48957
[+1375.80s] DEBUG: Send Alive(session_running=true session_id=42703) to 192.168.
0.2:48957
[+1555.91s] DEBUG: Got KeepAlive(display_number=2 session_id=42703) from 192.168
.0.2:48957
[+1555.91s] DEBUG: Send Alive(session_running=true session_id=42703) to 192.168.
0.2:48957
[+1735.97s] DEBUG: Got KeepAlive(display_number=2 session_id=42703) from 192.168
[+1735.97s] DEBUG: Send Alive(session_running=true session_id=42703) to 192.168.
0.2:48957
------

the end of /var/log/lightdm/xdmcp0-greeter.log contains:

------
[+37.93s] DEBUG: menubar.vala:537: Adding indicator object 0x56067493c130 at pos
ition 4
[+326.82s] DEBUG: Providing response to display manager
[+326.82s] DEBUG: Wrote 26 bytes to daemon
[+326.84s] DEBUG: Read 8 bytes from daemon
[+326.84s] DEBUG: Read 15 bytes from daemon
[+326.84s] DEBUG: Authentication complete for user rob with return code 0
[+326.85s] DEBUG: Starting session xfce
[+326.85s] DEBUG: Wrote 16 bytes to daemon
[+326.85s] DEBUG: Read 8 bytes from daemon
[+326.85s] DEBUG: Read 4 bytes from daemon
[+326.85s] DEBUG: unity-greeter.vala:696: Got a SIGTERM
[+326.85s] DEBUG: unity-greeter.vala:704: Cleaning up
[+326.85s] DEBUG: unity-greeter.vala:712: AT-SPI exited with return value 0
[+326.85s] DEBUG: unity-greeter.vala:718: Exiting
------

One way to test is to use Xorg to create a connection, e.g.

  Xorg -terminate -query 192.168.0.100 :2

This is a huge problem because it means that XDMCP will not work
at all. Even if the console window is not up, the emulated
graphical hardware is present and all XDMCP connection attempts
will fail. Presumably this means that on real hardware XDMCP
is also broken.

Note, there appears to be a years old open bug which indicates that
you can only login once per username at a time using lightdm/xfce4,
however, this is a different bug since the problem occurs before
login. This other bug is also a problem but although I often
login to the same account simultaneously using ssh, I seldom
do so using XDMCP so it is not a show stopper.

Thanks for your help

Revision history for this message
rob g (rob-user) wrote :

For others with the same problem:

Apparently the unity greeter is the issue and will not allow
two greeter sessions at a time (or if it will, I can't find
any documentation on how to make it work). As a work-around, use
slick-greeter.

# apt install slick-greeter

Verify it's installed

# ls -l /usr/share/xgreeters

You should see "slick-greeter.desktop" and "unity-greeter.desktop"

Now switch the lightdm configuration to use the slick greeter. There
is a list of options in /usr/share/doc/lightdm/lightdm.conf.gz.

# cd /etc/lightdm/lightdm.conf.d

add a line to override the default greeter. Note you are adding
a Seat section and an override:

# vi lightdm.conf
  > [XDMCPServer]
  > enabled=true
  >
  > [Seat:*]
  > session=slick-greeter

now restart the display manager

# service lightdm restart

Note: I'm running the xfce4 session manager. When I switched to
the slick greeter, the screen looked identical. To verify you have
switched, look at /var/log/lightdm/lightdm.log

You should see an entry:

Running command /usr/lib/lightdm/lightdm-greeter-session /usr/sbin/slick-greeter

near the bottom of the file.

And, of course, now XDMCP works

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.