-
-
Notifications
You must be signed in to change notification settings - Fork 148
Description
System Info
- Hyprlock: 0.9.2
- Hyprland: 0.53.1
- OS: Arch Linux (kernel 6.18.3)
- GPU: AMD Radeon RX 470/480/570/580 (amdgpu driver)
Summary
After weeks of investigating repeated Hyprland crashes during idle/lock states, I found multiple independent issues that can cause crashes. Documenting all of them here to help others.
Issue 1: DPMS off crashes Hyprland (AMD GPU)
Symptom: Hyprland crashes when DPMS turns off monitors.
Cause: Known AMD GPU issue with DPMS in Hyprland.
Fix: Remove DPMS off from hypridle config.
Related: hyprwm/Hyprland#2578
Issue 2: Monitor disable crashes Hyprlock
Symptom: Hyprlock crashes when monitors are disabled via hyprctl dispatch dpms off or monitor power management.
Cause: Hyprlock cannot handle displays becoming unavailable.
Fix: Do not disable monitors while hyprlock is running. Keep system in screensaver + lock only.
Issue 3: AMD GPU suspend issues
Symptom: System freezes or crashes on suspend/resume.
Cause: AMD GPU runtime power management issues.
Fix: Add kernel parameters:
amdgpu.runpm=0 mem_sleep_default=deep
Issue 4: Fingerprint auth crash ("User unknown")
Symptom: Hyprlock crashes with "User unknown" PAM error.
Cause: fingerprint:enabled = true in hyprlock.conf but fprintd is not installed.
Fix: Disable fingerprint in hyprlock.conf:
# auth {
# fingerprint:enabled = true
# }Issue 5: Missing PAM header
Symptom: PAM authentication fails silently.
Cause: /etc/pam.d/hyprlock missing #%PAM-1.0 header.
Fix: Ensure file starts with #%PAM-1.0.
Issue 6: Incomplete PAM configuration (pam_end crash) - NEW
Symptom: Hyprlock crashes with SIGABRT in pam_end(), then Hyprland crashes.
Stack trace:
#0 pam_end (libpam.so.0 + 0x4b4b)
#1 /usr/bin/hyprlock + 0x416a1
#2 /usr/bin/hyprlock + 0x41964
#3 execute_native_thread_routine (libstdc++.so.6)
Cause: The default /etc/pam.d/hyprlock from Arch package only has:
#%PAM-1.0
auth include login
Missing account and session sections. When pam_end() is called, it tries to clean up session handles that were never initialized, causing a crash.
Fix: Complete PAM configuration:
#%PAM-1.0
auth include system-login
account include system-login
session optional pam_keyinit.so force revoke
session include system-login
Final working hypridle.conf
general {
lock_cmd = hyprlock
before_sleep_cmd = loginctl lock-session
after_sleep_cmd = hyprctl dispatch dpms on
}
listener {
timeout = 600 # 10min - screensaver
on-timeout = pidof hyprlock || hyprlock
}
listener {
timeout = 900 # 15min - lock
on-timeout = loginctl lock-session
}
# NO DPMS off - causes crash on AMD
# NO monitor disable - causes hyprlock crashSuggestion
The hyprlock package should ship with a complete PAM configuration (like SDDM does) to prevent the pam_end crash.
Related Issues
- Hyprlock crashes when no display available. #434 - Hyprlock crashes when no display available
- Manual configuration used to disable display on clamshell breaks hyprlock #480 - Crash on monitor disable
- Hyprlock + Hyprland crashes when locking #942 - Hyprlock + Hyprland crashes when locking
- Hyprland crashes with
dpms offafter a while Hyprland#2578 - DPMS crash on AMD