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.54k stars 821 forks source link

Deadlock on some windowrule regex #5446

Open abkein opened 5 months ago

abkein commented 5 months ago

Hyprland Version

System/Version info ```sh Hyprland, built from branch HEAD at commit 3875679755014997776e091ff8903acfb311dd2f (props: bump ver to 0.38.0). Date: Mon Apr 1 18:30:37 2024 Tag: v0.38.0 flags: (if any) System Information: System name: Linux Node name: aleaf Release: 6.8.2-arch2-1 Version: #1 SMP PREEMPT_DYNAMIC Thu, 28 Mar 2024 17:06:35 +0000 GPU information: 04:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Phoenix1 [1002:15bf] (rev c7) (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: ```

Bug or Regression?

Bug

Description

I added windowrulev2 = float, title:.?+Properties$ and got deadlock. No response, cannot switch to another tty.

With rule present, Hyprland starts ok, it is possible to open kitty, but nano ~/config/hypr/hyprland.conf locks everything again. Same with firefox and other apps, opening those locks the system.

Removing rule helps.

How to reproduce

Add windowrulev2 = float, title:.?+Properties$ to hyptland.conf, then try to open some app.

Crash reports, logs, images, videos

Strange, but no crash reports are present. Logs are in /tmp, so after rebooting there are no logs.

vaxerski commented 5 months ago

wtf is .?+?

abkein commented 5 months ago

wtf is .?+?

. - any charater, ? - zero or one, + - one or more, so .?+ is zero or more of any charater.

Sometimes windows are named d697e424-1e9e-42e8-b17b-66867d7d3a3f1 Properties (in my case it is mount point named with UUID of disk) or some/folder/subfolder Properties, so....

I understand, the regex is unclear itself, but imho crappy regexes shouldn't cause WM to enter infinite loops or whatever it does

justanoobcoder commented 5 months ago

. - any charater, ? - zero or one, + - one or more, so .?+ is zero or more of any charater.

If you want zero or more of any character, you should use .* instead. I don't think regex work like that. You can go to https://regexr.com/, paste your regex there, it even says ERROR: Invalid targer for quantifier and it doesn't even matches strings like d697e424-1e9e-42e8-b17b-66867d7d3a3f1 Properties or some/folder/subfolder Properties as you wish.