Skip to content

LightDM fails to start greeter when greeter-setup-script exits with non-zero status #426

@Gundilla

Description

@Gundilla

Bug Report: LightDM fails to start when greeter-setup-script exits with non-zero status

System Information

  • Distribution: Linux Mint (Cinnamon)
  • LightDM Version: 1.30.0
  • Display Manager: LightDM

Description

LightDM completely fails to start the greeter and display server when a greeter-setup-script exits with a non-zero status. This results in the system becoming completely inaccessible to the user (black screen with blinking cursor), requiring recovery mode or live USB to fix.

Steps to Reproduce

  1. Configure LightDM with a greeter-setup-script that fails:
    greeter-setup-script=/usr/bin/numlockx on
    
  2. If numlockx is missing, misconfigured, or fails for any reason
  3. Reboot the system
  4. System displays black screen with cursor, no greeter appears

Expected Behavior

When a greeter-setup-script fails, LightDM should:

  • Log the error to /var/log/lightdm/lightdm.log
  • Display a warning (optionally)
  • Continue starting the greeter anyway
  • Allow the user to log in normally

A cosmetic script failure should not prevent system access.

Actual Behavior

LightDM completely stops and exits when the greeter-setup-script fails:

[+1.07s] DEBUG: Launching process 1433: /usr/bin/numlockx on
[+1.07s] DEBUG: Process 1433 exited with return value 1
[+1.07s] DEBUG: Seat seat0: Exit status of /usr/bin/numlockx on: 1
[+1.07s] DEBUG: Seat seat0: Switching to greeter due to failed setup script
[+1.07s] DEBUG: Seat seat0: Creating greeter session
[+1.07s] DEBUG: Seat seat0: Stopping; failed to start a greeter
[+1.07s] DEBUG: Seat seat0: Stopping
[+1.22s] DEBUG: Exiting with return value 1

The system becomes completely unusable, requiring:

  • Boot from live USB
  • Mount the system partition
  • Manually edit configuration files
  • Many users would not know how to recover from this

Impact

Critical severity - Complete system lockout from a non-critical component failure.

Workaround

From a live USB environment:

  1. Mount system partition
  2. Chroot into the system
  3. Comment out or remove the failing greeter-setup-script line from /etc/lightdm/lightdm.conf

Suggested Fix

Implement graceful degradation:

  • Treat greeter-setup-script failures as non-fatal
  • Add a configuration option to specify whether script failure should be fatal (default: false)
  • Add timeout for greeter-setup-script execution
  • Implement fallback behavior when setup script fails

Additional Context

This issue particularly affects Linux Mint users as the distribution ships with numlockx configured by default in /etc/lightdm/lightdm.conf.d/70-linuxmint.conf. If this package becomes corrupted or misconfigured for any reason, users lose complete access to their system.

A display manager should prioritize user access over cosmetic features. Non-critical scripts should never prevent system login.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions