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

Segfault caused by multiple connections to the same monitor #7565

Open Smona opened 2 weeks ago

Smona commented 2 weeks ago

Regression?

No

System Info and Version

System/Version info ```sh Hyprland, built from branch main at commit 9a09eac79b85c846e3a865a9078a3f8ff65a9259 (props: bump version to 0.42.0). Date: 2024-08-07 Tag: v0.42.0, commits: 9a09eac79b85c846e3a865a9078a3f8ff65a9259 flags: (if any) System Information: System name: Linux Node name: luma Release: 6.6.47 Version: #1-NixOS SMP PREEMPT_DYNAMIC Mon Aug 19 04:04:32 UTC 2024 GPU information: 0b:00.0 VGA compatible controller [0300]: NVIDIA Corporation TU106 [GeForce RTX 2070 Rev. A] [10de:1f07] (rev a1) (prog-if 00 [VGA controller]) NVRM version: NVIDIA UNIX x86_64 Kernel Module 550.107.02 Wed Jul 24 23:53:00 UTC 2024 os-release: ANSI_COLOR="1;34" BUG_REPORT_URL="https://github.com/NixOS/nixpkgs/issues" BUILD_ID="24.11.20240821.c374d94" 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" plugins: ======Config-Start====== Config File: /home/mel/.config/hypr/hyprland.conf: Read Succeeded exec-once = /nix/store/sb8wn0zw1mk1g4mny8mqmn9h8q0ldvjj-dbus-1.14.10/bin/dbus-update-activation-environment --systemd DISPLAY HYPRLAND_INSTANCE_SIGNATURE WAYLAND_DISPLAY XDG_CURRENT_DESKTOP && systemctl --user stop hyprland-session.target && systemctl --user start hyprland-session.target monitor=,preferred,auto,1 # auto-configure new monitors monitor=Unknown-1, disable # Disable ghost dock monitor monitor=DP-3, preferred, auto, 1.25 # Main monitor monitor=DP-2, preferred, auto-left, 1, transform, 1 # Vertical monitor workspace = 1,monitor:DP-3 xwayland:force_zero_scaling = yes misc:disable_hyprland_logo = yes exec-once=dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP exec-once=systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP exec-once=hyprctl setcursor Dracula-cursors 24 exec-once=squeekboard exec-once=tablet_mode_switch exec-once=gammastep-indicator -t 6500K:3800K exec-once=swaync exec-once=/nix/store/ki8ch1pigsfsaxpwv5si5017l6f9nvlh-pantheon-agent-polkit-8.0.0/libexec/policykit-1-pantheon/io.elementary.desktop.agent-polkit exec-once=wpctl set-volume 43 50% exec=swaybg -i /nix/store/0zlvylanq3sgpvzbml0p2v563p1mx6qy-vibrant-paint-streaks.jpg -m fill bind=SUPER,C,killactive, bind=SUPER,M,exit, input { kb_file= kb_layout=us,us kb_variant=dvorak, kb_options=grp:win_space_toggle kb_model= kb_options=terminate:ctrl_alt_bksp,lv3:ralt_switch,caps:swapescape,grp:win_space_toggle kb_rules= repeat_rate = 20 repeat_delay = 400 follow_mouse=1 natural_scroll=yes touchpad { natural_scroll=yes # press down 2 fingers for right click, 3 for middle # https://wayland.freedesktop.org/libinput/doc/latest/clickpad-softbuttons.html#clickfinger-behavior clickfinger_behavior=yes } accel_profile = adaptive sensitivity = 0.6 } general { gaps_in=5 gaps_out=5 border_size=2 resize_on_border = yes col.active_border=rgba(8130d9ff) col.inactive_border=rgba(333333cc) apply_sens_to_raw=0 # whether to apply the sensitivity to raw input (e.g. used by games where you aim using your mouse) } decoration { rounding=10 blur { passes=2 # minimum 1 size=5 # minimum 1 } drop_shadow = yes shadow_range = 4 shadow_render_power = 3 col.shadow = 0xee1a1a1a } animations { enabled=1 animation=windows,1,7,default animation=border,1,10,default animation=fade,1,10,default animation=workspaces,1,6,default } dwindle { pseudotile=0 # enable pseudotiling on dwindle no_gaps_when_only = no preserve_split = yes } gestures { workspace_swipe=yes } misc { # Allow windows to steal focus focus_on_activate = yes enable_swallow = yes swallow_regex = (kitty) # Sorry, hypr-chan... disable_hyprland_logo = yes } layerrule = blur,waybar layerrule = ignorezero,waybar layerrule = blur,rofi layerrule = ignorezero,rofi layerrule = blur,swaync-control-center windowrule=tile,class:^(Spotify)$ windowrule=noblur,title:(Quick Access — 1Password) # Float windows windowrule=float,1Password # windowrule=size 20% 20%,title:(Extension: \(fx_cast\)) # windowrule=center,title:(Extension: \(fx_cast\)) windowrule=float,title:^(flameshot)$ # Firefox PIP floating window windowrule=float,title:^(Picture-in-Picture)$ windowrule=pin,title:^(Picture-in-Picture)$ windowrule=size 22% 20%,title:^(Picture-in-Picture)$ windowrule=move 78% 77%,title:^(Picture-in-Picture)$ # some nice mouse binds bindm=SUPER,mouse:272,movewindow bindm=SUPER,mouse:273,resizewindow # Key binds bind=SHIFT_SUPER,e,exec,wlogout bind=SUPER,End,exec,/nix/store/hia0rii3rxh6fgiq6r6fcwqlsz203nj6-pause; hyprlock bind=ALT,space,exec,rofi -show combi -combi-modes 'drun,ssh,run' -show-icons bind=SUPER,period,exec,exec rofimoji --skin-tone light bind=ALT,tab,exec,rofi -show window -show-icons bind=SUPER,n,exec,swaync-client -t bind=CTRL_SHIFT,space,exec,1password --quick-access bind=SUPER,e,exec,nautilus bind=SUPER,b,exec,firefox bind=SUPER,t,exec,kitty bind=,Print,exec,grimshot --notify copy area binde=,XF86MonBrightnessUp,exec,/nix/store/qz842yfqkbhs4amqnnmykz2kz3irqf7i-brighter binde=,XF86MonBrightnessDown,exec,/nix/store/vk3mcygnn6xdi83b48i6r37d9l2dvwyr-darker bind=SUPER,XF86AudioLowerVolume,exec,/nix/store/9l9b5m4z3cfy5nnx2l13jxlrgdkgmz3j-playerctl-2.4.1/bin/playerctl position 5- bind=SUPER,XF86AudioRaiseVolume,exec,/nix/store/9l9b5m4z3cfy5nnx2l13jxlrgdkgmz3j-playerctl-2.4.1/bin/playerctl position 5+ bind=ALT,XF86AudioLowerVolume,exec,/nix/store/1yjyah8qyc1746wl4p821473gf6gfzhg-prev bind=ALT,XF86AudioRaiseVolume,exec,/nix/store/6pj9a580ynx62lnnvhxcwlyl4fkcqcf4-next binde=CTRL,XF86AudioLowerVolume,exec,/nix/store/9l9b5m4z3cfy5nnx2l13jxlrgdkgmz3j-playerctl-2.4.1/bin/playerctl volume 0.02- binde=CTRL,XF86AudioRaiseVolume,exec,/nix/store/9l9b5m4z3cfy5nnx2l13jxlrgdkgmz3j-playerctl-2.4.1/bin/playerctl volume 0.02+ binde=,XF86AudioLowerVolume,exec,/nix/store/gbxfilay7ghq8ydlyq8mk044d39zrpx5-softer binde=,XF86AudioRaiseVolume,exec,/nix/store/dld9068v18mk40i4n0bq91igfvg12wh1-louder bind=,XF86AudioMute,exec,/nix/store/0pcca8ybapkqp5d7v5dqh68cy14c3259-mute bind=,XF86AudioPlay,exec,/nix/store/l2ia9g4s3sinpgwskgs3ir1rb5vw20v4-play bind=,XF86AudioPrev,exec,/nix/store/1yjyah8qyc1746wl4p821473gf6gfzhg-prev bind=,XF86AudioNext,exec,/nix/store/6pj9a580ynx62lnnvhxcwlyl4fkcqcf4-next bind=SUPER,V,togglefloating, bind=SUPER,F,fullscreen bind=SUPER,P,pseudo, bind=SUPER,A,togglesplit, bind=SUPER_SHIFT,Q,killactive, bind=SUPER,H,movefocus,l bind=SUPER,L,movefocus,r bind=SUPER,K,movefocus,u bind=SUPER,J,movefocus,d bind=SUPER_SHIFT,H,movewindow,l bind=SUPER_SHIFT,L,movewindow,r bind=SUPER_SHIFT,K,movewindow,u bind=SUPER_SHIFT,J,movewindow,d binde=SUPER,H,resizeactive,-10 0 binde=SUPER,L,resizeactive,10 0 binde=SUPER,J,resizeactive,0 10 binde=SUPER,K,resizeactive,0 -10 bind=SUPER,1,workspace,1 bind=SUPER,2,workspace,2 bind=SUPER,3,workspace,3 bind=SUPER,4,workspace,4 bind=SUPER,5,workspace,5 bind=SUPER,6,workspace,6 bind=SUPER,7,workspace,7 bind=SUPER,8,workspace,8 bind=SUPER,9,workspace,9 bind=SUPER,0,workspace,10 bind=SUPER_SHIFT,1,movetoworkspace,1 bind=SUPER_SHIFT,2,movetoworkspace,2 bind=SUPER_SHIFT,3,movetoworkspace,3 bind=SUPER_SHIFT,4,movetoworkspace,4 bind=SUPER_SHIFT,5,movetoworkspace,5 bind=SUPER_SHIFT,6,movetoworkspace,6 bind=SUPER_SHIFT,7,movetoworkspace,7 bind=SUPER_SHIFT,8,movetoworkspace,8 bind=SUPER_SHIFT,9,movetoworkspace,9 bind=SUPER_SHIFT,0,movetoworkspace,10 bind=SUPER,mouse_down,workspace,e+1 bind=SUPER,mouse_up,workspace,e-1 ======Config-End======== ```

Description

I recently set up hyprland on a desktop, and started coming back to a crashed hyprland session every morning, after leaving it hyprlocked with displays blanked overnight. The setup is slightly cursed, with the desktop plugged into a USB-C dock I switch between it and laptops i occasionally dock. The GPU is plugged in straight to the main monitor, but the monitor is also separately plugged in to the dock, so that laptops can use it. This means that the monitor is plugged in to the desktop twice, but i only use the direct GPU connection.

This secondary connection was identified as Unknown-1, and i noticed some logs about it shortly before the segfault. I tried disabling that monitor (so that only one copy of the monitor is enabled), and I haven't experienced the crash in two days since! So my best guess is that this bug might be triggered by the same monitor being plugged in twice. Certainly an edge case, and probably low priority, but for less technical users it would be good if this case was handled more gracefully.

Love the cute crash report messages btw!

How to reproduce

It might be difficult to reproduce, but you could try leaving a hyprland session open overnight on a computer plugged into the same monitor twice, with hyprlock active and dpms blanked. In order to truly reproduce you would need the second connection to run through a USB-C dock, plugged into the USB-C port on the GPU... hopefully the stacktrace is enough to figure it out lol

Crash reports, logs, images, videos

hyprlandCrashReport2098.txt

vaxerski commented 2 weeks ago

this should be fixed with aquamarine-git and hyprland-git

Azarattum commented 2 weeks ago

Thanks! I was also affected by this. Disabling the "Unknown-1" monitor has solved the issue for now.