Open abigrock opened 1 month ago
can you bisect the issue https://wiki.hyprland.org/Crashes-and-Bugs/#bisecting-an-issue
Haven't had a chance to do a git bisect so far, but worth mentioning that I see no red screens using gtklock.
Bisected @ 016da234d0e852de3ef20eb2e89ac58d2a85f6e7 with swaylock & sleep 1 && hyprctl dispatch dpms off
, launched from TTY.
Related: https://github.com/hyprwm/hyprlock/issues/434
Possibly relevant crash report while bisecting @ 928d1dd38a6e4a791d4a4374a4a3bf02311adbb2, but wasn't able to reproduce a report at the final commit:
Bisected @ 016da23 with
swaylock & sleep 1 && hyprctl dispatch dpms off
, launched from TTY. Related: hyprwm/hyprlock#434Possibly relevant crash report while bisecting @ 928d1dd, but wasn't able to reproduce a report at the final commit: hyprlandCrashReport123094.txt
-------------------------------------------- Hyprland Crash Report -------------------------------------------- I don't feel so good... Hyprland received signal 11(SEGV) Version: 928d1dd38a6e4a791d4a4374a4a3bf02311adbb2 Tag: System info: System name: Linux Node name: hostname Release: 6.10.3-xanmod1 Version: #1-NixOS SMP PREEMPT_DYNAMIC Tue Jan 1 00:00:00 UTC 1980 GPU: 03:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Navi 22 [Radeon RX 6700/6700 XT/6750 XT / 6800M/6850M XT] [1002:73df] (rev c0) (prog-if 00 [VGA controller]) os-release: ANSI_COLOR="1;34" BUG_REPORT_URL="https://github.com/NixOS/nixpkgs/issues" BUILD_ID="24.11.20240809.5e0ca22" DOCUMENTATION_URL="https://nixos.org/learn.html" HOME_URL="https://nixos.org/" ID=nixos IMAGE_ID="" IMAGE_VERSION="" LOGO="nix-snowflake" NAME=NixOS PRETTY_NAME="NixOS 24.11 (Vicuna)" SUPPORT_URL="https://nixos.org/community.html" VERSION="24.11 (Vicuna)" VERSION_CODENAME=vicuna VERSION_ID="24.11" Backtrace: # | /etc/profiles/per-user/myned/bin/Hyprland(_Z12getBacktracev+0x48) [0x7157b8] getBacktrace() ??:? #1 | /etc/profiles/per-user/myned/bin/Hyprland(_ZN13CrashReporter18createAndSaveCrashEi+0x805) [0x66d0c5] CrashReporter::createAndSaveCrash(int) ??:? #2 | /etc/profiles/per-user/myned/bin/Hyprland(_Z25handleUnrecoverableSignali+0x5f) [0x5dd99f] handleUnrecoverableSignal(int) ??:? #3 | /nix/store/0wydilnf1c9vznywsvxqnaing4wraaxp-glibc-2.39-52/lib/libc.so.6(+0x405c0) [0x7f23287635c0] ?? ??:0 #4 | /etc/profiles/per-user/myned/bin/Hyprland(_ZN16IWaylandProtocol8protoLogIJRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEv8LogLevelSt19basic_format_stringIcJDpNSt13type_identityIT_E4typeEEEDpOSB_+0x1d) [0x82339d] void IWaylandProtocol::protoLog<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&>(LogLevel, std::basic_format_string<char, std::type_identity<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&>::type>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&) ??:? #5 | /etc/profiles/per-user/myned/bin/Hyprland() [0x845376] std::_Function_handler<void (CZwlrGammaControlV1*, int), CGammaControl::CGammaControl(Hyprutils::Memory::CSharedPointer<CZwlrGammaControlV1>, wl_resource*)::{lambda(CZwlrGammaControlV1*, int)#1}>::_M_invoke(std::_Any_data const&, CZwlrGammaControlV1*&&, int&&) ??:? #6 | /etc/profiles/per-user/myned/bin/Hyprland() [0x99aba4] _CZwlrGammaControlV1SetGamma(wl_client*, wl_resource*, int) ??:? #7 | /nix/store/nrr9qkx1pg9d3bypardwmz4q4n7cz2h4-libffi-3.4.6/lib/libffi.so.8(+0xa052) [0x7f2328cc4052] ?? ??:0 #8 | /nix/store/nrr9qkx1pg9d3bypardwmz4q4n7cz2h4-libffi-3.4.6/lib/libffi.so.8(+0x8125) [0x7f2328cc2125] ?? ??:0 #9 | /nix/store/nrr9qkx1pg9d3bypardwmz4q4n7cz2h4-libffi-3.4.6/lib/libffi.so.8(ffi_call+0xd8) [0x7f2328cc2d38] ?? ??:0 #1 | /nix/store/hgvky83ijhl0fl625g4hwllwzmpdnksl-wayland-1.23.0/lib/libwayland-server.so.0(+0xf351) [0x7f2329505351] ?? ??:0 #11 | /nix/store/hgvky83ijhl0fl625g4hwllwzmpdnksl-wayland-1.23.0/lib/libwayland-server.so.0(+0x9d6a) [0x7f23294ffd6a] ?? ??:0 #12 | /nix/store/hgvky83ijhl0fl625g4hwllwzmpdnksl-wayland-1.23.0/lib/libwayland-server.so.0(wl_event_loop_dispatch+0x1d2) [0x7f2329502ed2] ?? ??:0 #13 | /nix/store/hgvky83ijhl0fl625g4hwllwzmpdnksl-wayland-1.23.0/lib/libwayland-server.so.0(wl_display_run+0x25) [0x7f23295005d5] ?? ??:0 #14 | /etc/profiles/per-user/myned/bin/Hyprland(_ZN17CEventLoopManager9enterLoopEv+0x363) [0x7cb183] CEventLoopManager::enterLoop() ??:? #15 | /etc/profiles/per-user/myned/bin/Hyprland(main+0xcf4) [0x59f2f4] main ??:? #16 | /nix/store/0wydilnf1c9vznywsvxqnaing4wraaxp-glibc-2.39-52/lib/libc.so.6(+0x2a14e) [0x7f232874d14e] ?? ??:0 #17 | /nix/store/0wydilnf1c9vznywsvxqnaing4wraaxp-glibc-2.39-52/lib/libc.so.6(__libc_start_main+0x89) [0x7f232874d209] ?? ??:0 #18 | /etc/profiles/per-user/myned/bin/Hyprland(_start+0x25) [0x5dd655] _start ??:? Log tail: [LOG] [GammaControl] setGamma for DP-2 [LOG] [GammaControl] setting to monitor DP-2 [LOG] [AQ] drm: Modesetting DP-2 with 3440x1440@100.00Hz [LOG] [AQ] udev: new udev change event for card1 [LOG] [AQ] udev: DRM device card1 changed [LOG] [AQ] drm: Got a hotplug event for /dev/dri/card1 [LOG] [AQ] drm: Scanning connectors for /dev/dri/card1 [LOG] [AQ] drm: Scanning connector id 113 [LOG] [AQ] drm: Connector id 113 already initialized [LOG] [AQ] drm: Ignoring connector 113 because it has no CRTC [LOG] [AQ] drm: Scanning connector id 121 [LOG] [AQ] drm: Connector id 121 already initialized [LOG] [AQ] drm: Connector 121 connection state: 2 [LOG] [AQ] drm: Connector DP-2 disconnected [LOG] Destroy called for monitor DP-2 [LOG] onDisconnect called for DP-2 [LOG] Removed monitor DP-2! [LOG] [LinuxDMABUF] Resetting format table [WARN] Unplugged last monitor, entering an unsafe state. Good luck my friend. [LOG] Entering unsafe state [WARN] No rule found for FALLBACK, trying to use the first. [LOG] Applying monitor rule for FALLBACK [WARN] updateSwapchain: No mode? [LOG] CMonitorState::ensureBufferPresent: no buffer, attaching one from the swapchain for modeset being possible [LOG] output FALLBACK succeeded basic test on format DRM_FORMAT_XRGB8888 [WARN] updateSwapchain: No mode? [LOG] CMonitorState::ensureBufferPresent: no buffer, attaching one from the swapchain for modeset being possible [LOG] arrangeMonitors: 2 to arrange [LOG] arrangeMonitors: DP-2 auto [0, 0] [LOG] arrangeMonitors: FALLBACK auto [0, 0] [LOG] arrangeMonitors: DP-2 xwayland [0, 0] [LOG] arrangeMonitors: FALLBACK xwayland [3440, 0] [LOG] Monitor FALLBACK data dump: res 0x0@60.00Hz, scale 1.00, transform 0, pos 3440x0, 10b 0 [LOG] [AQ] drm: Cursor buffer imported into KMS with id 151 [WARN] updateSwapchain: No mode? [LOG] CMonitorState::ensureBufferPresent: no buffer, attaching one from the swapchain for modeset being possible [LOG] Added new monitor with name FALLBACK at [3440, 0] with size [0, 0], pointer 1 [LOG] New monitor: WORKSPACEID 2, exists: 0 [LOG] [WLOutput (FALLBACK)] Registered global [LOG] [LinuxDMABUF] Resetting format table [LOG] [AQ] drm: Disabling output DP-2 [LOG] Removing monitor DP-2 from realMonitors [LOG] [AQ] drm: Scanning connector id 127 [LOG] [AQ] drm: Connector id 127 already initialized [LOG] [AQ] drm: Ignoring connector 127 because it has no CRTC [LOG] [AQ] drm: Scanning connector id 132 [LOG] [AQ] drm: Connector id 132 already initialized [LOG] [AQ] drm: Ignoring connector 132 because it has no CRTC [LOG] [AQ] drm: Rechecking CRTCs [LOG] [AQ] drm: connector DP-1, has crtc -1, will be rechecked [LOG] [AQ] drm: connector DP-2, has crtc 91, will be rechecked [LOG] [AQ] drm: connector DP-3, has crtc -1, will be rechecked [LOG] [AQ] drm: connector HDMI-A-1, has crtc -1, will be rechecked [LOG] [AQ] drm: slot 0 crtc 91 unassigned [LOG] [AQ] drm: slot 1 crtc 95 unassigned [LOG] [AQ] drm: slot 2 crtc 99 unassigned [LOG] [AQ] drm: slot 3 crtc 103 unassigned [LOG] [AQ] drm: slot 4 crtc 107 unassigned [LOG] [AQ] drm: slot 5 crtc 111 unassigned [LOG] [AQ] drm: Connector DP-1 is not connected [LOG] [AQ] drm: Connector DP-2 is not connected, removing old crtc 91 [LOG] [AQ] drm: Connector DP-3 is not connected [LOG] [AQ] drm: Connector HDMI-A-1 is not connected [LOG] [AQ] drm: rescanning after realloc [LOG] [AQ] drm: Scanning connectors for /dev/dri/card1 [LOG] [AQ] drm: Scanning connector id 113 [LOG] [AQ] drm: Connector id 113 already initialized [LOG] [AQ] drm: Ignoring connector 113 because it has no CRTC [LOG] [AQ] drm: Scanning connector id 121 [LOG] [AQ] drm: Connector id 121 already initialized [LOG] [AQ] drm: Connector 121 connection state: 2 [LOG] [AQ] drm: Scanning connector id 127 [LOG] [AQ] drm: Connector id 127 already initialized [LOG] [AQ] drm: Ignoring connector 127 because it has no CRTC [LOG] [AQ] drm: Scanning connector id 132 [LOG] [AQ] drm: Connector id 132 already initialized [LOG] [AQ] drm: Ignoring connector 132 because it has no CRTC [WARN] Attempted to render frame on inactive session!
@vaxerski thats another case of that LOGM, class constructing calling the unique_ptr from constructor before constructing crash. i think the logging in the protocols could use some kind of rewrite heh. and LOGM usage in the constructor of any protocol causes this just as the drmlease one did
Bisected @ 016da23 with
swaylock & sleep 1 && hyprctl dispatch dpms off
, launched from TTY. Related: hyprwm/hyprlock#434Possibly relevant crash report while bisecting @ 928d1dd, but wasn't able to reproduce a report at the final commit: hyprlandCrashReport123094.txt
Does the crash occur on hyprctl dispatch dpms off
, or hyprctl dispatch dpms on
? Are you still seeing a mouse cursor while red screened?
@ctilley83
All "crashes" occur only with dpms on
while the monitor is essentially disconnected. Mouse cursor is usually visible and moveable unless it results in Hyprland itself crashing, which only occurred on some commits while bisecting.
For completeness, I retested @ df4f222482a7c2a1116ef5c91ba6e4b55d94ad6c:
Hyprland --config hyprland.conf &> hyprland.log
foot
via bind and execute swaylock & sleep 1 && hyprctl dispatch dpms off
dpms on
misc:key_press_enables_dpms=true
(or connect display cable)loginctl terminate-session ''
via bind and repeatMinimal config and log:
So the crash with to LOGM is not related to initial reported issue, where Hyprland remains locked without a client, I think, right? It seems like this is a problem with the fallback output that gets added when no output is available. And a session lock client is unable to create a session lock surface.
Related hyprlock issue: https://github.com/hyprwm/hyprlock/issues/434
@PaideiaDilemma
So the crash with to LOGM is not related to initial reported issue
I can't comment on this myself, I only uploaded the report in case it was relevant.
problem with the fallback output that gets added when no output is available
This is my assumption as well, since without a lockscreen (and thus no red screen), other applications such as waybar also have trouble migrating to the new output.
FWIW, this doesn't happen on my laptop where the display is likely still effectively connected.
After 83ab3ae0afeafe25ca2038888478740d0a80396a (crash on login before that) this can be fixed by giving the FALLBACK output a custom resolution.
E.g. hyprctl keyword monitor "FALLBACK,1920x1080@60,auto,1"
Without that hyprland will not find a fitting mode for the FALLBACK output and the pixelSize will be 0,0. Somewhere this denies us to create a surface.
With the mode explicitly set we try and succeed to set a custom mode for the fallback output.
[LOG] Set a custom mode 1920x1080@60.000000 (mode not found in monitor modes)
[LOG] output FALLBACK succeeded basic test on format DRM_FORMAT_XRGB8888
@vaxerski I have some code that adds a case in applyMonitorRule
that tries to set a custom fallback mode when no rule, no preferred and no available modes. You want me to MR that, or is this something we should fix on the aq side of things (making sure headless has some available mode)?
we should fix on the aq side of things (making sure headless has some available mode)?
this one. Maybe request 1920x1080 as default on creation?
Sounds good, even though https://github.com/hyprwm/aquamarine/commit/16bbbcba65c4700b286f9c45d91bb49f2dd3e67c already fixed the issue on my end :)
I take it the latest commit that shows a sad face with commands on how to get hyprlock back up and running is a temporary fix? Do we know why hyprlock is crashing?
No with https://github.com/hyprwm/aquamarine/commit/16bbbcba65c4700b286f9c45d91bb49f2dd3e67c the crash does not happen any more. (at least the crash when hyprland has no monitor available)
If it fixed - prolly worth closing?
Yes, forcing the fallback output fixes the dpms crash for me, which is handled by default in the mentioned commit.
I'm on hyprland 0.43 and it still crashes, even though now with a nice error message and instructions on how to recover. Is this a config issue on my part?
To reproduce this I only have to switch off my screen or change the input source while hyprlock is active.
Here's the log of hyprlock if that helps: https://gist.github.com/chmanie/3304191230287254d3fb6775edb21f5d
Regression?
No
System Info and Version
System/Version info
```sh Hyprland, built from branch at commit 9a09eac79b85c846e3a865a9078a3f8ff65a9259 (props: bump version to 0.42.0). Date: Wed Aug 7 19:17:10 2024 Tag: v0.42.0, commits: 5069 flags: (if any) System Information: System name: Linux Node name: turtle-penguin Release: 6.10.3-zen1-2-zen Version: #1 ZEN SMP PREEMPT_DYNAMIC Tue, 06 Aug 2024 07:47:21 +0000 GPU information: 03:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Navi 21 [Radeon RX 6800/6800 XT / 6900 XT] [1002:73bf] (rev c1) (prog-if 00 [VGA controller]) os-release: NAME="Arch Linux" PRETTY_NAME="Arch Linux" ID=arch BUILD_ID=rolling ANSI_COLOR="38;2;23;147;209" HOME_URL="https://archlinux.org/" DOCUMENTATION_URL="https://wiki.archlinux.org/" SUPPORT_URL="https://bbs.archlinux.org/" BUG_REPORT_URL="https://gitlab.archlinux.org/groups/archlinux/-/issues" PRIVACY_POLICY_URL="https://terms.archlinux.org/docs/privacy-policy/" LOGO=archlinux-logo plugins: ======Config-Start====== Config File: /home/kaden/.config/hypr/hyprland.conf: Read Succeeded ################ ### MONITORS ### ################ monitor = DP-1,3440x1440@144,0x1440,1 monitor = DP-2,2560x1440@144,440x0,1 ################### ### MY PROGRAMS ### ################### $terminal = kitty $fileManager = nautilus $menu = wofi --show drun -i --allow-images -a ################# ### AUTOSTART ### ################# exec-once = dbus-update-activation-environment DISPLAY XAUTHORITY WAYLAND_DISPLAY exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 exec-once = gnome-keyring-daemon --start --components=secrets #exec-once = ~/.config/hypr/scripts/idle.sh exec-once = pkill hypridle ; hypridle exec-once = pkill hyprpaper ; hyprpaper exec-once = waybar exec-once = mako exec-once = nm-applet exec-once = blueman-applet exec-once = xsettingsd exec-once = xrandr --output DP-1 --primary ############################# ### ENVIRONMENT VARIABLES ### ############################# env = XCURSOR_SIZE,24 env = HYPRCURSOR_SIZE,24 env = QT_QPA_PLATFORMTHEME,qt6ct ##################### ### LOOK AND FEEL ### ##################### general { gaps_in = 4 gaps_out = 8 border_size = 2 col.active_border = rgba(E0E0E0ff) col.inactive_border = rgba(272727ff) resize_on_border = false allow_tearing = false layout = dwindle } decoration { rounding = 10 active_opacity = 1.0 inactive_opacity = 1.0 drop_shadow = true shadow_range = 4 shadow_render_power = 3 col.shadow = rgba(1a1a1aee) blur { enabled = true size = 3 passes = 1 vibrancy = 0.1696 } } animations { enabled = true bezier = myBezier, 0.05, 0.9, 0.1, 1.05 animation = windows, 1, 7, myBezier animation = windowsOut, 1, 7, default, popin 80% animation = border, 1, 10, default animation = borderangle, 1, 8, default animation = fade, 1, 7, default animation = workspaces, 1, 6, default } dwindle { pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below preserve_split = true # You probably want this split_width_multiplier = 1.25 } master { new_status = master } misc { disable_hyprland_logo = true allow_session_lock_restore = true vrr = 2 #mouse_move_enables_dpms = true #key_press_enables_dpms = true } render { direct_scanout = true } ############# ### INPUT ### ############# input { kb_layout = us kb_variant = kb_model = kb_options = kb_rules = accel_profile = flat numlock_by_default = true follow_mouse = 1 sensitivity = 0 # -1.0 - 1.0, 0 means no modification. touchpad { natural_scroll = false } } gestures { workspace_swipe = false } #################### ### KEYBINDINGS ### #################### # Sets "Windows" key as main modifier $mainMod = SUPER # Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more bind = $mainMod, Return, exec, $terminal bind = $mainMod Shift, Q, killactive, bind = $mainMod Shift, E, exit, bind = $mainMod Shift, Space, togglefloating, bind = $mainMod, D, exec, $menu bind = $mainMod, P, pseudo, # dwindle bind = $mainMod, J, togglesplit, # dwindle bind = $mainMod, F, fullscreen, 0 # Move focus with mainMod + arrow keys bind = $mainMod, left, movefocus, l bind = $mainMod, right, movefocus, r bind = $mainMod, up, movefocus, u bind = $mainMod, down, movefocus, d # Switch workspaces with mainMod + [0-9] bind = $mainMod, 1, workspace, 1 bind = $mainMod, 2, workspace, 2 bind = $mainMod, 3, workspace, 3 bind = $mainMod, 4, workspace, 4 bind = $mainMod, 5, workspace, 5 bind = $mainMod, 6, workspace, 6 bind = $mainMod, 7, workspace, 7 bind = $mainMod, 8, workspace, 8 bind = $mainMod, 9, workspace, 9 bind = $mainMod, 0, workspace, 10 # Move active window to a workspace with mainMod + SHIFT + [0-9] bind = $mainMod SHIFT, 1, movetoworkspace, 1 bind = $mainMod SHIFT, 2, movetoworkspace, 2 bind = $mainMod SHIFT, 3, movetoworkspace, 3 bind = $mainMod SHIFT, 4, movetoworkspace, 4 bind = $mainMod SHIFT, 5, movetoworkspace, 5 bind = $mainMod SHIFT, 6, movetoworkspace, 6 bind = $mainMod SHIFT, 7, movetoworkspace, 7 bind = $mainMod SHIFT, 8, movetoworkspace, 8 bind = $mainMod SHIFT, 9, movetoworkspace, 9 bind = $mainMod SHIFT, 0, movetoworkspace, 10 # Move to nextprevious workspace on monitor bind = $mainMod Ctrl, right, workspace, r+1 bind = $mainMod Ctrl, left, workspace, r-1 bind = $mainMod Ctrl Shift, right, movetoworkspace, r+1 bind = $mainMod Ctrl Shift, left, movetoworkspace, r-1 # Example special workspace (scratchpad) bind = $mainMod, S, togglespecialworkspace, magic bind = $mainMod SHIFT, S, movetoworkspace, special:magic # Scroll through existing workspaces with mainMod + scroll bind = $mainMod, mouse_down, workspace, e+1 bind = $mainMod, mouse_up, workspace, e-1 # Move/resize windows with mainMod + LMB/RMB and dragging bindm = $mainMod, mouse:272, movewindow bindm = $mainMod, mouse:273, resizewindow # Lock bind = $mainMod, L, exec, loginctl lock-session # Screenshot bind = , Print, exec, grimblast --freeze save area - | satty -f - # Volume control bind = , XF86AudioMute, exec, amixer sset 'Master' toggle bind = , XF86AudioLowerVolume, exec, amixer sset 'Master' 5%- bind = , XF86AudioRaiseVolume, exec, amixer sset 'Master' 5%+ # Media keys bind = , XF86AudioPlay, exec, playerctl play-pause bind = , XF86AudioNext, exec, playerctl next bind = , XF86AudioPrev, exec, playerctl previous bind = , XF86AudioStop, exec, playerctl stop ############################## ### WINDOWS AND WORKSPACES ### ############################## windowrule = idleinhibit fullscreen,^(.*)$ windowrulev2 = suppressevent maximize, class:.* # You'll probably like this. windowrulev2 = float,class:(com.gabm.satty) # Default workspaces workspace = 1, monitor:DP-1, default:true, persistent:true workspace = 2, monitor:DP-2, default:true, persistent:true ======Config-End======== ```Description
When my idle daemon uses hyprlock or swaylock to lock my session then puts my monitors into displayport deep sleep using
hyprctl dispatch dpms off
OR I manually power off both my monitors I see a red screen of death when I wake or power my monitors back up. I've found that runningpkill -USR1 hyprlock
does not clear the red screen either. On prior release versions of hyprland it worked sometimes but I still would get red screens often, but not every time like on 0.42.0.How to reproduce
Crash reports, logs, images, videos
I don't see anything out of the ordinary in the hyprland logs after the red screen occurs.