hyprwm / Hyprland

Hyprland is an independent, highly customizable, dynamic tiling Wayland compositor that doesn't sacrifice on its looks.
https://hyprland.org
BSD 3-Clause "New" or "Revised" License
19.63k stars 829 forks source link

Hyprland git version crashes when focusing a monitor that was powered off and back on #7414

Open Cloudperry opened 3 weeks ago

Cloudperry commented 3 weeks ago

Regression?

Yes

System Info and Version

System/Version info ```sh Hyprland, built from branch main at commit 83d88fa56467a2b749fb2320e1595281107bd326 (hyprpm, hyprctl: update shell completions). Date: Mon Aug 19 00:21:59 2024 Tag: v0.42.0-42-g83d88fa5, commits: 5111 flags: (if any) System Information: System name: Linux Node name: roni-desktop Release: 6.10.5-2-cachyos-lto Version: #1 SMP PREEMPT_DYNAMIC Thu, 15 Aug 2024 07:47:43 +0000 GPU information: 0d:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Navi 21 [Radeon RX 6950 XT] [1002:73a5] (rev c0) (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/roni/.config/hypr/hyprland.conf: Read Succeeded source = ~/.config/hypr/startup.conf source = ~/.config/hypr/settings.conf source = ~/.config/hypr/input.conf source = ~/.config/hypr/rules.conf Config File: /home/roni/.config/hypr/startup.conf: Read Succeeded ################# ### AUTOSTART ### ################# # Hyprlock # exec-once = hyprlock # Hypridle exec-once = hypridle # Notification service exec-once = systemctl --user start swaync-without-graphical-target # Status bar exec-once = systemctl --user start ironbar # Wallpaper service exec-once = systemctl --user start hyprpaper # Polkit service exec-once = systemctl --user start lxqt-policykit-agent # Clipboard history daemon exec-once = systemctl --user start cliphist-text exec-once = systemctl --user start cliphist-image # Startup apps exec-once = discord & corectrl & blueman-applet ############################# ### ENVIRONMENT VARIABLES ### ############################# # See https://wiki.hyprland.org/Configuring/Environment-variables/ env = XCURSOR_SIZE,24 env = HYPRCURSOR_SIZE,24 #env = AQ_NO_ATOMIC,1 env = HYPRLAND_TRACE,1 env = AQ_TRACE,1 # Toolkit options env = GDK_BACKEND,wayland,x11,* env = QT_QPA_PLATFORM,wayland;xcb env = QT_QPA_PLATFORMTHEME,qt6ct env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1 # KDE apps fixes env = XDG_MENU_PREFIX,arch- Config File: /home/roni/.config/hypr/settings.conf: Read Succeeded ################ ### MONITORS ### ################ # See https://wiki.hyprland.org/Configuring/Monitors/ monitor = DP-3, 2560x1440@144, 1920x0, 1 monitor = HDMI-A-1, 1920x1080@60, 0x700, 1 ################### ### MY PROGRAMS ### ################### # See https://wiki.hyprland.org/Configuring/Keywords/ # Set programs that you use $terminal = alacritty $fileManager = dolphin $browser = firefox $textEditor = neovide $menu = wofi --show drun $menuExec = wofi --show run ##################### ### LOOK AND FEEL ### ##################### # Refer to https://wiki.hyprland.org/Configuring/Variables/ # https://wiki.hyprland.org/Configuring/Variables/#general general { gaps_in = 4 gaps_out = 8 border_size = 2 # https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg col.inactive_border = rgba(595959aa) # Set to true enable resizing windows by clicking and dragging on borders and gaps resize_on_border = false # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on allow_tearing = false layout = dwindle } # https://wiki.hyprland.org/Configuring/Variables/#decoration decoration { rounding = 6 # Change transparency of focused and unfocused windows active_opacity = 1.0 inactive_opacity = 1.0 drop_shadow = true shadow_range = 4 shadow_render_power = 3 col.shadow = rgba(1a1a1aee) # https://wiki.hyprland.org/Configuring/Variables/#blur blur { enabled = true size = 3 passes = 1 vibrancy = 0.1696 } } # https://wiki.hyprland.org/Configuring/Variables/#animations animations { enabled = true # Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more 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 } # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more dwindle { preserve_split = false no_gaps_when_only = 1 } # https://wiki.hyprland.org/Configuring/Variables/#misc misc { enable_swallow = true swallow_regex = .* initial_workspace_tracking = 0 # Special workspaces bug workaround force_default_wallpaper = 1 disable_hyprland_logo = true vrr = 2 } cursor { no_hardware_cursors = true no_break_fs_vrr = true min_refresh_rate = 48 } render { explicit_sync = 1 explicit_sync_kms = 0 direct_scanout = true } debug { disable_logs = false } Config File: /home/roni/.config/hypr/input.conf: Read Succeeded input { # Keyboard kb_layout = fi kb_variant = nodeadkeys repeat_rate = 20 repeat_delay = 200 # Mouse follow_mouse = 1 sensitivity = -0.78 # -1.0 - 1.0, 0 means no modification. accel_profile = flat touchpad { natural_scroll = false } } gestures { workspace_swipe = false } # See https://wiki.hyprland.org/Configuring/Keywords/ $mainMod = SUPER # Sets "Windows" key as main modifier # Binds, see https://wiki.hyprland.org/Configuring/Binds/ for more bind = $mainMod, Q, killactive, bind = $mainMod, Z, exec, loginctl terminate-session $XDG_SESSION_ID bind = $mainMod Control_L, F, togglefloating, bind = $mainMod, space, exec, $menu bind = $mainMod SHIFT, space, exec, $menuExec bind = $mainMod Control_L, T, togglesplit, # dwindle # Important apps bind = $mainMod, C, exec, $terminal bind = $mainMod, B, exec, start-in-workspaces -a=$browser bind = $mainMod, F, exec, $fileManager bind = $mainMod, E, exec, $textEditor # Move focus with mainMod + arrow keys bind = $mainMod, H, movefocus, l bind = $mainMod, S, movefocus, r bind = $mainMod, N, movefocus, u bind = $mainMod, T, movefocus, d # Move window with mainMod + arrow keys bind = $mainMod SHIFT, H, movewindow, l bind = $mainMod SHIFT, S, movewindow, r bind = $mainMod SHIFT, N, movewindow, u bind = $mainMod SHIFT, T, movewindow, d # Move window with mainMod + arrow keys #bind = $mainMod, Left, swapwindow, l #bind = $mainMod, Right, swapwindow, r #bind = $mainMod, Up, swapwindow, u #bind = $mainMod, Down, swapwindow, d # Switch workspaces with mainMod + [0-9] bind = $mainMod, Down, workspace, r+1 bind = $mainMod, Up, workspace, r-1 bind = $mainMod, Left, focusmonitor, l bind = $mainMod, Right, focusmonitor, r # Move active window to a workspace with mainMod + SHIFT + [0-9] bind = $mainMod SHIFT, Down, movetoworkspace, r+1 bind = $mainMod SHIFT, Up, movetoworkspace, r-1 # Special workspaces bind = $mainMod, M, togglespecialworkspace, music bind = $mainMod SHIFT, C, togglespecialworkspace, terminal bind = $mainMod, G, togglespecialworkspace, fullscreenGame # 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 # Clipboard history bind = $mainMod, V, exec, cliphist list | wofi --show dmenu | cliphist decode | wl-copy # Screenshotting bind = $mainMod, Print, exec, grim -o DP-3 bind = $mainMod SHIFT, Print, exec, grim -g "$(slurp)" bind = $mainMod CTRL, Print, exec, grim # Media keys bindel = , XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+ bindel = , XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- bindl = , XF86AudioPlay, exec, playerctl play-pause bindl = , XF86AudioStop, exec, playerctl stop bindl = , XF86AudioNext, exec, playerctl next bindl = , XF86AudioPrev, exec, playerctl previous bindl = Control_L, XF86AudioNext, exec, playerctl position 5+ bindl = Control_L, XF86AudioPrev, exec, playerctl position 5- bindel = Control_L, XF86AudioRaiseVolume, exec, playerctl volume 0.05+ bindel = Control_L, XF86AudioLowerVolume, exec, playerctl volume 0.05- # Wallpaper switching bind = $mainMod, W, exec, hyprctl hyprpaper preload /home/roni/Pictures/Wallpapers/hyprland-current-background.png bind = $mainMod, W, exec, hyprctl hyprpaper wallpaper /home/roni/Pictures/Wallpapers/hyprland-current-background.png bind = $mainMod, W, exec, hyprctl hyprpaper unload unused Config File: /home/roni/.config/hypr/rules.conf: Read Succeeded # See https://wiki.hyprland.org/Configuring/Window-Rules/ for more # See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules # Example windowrule v1 # windowrule = float, ^(kitty)$ # Example windowrule v2 # windowrulev2 = float,class:^(kitty)$,title:^(kitty)$ $high = 0.88 0.88 $medium = 0.91 0.91 $subtle = 0.94 0.94 $minimal = 0.97 0.97 windowrulev2 = suppressevent maximize,class:.* windowrulev2 = workspace special:fullscreenGame, class:steam_app_[0-9]+, fullscreen:1 windowrulev2 = immediate, class:.* windowrulev2 = opacity $minimal, class:^(neovide)$ windowrulev2 = opacity $subtle, class:^(Alacritty)$ windowrulev2 = opacity $subtle, class:^(org.kde.dolphin)$ windowrulev2 = opacity $minimal, class:^(discord)$ windowrulev2 = opacity 1.0 1.0, fullscreen:1 workspace = r[1-6], persistent:true workspace = 1, monitor:DP-3, default:true workspace = r[1-3], monitor:DP-3 workspace = 4, monitor:HDMI-A-1, default:true workspace = r[4-6], monitor:HDMI-A-1 workspace = special:music, on-created-empty:deadbeef workspace = special:terminal, on-created-empty:$terminal workspace = special:fullscreenGame animation = workspaces,1,4,default,slidefadevert windowrulev2 = workspace 4 silent, class:^(discord)$ ======Config-End======== ```

