Fixing GDM Login Screen Failure After Ubuntu 25.10 Update on my AMD / Nvidia Laptop

Fixing GDM Login Screen Failure After Ubuntu 25.04 Update on my AMD / Nvidia Laptop

The Problem

After updating Ubuntu to the latest version ( Ubuntu 25.10 | October 2025), the GDM (GNOME Display Manager) login screen completely stopped loading. The system would boot normally but never display the graphical login interface.

System Configuration

  • OS: Ubuntu 25.10 (updated October 2025)
  • Kernel: Linux 6.14.0-32-generic
  • GPU Setup: Dual GPU system – NVIDIA GeForce RTX 3050 Mobile (Driver 580.95.05) | AMD Radeon Vega (integrated)
  • Display Manager: GDM3
  • Desktop Environment: GNOME 49

Initial Symptoms

When attempting to access the GUI:

  • Black screen with no login prompt
  • GDM service appeared to be running (systemctl status gdm showed “active”)
  • Could access system via TTY (Ctrl+Alt+F2)
  • No obvious error messages in initial logs

Investigation Process

Step 1: Check GDM Service Status

sudo systemctl status gdm3

Finding: GDM was active but logs showed repeated failures:

Gdm: GdmDisplay: Session never registered, failing
Gdm: GdmLocalDisplayFactory: maximum number of X display failures reached: check X server log for errors

The greeter was launching but immediately crashing in a loop.

Step 2: Check GNOME Shell Logs

journalctl -b | grep -i "gnome-shell\|mutter\|wayland"

Critical Finding: Found the root cause error repeated multiple times:

gnome-shell: symbol lookup error: /lib/x86_64-linux-gnu/libmutter-17.so.0: undefined symbol: wl_fixes_interface

This indicated a library dependency issue – GNOME Shell was crashing because it couldn’t find a required symbol in the Wayland library.

Step 3: Analyze Library Dependencies

Checked which Wayland library GNOME Shell was using:

ldd /usr/bin/gnome-shell | grep -i wayland

Output:

libwayland-server.so.0 => /opt/amdgpu/lib/x86_64-linux-gnu/libwayland-server.so.0

Problem Identified: GNOME Shell was loading the AMD GPU driver’s old Wayland library instead of the system library.

Step 4: Compare Library Versions

dpkg -l | grep -i "libwayland\|libmutter\|gnome-shell"

Findings:

  • System Wayland libraries: 1.24.0 (correct, up-to-date)
  • AMD GPU Wayland libraries: 1.23.0 (outdated, from /opt/amdgpu/lib/)
  • GNOME Shell: 49.0
  • Mutter: 49.0 (libmutter-17)

The October 2025 Ubuntu 25.04 update upgraded GNOME/Mutter to version 49 (Mutter 17), which requires Wayland 1.24.0 with the wl_fixes_interface symbol. The old AMD 1.23.0 libraries don’t have this symbol.

Step 5: Find the Configuration Causing This

cat /etc/ld.so.conf.d/20-amdgpu.conf

Content:

/opt/amdgpu/lib/x86_64-linux-gnu
/opt/amdgpu/lib/i386-linux-gnu

This configuration file was forcing the dynamic linker to prioritize AMD’s outdated libraries over the system libraries.

Root Cause Analysis

The issue was caused by a library path priority conflict:

  1. The October 2025 Ubuntu update upgraded GNOME Shell to version 49, which uses Mutter 17
  2. Mutter 17 requires Wayland 1.24.0 with new symbols including wl_fixes_interface
  3. The system had AMD GPU proprietary drivers installed from /opt/amdgpu/
  4. The file /etc/ld.so.conf.d/20-amdgpu.conf configured the dynamic linker to check AMD’s library paths first
  5. AMD’s libraries included an outdated Wayland 1.23.0 that lacked the required symbols
  6. GNOME Shell loaded the incompatible AMD Wayland library and crashed on startup
  7. GDM repeatedly tried to launch the greeter, resulting in a crash loop

The Solution

The fix involved disabling the AMD library path configuration to allow the system to use the correct Wayland libraries:

Step 1: Disable AMD Library Path Configuration

sudo mv /etc/ld.so.conf.d/20-amdgpu.conf /etc/ld.so.conf.d/20-amdgpu.conf.disabled

This renames the file so the dynamic linker ignores it while preserving it for potential future use.

Step 2: Rebuild Dynamic Linker Cache

sudo ldconfig

This rebuilds the library cache without the AMD paths, forcing the system to use standard library locations.

Step 3: Restart GDM

sudo systemctl restart gdm

Restarts the display manager with the corrected library configuration.

Verification

After restarting GDM, verify GNOME Shell is running:

ps aux | grep gnome-shell | grep -v grep

Expected output should show gnome-shell running as the gdm-greeter user.

Results

After applying the fix:

  • GDM login screen loads successfully
  • GNOME Shell runs without crashes
  • Wayland session works correctly
  • System uses proper Wayland 1.24.0 libraries from /lib/x86_64-linux-gnu/

Why This Happened

This is a classic dependency version conflict that emerged during a major system update:

  1. Proprietary driver packages often bundle their own versions of system libraries to ensure compatibility
  2. Library path configuration (/etc/ld.so.conf.d/) determines which library versions get loaded
  3. Major version updates can introduce new API requirements that old bundled libraries don’t support
  4. The AMD driver package wasn’t updated in sync with GNOME, leaving incompatible libraries in place