Description

Hyprland crashes when focusing a monitor that was just powered off and back on if cursor:no_break_fs_vrr is on.

How to reproduce with two monitors

  1. Set cursor:no_break_fs_vrr = true and cursor:no_hardware_cursors = true
  2. Start Hyprland with two monitors on
  3. Unplug a monitor and plug it back in
  4. Switch focus to the monitor that was just turned on (using keybind or mouse) and Hyprland crashes

How to reproduce with one monitor

  1. Set cursor:no_break_fs_vrr = true and cursor:no_hardware_cursors = true
  2. Start Hyprland with the monitor on
  3. Unplug the monitor
  4. Plug the monitor back in and Hyprland crashes

Crash reports, logs, images, videos

hyprlandCrashReport3885.txt

Edit:

The crash happens instantly after powering on the monitor, if it was off when starting Hyprland. Was a different crash that got fixed.

vaxerski commented 3 weeks ago

can you get a debug stacktrace from git https://wiki.hyprland.org/Crashes-and-Bugs/#obtaining-a-debug-stacktrace

Cloudperry commented 3 weeks ago

hyprlandCrashReport69625.txt

Thats a log from a debug build of Hyprland, but I can't get the stacktrace instructions to work, because the coredumpctl command just prints No match found.

Edit: Trying a normal debug build of Hyprland next... Maybe debug building by editing the AUR pkgbuild does something weird.

Edit2: Still can't get coredumpctl to find any coredumps after cloning the git repo and building from it.

Cloudperry commented 3 weeks ago

Got a full backtrace by using gdb over ssh.

gdb.txt

vaxerski commented 3 weeks ago

broken pipe is non-fatal, but the crash report is good enough, thanks

vaxerski commented 3 weeks ago

try now

Cloudperry commented 3 weeks ago

Still crashing. I think I had 2 different crashes while getting the backtrace. One where it crashed instantly when powering the monitor back on and one after changing focus to the monitor. I'm trying to get a backtrace of the focus switching crash now using the latest version.

Cloudperry commented 3 weeks ago

Now I got a backtrace for the focus switching crash. This time I didn't get a SIGPIPE and triggered a crash by moving focus with focusmonitor.

vaxerski commented 3 weeks ago

hm, I thought I fixed that. Are you sure you're on the git version?

Cloudperry commented 3 weeks ago

Yeah you did fix the crash that happened in my first backtrace, but it was a different crash (just turning monitor off and on). I updated the reproduction steps and added a backtrace of the crash that this issue report was supposed to be about. When creating the issue I didn't know that it was caused by cursor:no_break_fs_vrr.

Edit: cursor:no_break_fs_vrr in general is quite crashy after Aquamarine merge. For example toggling it on after starting the session can cause crashes.

vaxerski commented 2 weeks ago

does it still happen on latest hl-git + aq-git?

Cloudperry commented 2 weeks ago

Yeah its still crashing with git Aquamarine and Hyprland. Had to check out commit 242e06b24212b61e7afbdf5cf4adae8886a28abd, because Hyprland git is not building.

vaxerski commented 2 weeks ago

eeeee it is building on my end. Is the stacktrace still the same?

Cloudperry commented 2 weeks ago

Yeah its building now. Not sure if it was failing to build with some specific commit or maybe I had too old hyprwayland-scanner or deps. Checking the stack trace soon.

Cloudperry commented 2 weeks ago

Still same stack trace (same stack height or number of entries). Posting a new stack trace soon, because the earlier stack trace had quite a lot of entries without debug info.

Edit: Here's a better stack trace.

vaxerski commented 2 weeks ago

patch.txt odd, how about this hl patch?

vaxerski commented 2 weeks ago

also try latest aq-git from rn

Cloudperry commented 2 weeks ago

Hyprland is crashing at start with Aquamarine git since commit https://github.com/hyprwm/aquamarine/commit/865cd94f97d1a6f0bb3391dc40ce4608e50d7acd. Also tried the patch with a Aquamarine version from yesterday and it didn't change anything.

vaxerski commented 2 weeks ago

see https://github.com/hyprwm/aquamarine/issues/70

I need a debug stacktrace cuz I cant repro

Cloudperry commented 2 weeks ago

Still same stack trace (same stack height or number of entries). Posting a new stack trace soon, because the earlier stack trace had quite a lot of entries without debug info.

Edit: Here's a better stack trace.

Is that debug stack trace okay? I checked the stack trace using patch.txt as well, but it was basically identical (38 stack entries instead of 36). Also I updated the reproduction steps to be more specific.

I can't reproduce the crash that was happening with that Aquamarine commit I mentioned and idk what was happening there.

vaxerski commented 1 week ago

ye that stack trace was for this issue, I meant for the insta crash after aq update