Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Crash after plugging in USB graphics tablet multiple times #6836

Closed
lesbianlizard opened this issue Feb 16, 2022 · 4 comments · Fixed by #6866
Closed

Crash after plugging in USB graphics tablet multiple times #6836

lesbianlizard opened this issue Feb 16, 2022 · 4 comments · Fixed by #6866
Labels
bug Not working as intended

Comments

@lesbianlizard
Copy link

lesbianlizard commented Feb 16, 2022

  • Sway Version:
    sway version 1.8-dev-f707f583 (Feb 13 2022, branch 'master')

  • Debug Log:
    Because I had sway running for almost 2 days before the crash, my debug log is 50MB. gist.github.com timed out trying to upload it. I uploaded a compressed version of it in the message below.

  • Configuration File:

This is the config file I'm using. Because of how long it takes to reproduce this bug, I didn't try to reproduce with the default config yet.

configuration file:
# Default config for sway
#
# Copy this to ~/.config/sway/config and edit it to your liking.
#
# Read `man 5 sway` for a complete reference.

xwayland enable


### Variables
#
# Logo key. Use Mod1 for Alt.
set $mod Mod4
#set $mod Mod1
## Home row direction keys, like vim
#set $left h
#set $down j
#set $up k
#set $right l

set $left  l
set $down  j
set $up    k
#semicolon. Why doesn't it work with bindsym?
set $right semicolon
# Your preferred terminal emulator
set $term alacritty
# Your preferred application launcher
# Note: pass the final command to swaymsg so that the resulting window can be opened
# on the original workspace that the command was run on.
#set $menu dmenu_path | dmenu | xargs swaymsg exec --
set $menu wofi --show drun | xargs swaymsg exec --

### Output configuration
#
# Default wallpaper (more resolutions are available in /usr/share/backgrounds/sway/)
#output * bg /usr/share/backgrounds/sway/Sway_Wallpaper_Blue_1920x1080.png fill
#
# Example configuration:
#
#   output HDMI-A-1 resolution 1920x1080 position 1920,0
#
# You can get the names of your outputs by running: swaymsg -t get_outputs

### Idle configuration
#
# Example configuration:
#
# exec swayidle -w \
#          timeout 300 'swaylock -f -c 000000' \
#          timeout 600 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on"' \
#          before-sleep 'swaylock -f -c 000000'
#
# This will lock your screen after 300 seconds of inactivity, then turn off
# your displays after another 300 seconds, and turn your screens back on when
# resumed. It will also lock your screen before your computer goes to sleep.

### Input configuration
#
# Example configuration:
#
#   input "2:14:SynPS/2_Synaptics_TouchPad" {
#       dwt enabled
#       middle_emulation enabled
#   }
#
# You can get the names of your inputs by running: swaymsg -t get_inputs
# Read `man 5 sway-input` for more information about this section.
set $screen_left "Acer Technologies V193W LHV0D161851A"
set $screen_center "Unknown  0x00000000"
set $screen_right "Acer Technologies S211HL LP30D0028511"
set $tablet_h610 "9580:110:HID_256c:006e_Pen"

output $screen_left    pos 0 540
output $screen_center  pos 1440 0
output $screen_right   pos 4000 360

bindsym $mod+Alt+1 output $screen_left dpms toggle
bindsym $mod+Alt+2 output $screen_center dpms toggle
bindsym $mod+Alt+3 output $screen_right dpms toggle

bindsym $mod+Alt+Shift+1 input $tablet_h610 map_to_output $screen_left
bindsym $mod+Alt+Shift+2 input $tablet_h610 map_to_output $screen_center
bindsym $mod+Alt+Shift+3 input $tablet_h610 map_to_output $screen_right


#input 1386:20827:Wacom_Pen_and_multitouch_sensor_Finger map_to_region 1920 1440 1920 1080
#input 1386:20827:Wacom_Pen_and_multitouch_sensor_Pen    map_to_region 1920 1440 1920 1080

input $tablet_h610 map_to_output $screen_center 
input $tablet_h610 map_from_region 0.0x0.05070754716981132 1x0.9492924528301887


input * xkb_layout "us,us,gr"
input * xkb_variant ",rus,"
#input * xkb_options "grp:sclk_toggle,compose:ralt,caps:escape"
input * xkb_options "grp:shifts_toggle,compose:ralt,caps:escape"

#manual autostart nonsense
#exec nm-applet --indicator
exec wl-paste -t text --watch clipman store 1>> ~/clipman.log 2>&1 &
exec fnott &
exec fcitx5 -d
bindsym $mod+Shift+f exec fcitx5 -d --replace

#autostart some desktop files
#exec dex -a -s ~/.config/sway/autostart


bindsym Print         exec ~/.config/sway/screenshot.zsh window
bindsym Control+Print exec ~/.config/sway/screenshot.zsh select
bindsym Shift+Print   exec ~/.config/sway/screenshot.zsh all 


tiling_drag disable

### Key bindings
#
# Basics:
#
    # Start a terminal
    bindsym $mod+Return exec $term

    # Kill focused window
    bindsym $mod+Shift+q kill

    # Start your launcher
    bindsym $mod+d exec $menu

    # Drag floating windows by holding down $mod and left mouse button.
    # Resize them with right mouse button + $mod.
    # Despite the name, also works for non-floating windows.
    # Change normal to inverse to use left mouse button for resizing and right
    # mouse button for dragging.
    floating_modifier $mod normal

    # Reload the configuration file
    bindsym $mod+Shift+c reload

    # Exit sway (logs you out of your Wayland session)
    bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -b 'Yes, exit sway' 'swaymsg exit'
#
# Moving around:
#
    # Move your focus around
    bindsym $mod+$left focus left
    bindsym $mod+$down focus down
    bindsym $mod+$up focus up
    bindsym $mod+$right focus right
    
    # Move your focus around
    bindsym $mod+Alt+$left focus output left
    bindsym $mod+Alt+$down focus output down
    bindsym $mod+Alt+$up focus output up
    bindsym $mod+Alt+$right focus output right

    # Move the focused window with the same, but add Shift
    bindsym $mod+Shift+$left move left
    bindsym $mod+Shift+$down move down
    bindsym $mod+Shift+$up move up
    bindsym $mod+Shift+$right move right
#
# Workspaces:
#, but let me know i
set $ws1 "anki"
set $ws2 "dictionary"
set $ws3 "3"
set $ws4 "4"
set $ws5 "5"
set $ws6 "6"
set $ws7 "7"
set $ws8 "8"
set $ws9 "9"
set $ws10 "10"


set $ws_terminal_main "terminal"
set $ws_games "games"
set $ws_messaging "messaging"
set $ws_firefox "firefox-1"
set $ws_video "firefox-2"
set $ws_obs "obs"
set $ws_zoom "zoom"

# switch to workspace
bindsym $mod+F1 workspace $ws1
bindsym $mod+F2 workspace $ws2
bindsym $mod+F3 workspace $ws3
bindsym $mod+F4 workspace $ws4
bindsym $mod+F5 workspace $ws5
bindsym $mod+F6 workspace $ws6
bindsym $mod+F7 workspace $ws7
bindsym $mod+F8 workspace $ws8
bindsym $mod+F9 workspace $ws9
bindsym $mod+F10 workspace $ws10

bindsym $mod+0 workspace $ws_terminal_main

bindsym $mod+1 workspace $ws_games
bindsym $mod+2 workspace $ws_messaging
bindsym $mod+3 workspace $ws_firefox
bindsym $mod+4 workspace $ws_video
bindsym $mod+5 workspace $ws_obs
bindsym $mod+6 workspace $ws_zoom

# move focused container to workspace
bindsym $mod+Shift+F1 move container to workspace $ws1
bindsym $mod+Shift+F2 move container to workspace $ws2
bindsym $mod+Shift+F3 move container to workspace $ws3
bindsym $mod+Shift+F4 move container to workspace $ws4
bindsym $mod+Shift+F5 move container to workspace $ws5
bindsym $mod+Shift+F6 move container to workspace $ws6
bindsym $mod+Shift+F7 move container to workspace $ws7
bindsym $mod+Shift+F8 move container to workspace $ws8
bindsym $mod+Shift+F9 move container to workspace $ws9
bindsym $mod+Shift+F10 move container to workspace $ws10

bindsym $mod+Shift+0 move container to workspace $ws_terminal_main

bindsym $mod+Shift+1 move container to workspace $ws_games
bindsym $mod+Shift+2 move container to workspace $ws_messaging
bindsym $mod+Shift+3 move container to workspace $ws_firefox
bindsym $mod+Shift+4 move container to workspace $ws_video
bindsym $mod+Shift+5 move container to workspace $ws_obs
bindsym $mod+Shift+6 move container to workspace $ws_zoom

bindsym $mod+x move workspace to output right
bindsym $mod+z move workspace to output left
bindsym $mod+Shift+x move workspace to output up
bindsym $mod+Shift+z move workspace to output down
#
# Layout stuff:
#
workspace_layout tabbed
    # You can "split" the current object of your focus with
    # $mod+b or $mod+v, for horizontal and vertical splits
    # respectively.
    bindsym $mod+v splith
    bindsym $mod+b splitv

    # Switch the current container between different layout styles
    bindsym $mod+s layout stacking
    bindsym $mod+w layout tabbed
    bindsym $mod+e layout toggle split

    # Make the current focus fullscreen
    bindsym $mod+f fullscreen

    # Toggle the current focus between tiling and floating mode
    bindsym $mod+Shift+space floating toggle

    # Swap focus between the tiling area and the floating area
    bindsym $mod+space focus mode_toggle

    # Move focus to the parent container
    bindsym $mod+a focus parent
#
# Scratchpad:
#
    # Sway has a "scratchpad", which is a bag of holding for windows.
    # You can send windows there and get them back later.

    # Move the currently focused window to the scratchpad
    bindsym $mod+Shift+minus move scratchpad

    # Show the next scratchpad window or hide the focused scratchpad window.
    # If there are multiple scratchpad windows, this command cycles through them.
    bindsym $mod+minus scratchpad show
#
# Resizing containers:
#
mode "resize" {
    # left will shrink the containers width
    # right will grow the containers width
    # up will shrink the containers height
    # down will grow the containers height
    bindsym $left resize shrink width 10px
    bindsym $down resize grow height 10px
    bindsym $up resize shrink height 10px
    bindsym $right resize grow width 10px

    # Ditto, with arrow keys
    bindsym Left resize shrink width 10px
    bindsym Down resize grow height 10px
    bindsym Up resize shrink height 10px
    bindsym Right resize grow width 10px

    # Return to default mode
    bindsym Return mode "default"
    bindsym Escape mode "default"
}
bindsym $mod+r mode "resize"

#
# Status Bar:
#
# Read `man 5 sway-bar` for more information about this section.
bar {
    position bottom 

    # When the status_command prints a new line to stdout, swaybar updates.
    # The default just shows the current date and time.
    #status_command while date +'%Y-%m-%d %l:%M:%S %p'; do sleep 1; done
    #status_command while true ; do acpi | grep Battery\ 0 | awk '{print $4;}' | sed s/,// ; date +'%Y-%m-%d %l:%M:%S %p'; sleep 1; done
    #status_command while true ; do batt_pct=$(acpi | grep Battery\ 0 | awk \{print\ \$4\;\} | sed s/,//) ; datestr=$(date +'%Y-%m-%d %l:%M:%S %p'); echo -n $batt_pct \ \|\  $datestr ; sleep 1; done
    status_command zsh ~/.config/sway/status_command.zsh

    colors {
        statusline #ffffff
        background #323232
        inactive_workspace #32323200 #32323200 #5c5c5c
    }
}

include /etc/sway/config.d/*

#somehow this detects Xwayland windows?
for_window [shell=".*"] title_format "%title :: %shell"

assign [class="KSP.x86_64"] $ws_games
assign [class="Steam"] $ws_games
assign [class="superhexagon.x86_64"] $ws_games
assign [class="steam_proton"] $ws_games
assign [class="fallout76.exe"] $ws_games 
assign [class="zoom"] $ws_zoom

assign [app_id="anki"] $ws1
for_window [app_id="anki" title="Statistiques"] floating disable
assign [app_id="discord"] $ws_messaging
assign [class="ksysguard"] $ws_messaging
assign [app_id="thunderbird"] $ws_firefox
assign [app_id="org.keepassxc.KeePassXC"] $ws_firefox
assign [app_id="com.valvesoftware.steamlink"] $ws_games

for_window [title="^\[ff_main.*\].*"] move container to workspace $ws_firefox
for_window [title="^\[ff_tmp.*\].*"] move container to workspace $ws_firefox
for_window [title="^\[ff_video.*\].*"] move container to workspace $ws_video
for_window [title="^\[ff_dict.*\].*"] move container to workspace $ws2
for_window [title="^\[ff_anki.*\].*"] move container to workspace $ws1

for_window [class="fallout76.exe"] fullscreen enable
for_window [class="gta5.exe"] fullscreen enable
for_window [title="Elite - Dangerous (CLIENT)"] fullscreen enable
for_window [class="falloutnv.exe"] fullscreen enable
#for_window [class="superhexagon.x86_64"] fullscreen enable
assign [title="sort of a glxgears clone"] $ws_firefox
for_window [title="sort of a glxgears clone"] fullscreen enable
assign [title="not really a glxgears clone anymore"] $ws_firefox
for_window [title="not really a glxgears clone anymore"] fullscreen enable
for_window [class="com-sun-electric-Launcher" title="Properties"] floating enable
  • Stack Trace:
stack trace:

reedrs@arch-aorus ~ % coredumpctl gdb sway
           PID: 913399 (sway)
           UID: 1000 (reedrs)
           GID: 1000 (reedrs)
        Signal: 11 (SEGV)
     Timestamp: Wed 2022-02-16 02:44:02 CST (1min 38s ago)
  Command Line: sway -d -c /home/reedrs/.config/sway/config
    Executable: /usr/bin/sway
 Control Group: /user.slice/user-1000.slice/session-1.scope
          Unit: session-1.scope
         Slice: user-1000.slice
       Session: 1
     Owner UID: 1000 (reedrs)
       Boot ID: 42d721ccccda4146aaaab89b9d82c92a
    Machine ID: 8e653d2efe5f4f0b8dddf5c5442848e2
      Hostname: arch-aorus
       Storage: /var/lib/systemd/coredump/core.sway.1000.42d721ccccda4146aaaab89b9d82c92a.913399.1645001042000000.zst (present)
     Disk Size: 7.3M
       Message: Process 913399 (sway) of user 1000 dumped core.

                Module linux-vdso.so.1 with build-id 9b5e46865eea1573423a73a086423584ef848cee
                Module libnss_files.so.2 with build-id 1a36dfc01d3a1010b2ee79766a24a8090a3266d5
                Module libicudata.so.70 with build-id e1dcc2a88cfaafed882d09c90c668af0eed4efed
                Module libicuuc.so.70 with build-id 2e245c2bf12f95fd8ab79b3a4be99524677cbd70
                Module libxml2.so.2 with build-id b710b880b0d4e9c93554fa632129db44c20632cd
                Module libncursesw.so.6 with build-id 1f873ddb2c32ab39d0b7d8646d03680ffe99de7c
                Module libedit.so.0 with build-id 4b0babfcad161c2ad0af6e59e2493258db23a331
                Module libdrm_nouveau.so.2 with build-id ee16fa6a4d0bd08f5448cfc046ccb76b49aaa8a3
                Module libdrm_amdgpu.so.1 with build-id 30d019987d514b23115b47d6b47c1e45c18fdbaf
                Module libelf.so.1 with build-id 0eee16e5e39ae4c5016f31b2abb6c92f0804ae47
                Module libdrm_radeon.so.1 with build-id 5d1615e0467d0a34a5a82cbd4ebc84851e116307
                Module libsensors.so.5 with build-id dc8b2c1c0d8525411aca188ea3cc3fb86d381d30
                Module libLLVM-13.so with build-id 62bb83aeee3a955305312248a401be2cf62a0ea8
                Module radeonsi_dri.so with build-id 10a9eafed46383cccd7c3dc76676aa5fdd37f3e5
                Module libxshmfence.so.1 with build-id 8876d9ccf620858795724ca24b9e567585a77cec
                Module libxcb-sync.so.1 with build-id dda14591103b01b1311906053bf1ca9e82ade35c
                Module libxcb-dri2.so.0 with build-id 2dd6e65129a809dab828a1d26215a3f7a363fcc8
                Module libX11-xcb.so.1 with build-id 0db4f94d8ae31b8dc9a83f825a9171656f1e532c
                Module libglapi.so.0 with build-id 9331aed5060062bcfafd463d36506312fab59549
                Module libEGL_mesa.so.0 with build-id 87783c9234dbd9030a4c7c71387b75ab04c03ed9
                Module libgpg-error.so.0 with build-id 82524ee3d1c4c2244d7cfdcc1e6eea5f9855f6c6
                Module libgcrypt.so.20 with build-id db45f5d5e0f7af1e77324fea1885f974619ad268
                Module libcap.so.2 with build-id eb6dae97527fc89dbb0d5bb581a15acd02ae9f56
                Module liblz4.so.1 with build-id e63600ab23b2f6997f42fac2fa56e1f02ce159a1
                Module libzstd.so.1 with build-id 72f3511cba7db578f6a2647925f35664da6c838b
                Module liblzma.so.5 with build-id 8b615460aa230708c5183f16bede67aa0437d95e
                Module libblkid.so.1 with build-id 16cc0887733296cbf17ddbac780435e8a9071246
                Module libbrotlicommon.so.1 with build-id a4ba3f4b4571c8272343b621da812a6e24a202a7
                Module libsystemd.so.0 with build-id a83a62063b8098eda274d25251d619f0503bf011
                Module libstdc++.so.6 with build-id 9b5eeeb149bf3c4efe787fb398b44f00507aec87
                Module libgraphite2.so.3 with build-id 47761dc11e553f519cde97ed9ee985be12ccdae2
                Module libdatrie.so.1 with build-id 6fe3b6ece2c8e7d11869fa051375128d8f808f58
                Module libresolv.so.2 with build-id c915c72668282861a813f7ea3c0780f37b681dc0
                Module libmount.so.1 with build-id 03ade3c7be7f082dc9275212a30771131625fee7
                Module libgmodule-2.0.so.0 with build-id 5da4523e8d6b5c244a0193e27093d1e61f6ac9e4
                Module libgudev-1.0.so.0 with build-id a9f734ea9206d637d5aacfbd86298c91cdc1a33a
                Module libdl.so.2 with build-id 5abc547e7b0949f89f3c0e21ab0c8331a7440a8a
                Module libbrotlidec.so.1 with build-id 45defc036e918e0140a72f1fbce6e7692d38241d
                Module libbz2.so.1.0 with build-id 919597c477c9b2cb9cdbb7745ed6494ac0e6da60
                Module libexpat.so.1 with build-id c3b8b6921f5b323540b84acd301ccc7bc5bc0428
                Module libpangoft2-1.0.so.0 with build-id 9b0353693557b4fb68124a9dffac9b07678d86a1
                Module libXdmcp.so.6 with build-id 8ca0792d23c8b8b4c0864297512349292bea5955
                Module libXau.so.6 with build-id 1c67764663e07bec24d8951e5fd93f4d165979ff
                Module libxcb-errors.so.0 with build-id 0d6ee255fc30b6a86856b9f1a96491f12a1cacaf
                Module libxcb-res.so.0 with build-id b825f66a75478fd00eeb4c57ecb0ac7792e00f5e
                Module libxcb-icccm.so.4 with build-id 73f1e12d76af383aa969a60279ed5ed922045f47
                Module libxcb-composite.so.0 with build-id 94fff40466ef37eb5973997211aa68f9beb81d15
                Module libseat.so.1 with build-id cd26336f59810a4e63bfebfc60f7c829dee5cd0b
                Module libwayland-client.so.0 with build-id 0a237f2fd096bada4ca381eec5d64474c4078be4
                Module libxcb-xinput.so.0 with build-id 6403174c48f05f40cf7c168beb86f2886b9f09c1
                Module libxcb-xfixes.so.0 with build-id a6b197ace5b9b59f913f5969eb419a88d1194f47
                Module libxcb-render-util.so.0 with build-id c64fb28ea20a320a9754273d9ea3af85f6f74b17
                Module libxcb-present.so.0 with build-id 68f5465258750e2397b1333b3ffc01ee33caa4e1
                Module libxcb-dri3.so.0 with build-id 9407a2480e09dc5a1dd9d9a0652fa8d32b328c91
                Module libvulkan.so.1 with build-id 40c7a455d37803dbd362377df831a77142acb66b
                Module libEGL.so.1 with build-id 686c2e4036c01a3a72349ed0dd04f7c434af14ce
                Module libgbm.so.1 with build-id 5bc03a95f0b36fc100f1d7ca664ebacda793d4c1
                Module libdrm.so.2 with build-id 457a1a1bd25f1d5541a10d3f16c5dc1440d77c7d
                Module libGLdispatch.so.0 with build-id 501765b3a78d668860fa54229b18107473aeda4c
                Module libffi.so.8 with build-id f90d8b734f6de9b25faedb8cbfab7054dafc0a42
                Module libharfbuzz.so.0 with build-id 8006a225ec61b8231d0b003aebab9920ac0b9179
                Module libthai.so.0 with build-id a7ac5010b4275c49308021200d23690533952702
                Module libfribidi.so.0 with build-id 79124bad061c2aab4ec89f25d067363d5b781114
                Module libgio-2.0.so.0 with build-id e04146bb599deb6eb15744fc2e95e5f538952d56
                Module libgcc_s.so.1 with build-id 7f8508bb914546ada778809b64b99d234337d835
                Module librt.so.1 with build-id 75484da2d6f1515189eefa076e0a40328834cd16
                Module libwacom.so.9 with build-id bb1b4e6bbfa3929968f1acc5311154920dd9fc0b
                Module libmtdev.so.1 with build-id 0cea2a842ae9a0ef02a08477076caab0e5ac5e42
                Module ld-linux-x86-64.so.2 with build-id 040cc3dd10461562f177df39e3be2f3704258c3c
                Module libxcb-shm.so.0 with build-id fb797f299a446f559a95afcc168227482cc800d1
                Module libxcb-render.so.0 with build-id a37bdb37744b508be9dd29fd9ccb9bb0170d43e5
                Module libXrender.so.1 with build-id 97e0b9ab6ba96ebc86527cc2b3c3078aad8616b3
                Module libXext.so.6 with build-id d70f24beb4fad748d6becffdcc13e51be0a2ebfa
                Module libX11.so.6 with build-id 5ba5798d193c0065014b8c6252a0678671c8d478
                Module libfreetype.so.6 with build-id 26c5f833068ff72660d1975cbc2074c3eb47fad8
                Module libfontconfig.so.1 with build-id 9fdeb38479c4090d673efc2e8cb60176efe65da1
                Module libpng16.so.16 with build-id 2dc0bce07f199bf983c07a05fb95a6f4af83a9b3
                Module libz.so.1 with build-id 0c1459c56513efd5d53eb3868290e9afee6a6a26
                Module libpthread.so.0 with build-id 07c8f95b4f3251d08550217ad8a1f31066229996
                Module libc.so.6 with build-id 4b406737057708c0e4c642345a703c47a61c73dc
                Module libpangocairo-1.0.so.0 with build-id a47bf17ab99c1840764fca52a2d772800d81d6e1
                Module libxcb.so.1 with build-id 0d1ef11740a5daad2ee331e812a51aa6574af222
                Module libxkbcommon.so.0 with build-id 3a9338b2085f0af41217bc0a90ffcc941938a16e
                Module libwlroots.so.11 with build-id 4f6658999b8ef62f404d283968a255a1b1d8f30a
                Module libwayland-server.so.0 with build-id 645526447334b85a6f4bf5a8b37737b27696365f
                Module libpixman-1.so.0 with build-id 341f793dcada3a48a306a793d265a517e3f2e7d6
                Module libGLESv2.so.2 with build-id 60702bece6c583d41116a85e1d5b3c096a28d3d7
                Module libpcre.so.1 with build-id 845483dd0acba86de9f0313102bebbaf3ce52767
                Module libglib-2.0.so.0 with build-id bd949a4794ad959019499c6afcb8f416dcff9810
                Module libgobject-2.0.so.0 with build-id e67b3a29cecdd98c3d8bd6eb7524a812331b20a2
                Module libpango-1.0.so.0 with build-id f7a7e74f7ade4cbcf3840f685d760da19b0dc38c
                Module libm.so.6 with build-id 2b8fd1f869ecab4e0b55e92f2f151897f6818acf
                Module libudev.so.1 with build-id 10425bceda4d2b8dfaa2453dd7e833ea873f88a1
                Module libinput.so.10 with build-id 956df35c2a15681d4aa87253ed15a5c18a339183
                Module libevdev.so.2 with build-id b62ae69f839f1b6b06ef2c1df19f25ff09b0d824
                Module libjson-c.so.5 with build-id a84d1d9e7c8fbfaf8eb5a5c6adc22d3b20de86fe
                Module libcairo.so.2 with build-id 06820af9cf79c2deb207d9533a61caf04e67a8ad
                Module sway with build-id 845285f1f943c43dcde19cc512c05985ce3d218f
                Stack trace of thread 913399:
                #0  0x00007ff752bf64c3 wlr_input_method_keyboard_grab_v2_send_modifiers (libwlroots.so.11 + 0x724c3)
                #1  0x0000558dcdaa4a6a handle_im_grab_keyboard (sway + 0x33a6a)
                #2  0x00007ff752c0e80e wlr_signal_emit_safe (libwlroots.so.11 + 0x8a80e)
                #3  0x00007ff752312d4a n/a (libffi.so.8 + 0x6d4a)
                #4  0x00007ff752312267 n/a (libffi.so.8 + 0x6267)
                #5  0x00007ff752c69323 n/a (libwayland-server.so.0 + 0xd323)
                #6  0x00007ff752c645cc n/a (libwayland-server.so.0 + 0x85cc)
                #7  0x00007ff752c671ca wl_event_loop_dispatch (libwayland-server.so.0 + 0xb1ca)
                #8  0x00007ff752c64d37 wl_display_run (libwayland-server.so.0 + 0x8d37)
                #9  0x0000558dcda82a3e main (sway + 0x11a3e)
                #10 0x00007ff75295bb25 __libc_start_main (libc.so.6 + 0x27b25)
                #11 0x0000558dcda82dfe _start (sway + 0x11dfe)

                Stack trace of thread 913406:
                #0  0x00007ff7529268ca __futex_abstimed_wait_common64 (libpthread.so.0 + 0x158ca)
                #1  0x00007ff752920270 pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0 + 0xf270)
                #2  0x00007ff74feb2dfc n/a (radeonsi_dri.so + 0x1dbdfc)
                #3  0x00007ff74feabaac n/a (radeonsi_dri.so + 0x1d4aac)
                #4  0x00007ff75291a259 start_thread (libpthread.so.0 + 0x9259)
                #5  0x00007ff752a325e3 __clone (libc.so.6 + 0xfe5e3)

                Stack trace of thread 913408:
                #0  0x00007ff7529268ca __futex_abstimed_wait_common64 (libpthread.so.0 + 0x158ca)
                #1  0x00007ff752920270 pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0 + 0xf270)
                #2  0x00007ff74feb2dfc n/a (radeonsi_dri.so + 0x1dbdfc)
                #3  0x00007ff74feabaac n/a (radeonsi_dri.so + 0x1d4aac)
                #4  0x00007ff75291a259 start_thread (libpthread.so.0 + 0x9259)
                #5  0x00007ff752a325e3 __clone (libc.so.6 + 0xfe5e3)

                Stack trace of thread 913401:
                #0  0x00007ff7529268ca __futex_abstimed_wait_common64 (libpthread.so.0 + 0x158ca)
                #1  0x00007ff752920270 pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0 + 0xf270)
                #2  0x00007ff74feb2dfc n/a (radeonsi_dri.so + 0x1dbdfc)
                #3  0x00007ff74feabaac n/a (radeonsi_dri.so + 0x1d4aac)
                #4  0x00007ff75291a259 start_thread (libpthread.so.0 + 0x9259)
                #5  0x00007ff752a325e3 __clone (libc.so.6 + 0xfe5e3)

                Stack trace of thread 913409:
                #0  0x00007ff7529268ca __futex_abstimed_wait_common64 (libpthread.so.0 + 0x158ca)
                #1  0x00007ff752920270 pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0 + 0xf270)
                #2  0x00007ff74feb2dfc n/a (radeonsi_dri.so + 0x1dbdfc)
                #3  0x00007ff74feabaac n/a (radeonsi_dri.so + 0x1d4aac)
                #4  0x00007ff75291a259 start_thread (libpthread.so.0 + 0x9259)
                #5  0x00007ff752a325e3 __clone (libc.so.6 + 0xfe5e3)

                Stack trace of thread 913403:
                #0  0x00007ff7529268ca __futex_abstimed_wait_common64 (libpthread.so.0 + 0x158ca)
                #1  0x00007ff752920270 pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0 + 0xf270)
                #2  0x00007ff74feb2dfc n/a (radeonsi_dri.so + 0x1dbdfc)
                #3  0x00007ff74feabaac n/a (radeonsi_dri.so + 0x1d4aac)
                #4  0x00007ff75291a259 start_thread (libpthread.so.0 + 0x9259)
                #5  0x00007ff752a325e3 __clone (libc.so.6 + 0xfe5e3)

                Stack trace of thread 913410:
                #0  0x00007ff7529268ca __futex_abstimed_wait_common64 (libpthread.so.0 + 0x158ca)
                #1  0x00007ff752920270 pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0 + 0xf270)
                #2  0x00007ff74feb2dfc n/a (radeonsi_dri.so + 0x1dbdfc)
                #3  0x00007ff74feabaac n/a (radeonsi_dri.so + 0x1d4aac)
                #4  0x00007ff75291a259 start_thread (libpthread.so.0 + 0x9259)
                #5  0x00007ff752a325e3 __clone (libc.so.6 + 0xfe5e3)

                Stack trace of thread 913411:
                #0  0x00007ff7529268ca __futex_abstimed_wait_common64 (libpthread.so.0 + 0x158ca)
                #1  0x00007ff752920270 pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0 + 0xf270)
                #2  0x00007ff74feb2dfc n/a (radeonsi_dri.so + 0x1dbdfc)
                #3  0x00007ff74feabaac n/a (radeonsi_dri.so + 0x1d4aac)
                #4  0x00007ff75291a259 start_thread (libpthread.so.0 + 0x9259)
                #5  0x00007ff752a325e3 __clone (libc.so.6 + 0xfe5e3)

                Stack trace of thread 913404:
                #0  0x00007ff7529268ca __futex_abstimed_wait_common64 (libpthread.so.0 + 0x158ca)
                #1  0x00007ff752920270 pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0 + 0xf270)
                #2  0x00007ff74feb2dfc n/a (radeonsi_dri.so + 0x1dbdfc)
                #3  0x00007ff74feabaac n/a (radeonsi_dri.so + 0x1d4aac)
                #4  0x00007ff75291a259 start_thread (libpthread.so.0 + 0x9259)
                #5  0x00007ff752a325e3 __clone (libc.so.6 + 0xfe5e3)

                Stack trace of thread 913405:
                #0  0x00007ff7529268ca __futex_abstimed_wait_common64 (libpthread.so.0 + 0x158ca)
                #1  0x00007ff752920270 pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0 + 0xf270)
                #2  0x00007ff74feb2dfc n/a (radeonsi_dri.so + 0x1dbdfc)
                #3  0x00007ff74feabaac n/a (radeonsi_dri.so + 0x1d4aac)
                #4  0x00007ff75291a259 start_thread (libpthread.so.0 + 0x9259)
                #5  0x00007ff752a325e3 __clone (libc.so.6 + 0xfe5e3)

                Stack trace of thread 913407:
                #0  0x00007ff7529268ca __futex_abstimed_wait_common64 (libpthread.so.0 + 0x158ca)
                #1  0x00007ff752920270 pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0 + 0xf270)
                #2  0x00007ff74feb2dfc n/a (radeonsi_dri.so + 0x1dbdfc)
                #3  0x00007ff74feabaac n/a (radeonsi_dri.so + 0x1d4aac)
                #4  0x00007ff75291a259 start_thread (libpthread.so.0 + 0x9259)
                #5  0x00007ff752a325e3 __clone (libc.so.6 + 0xfe5e3)

                Stack trace of thread 913420:
                #0  0x00007ff7529268ca __futex_abstimed_wait_common64 (libpthread.so.0 + 0x158ca)
                #1  0x00007ff752920270 pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0 + 0xf270)
                #2  0x00007ff74feb2dfc n/a (radeonsi_dri.so + 0x1dbdfc)
                #3  0x00007ff74feabaac n/a (radeonsi_dri.so + 0x1d4aac)
                #4  0x00007ff75291a259 start_thread (libpthread.so.0 + 0x9259)
                #5  0x00007ff752a325e3 __clone (libc.so.6 + 0xfe5e3)

                Stack trace of thread 913413:
                #0  0x00007ff7529268ca __futex_abstimed_wait_common64 (libpthread.so.0 + 0x158ca)
                #1  0x00007ff752920270 pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0 + 0xf270)
                #2  0x00007ff74feb2dfc n/a (radeonsi_dri.so + 0x1dbdfc)
                #3  0x00007ff74feabaac n/a (radeonsi_dri.so + 0x1d4aac)
                #4  0x00007ff75291a259 start_thread (libpthread.so.0 + 0x9259)
                #5  0x00007ff752a325e3 __clone (libc.so.6 + 0xfe5e3)

                Stack trace of thread 913429:
                #0  0x00007ff7529268ca __futex_abstimed_wait_common64 (libpthread.so.0 + 0x158ca)
                #1  0x00007ff752920270 pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0 + 0xf270)
                #2  0x00007ff74feb2dfc n/a (radeonsi_dri.so + 0x1dbdfc)
                #3  0x00007ff74feabaac n/a (radeonsi_dri.so + 0x1d4aac)
                #4  0x00007ff75291a259 start_thread (libpthread.so.0 + 0x9259)
                #5  0x00007ff752a325e3 __clone (libc.so.6 + 0xfe5e3)

                Stack trace of thread 913421:
                #0  0x00007ff7529268ca __futex_abstimed_wait_common64 (libpthread.so.0 + 0x158ca)
                #1  0x00007ff752920270 pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0 + 0xf270)
                #2  0x00007ff74feb2dfc n/a (radeonsi_dri.so + 0x1dbdfc)
                #3  0x00007ff74feabaac n/a (radeonsi_dri.so + 0x1d4aac)
                #4  0x00007ff75291a259 start_thread (libpthread.so.0 + 0x9259)
                #5  0x00007ff752a325e3 __clone (libc.so.6 + 0xfe5e3)

                Stack trace of thread 913427:
                #0  0x00007ff7529268ca __futex_abstimed_wait_common64 (libpthread.so.0 + 0x158ca)
                #1  0x00007ff752920270 pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0 + 0xf270)
                #2  0x00007ff74feb2dfc n/a (radeonsi_dri.so + 0x1dbdfc)
                #3  0x00007ff74feabaac n/a (radeonsi_dri.so + 0x1d4aac)
                #4  0x00007ff75291a259 start_thread (libpthread.so.0 + 0x9259)
                #5  0x00007ff752a325e3 __clone (libc.so.6 + 0xfe5e3)

                Stack trace of thread 913414:
                #0  0x00007ff7529268ca __futex_abstimed_wait_common64 (libpthread.so.0 + 0x158ca)
                #1  0x00007ff752920270 pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0 + 0xf270)
                #2  0x00007ff74feb2dfc n/a (radeonsi_dri.so + 0x1dbdfc)
                #3  0x00007ff74feabaac n/a (radeonsi_dri.so + 0x1d4aac)
                #4  0x00007ff75291a259 start_thread (libpthread.so.0 + 0x9259)
                #5  0x00007ff752a325e3 __clone (libc.so.6 + 0xfe5e3)

                Stack trace of thread 913417:
                #0  0x00007ff7529268ca __futex_abstimed_wait_common64 (libpthread.so.0 + 0x158ca)
                #1  0x00007ff752920270 pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0 + 0xf270)
                #2  0x00007ff74feb2dfc n/a (radeonsi_dri.so + 0x1dbdfc)
                #3  0x00007ff74feabaac n/a (radeonsi_dri.so + 0x1d4aac)
                #4  0x00007ff75291a259 start_thread (libpthread.so.0 + 0x9259)
                #5  0x00007ff752a325e3 __clone (libc.so.6 + 0xfe5e3)

                Stack trace of thread 913424:
                #0  0x00007ff7529268ca __futex_abstimed_wait_common64 (libpthread.so.0 + 0x158ca)
                #1  0x00007ff752920270 pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0 + 0xf270)
                #2  0x00007ff74feb2dfc n/a (radeonsi_dri.so + 0x1dbdfc)
                #3  0x00007ff74feabaac n/a (radeonsi_dri.so + 0x1d4aac)
                #4  0x00007ff75291a259 start_thread (libpthread.so.0 + 0x9259)
                #5  0x00007ff752a325e3 __clone (libc.so.6 + 0xfe5e3)

                Stack trace of thread 913422:
                #0  0x00007ff7529268ca __futex_abstimed_wait_common64 (libpthread.so.0 + 0x158ca)
                #1  0x00007ff752920270 pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0 + 0xf270)
                #2  0x00007ff74feb2dfc n/a (radeonsi_dri.so + 0x1dbdfc)
                #3  0x00007ff74feabaac n/a (radeonsi_dri.so + 0x1d4aac)
                #4  0x00007ff75291a259 start_thread (libpthread.so.0 + 0x9259)
                #5  0x00007ff752a325e3 __clone (libc.so.6 + 0xfe5e3)

                Stack trace of thread 913415:
                #0  0x00007ff7529268ca __futex_abstimed_wait_common64 (libpthread.so.0 + 0x158ca)
                #1  0x00007ff752920270 pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0 + 0xf270)
                #2  0x00007ff74feb2dfc n/a (radeonsi_dri.so + 0x1dbdfc)
                #3  0x00007ff74feabaac n/a (radeonsi_dri.so + 0x1d4aac)
                #4  0x00007ff75291a259 start_thread (libpthread.so.0 + 0x9259)
                #5  0x00007ff752a325e3 __clone (libc.so.6 + 0xfe5e3)

                Stack trace of thread 913412:
                #0  0x00007ff7529268ca __futex_abstimed_wait_common64 (libpthread.so.0 + 0x158ca)
                #1  0x00007ff752920270 pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0 + 0xf270)
                #2  0x00007ff74feb2dfc n/a (radeonsi_dri.so + 0x1dbdfc)
                #3  0x00007ff74feabaac n/a (radeonsi_dri.so + 0x1d4aac)
                #4  0x00007ff75291a259 start_thread (libpthread.so.0 + 0x9259)
                #5  0x00007ff752a325e3 __clone (libc.so.6 + 0xfe5e3)

                Stack trace of thread 913419:
                #0  0x00007ff7529268ca __futex_abstimed_wait_common64 (libpthread.so.0 + 0x158ca)
                #1  0x00007ff752920270 pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0 + 0xf270)
                #2  0x00007ff74feb2dfc n/a (radeonsi_dri.so + 0x1dbdfc)
                #3  0x00007ff74feabaac n/a (radeonsi_dri.so + 0x1d4aac)
                #4  0x00007ff75291a259 start_thread (libpthread.so.0 + 0x9259)
                #5  0x00007ff752a325e3 __clone (libc.so.6 + 0xfe5e3)

                Stack trace of thread 913416:
                #0  0x00007ff7529268ca __futex_abstimed_wait_common64 (libpthread.so.0 + 0x158ca)
                #1  0x00007ff752920270 pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0 + 0xf270)
                #2  0x00007ff74feb2dfc n/a (radeonsi_dri.so + 0x1dbdfc)
                #3  0x00007ff74feabaac n/a (radeonsi_dri.so + 0x1d4aac)
                #4  0x00007ff75291a259 start_thread (libpthread.so.0 + 0x9259)
                #5  0x00007ff752a325e3 __clone (libc.so.6 + 0xfe5e3)

                Stack trace of thread 913426:
                #0  0x00007ff7529268ca __futex_abstimed_wait_common64 (libpthread.so.0 + 0x158ca)
                #1  0x00007ff752920270 pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0 + 0xf270)
                #2  0x00007ff74feb2dfc n/a (radeonsi_dri.so + 0x1dbdfc)
                #3  0x00007ff74feabaac n/a (radeonsi_dri.so + 0x1d4aac)
                #4  0x00007ff75291a259 start_thread (libpthread.so.0 + 0x9259)
                #5  0x00007ff752a325e3 __clone (libc.so.6 + 0xfe5e3)

                Stack trace of thread 913418:
                #0  0x00007ff7529268ca __futex_abstimed_wait_common64 (libpthread.so.0 + 0x158ca)
                #1  0x00007ff752920270 pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0 + 0xf270)
                #2  0x00007ff74feb2dfc n/a (radeonsi_dri.so + 0x1dbdfc)
                #3  0x00007ff74feabaac n/a (radeonsi_dri.so + 0x1d4aac)
                #4  0x00007ff75291a259 start_thread (libpthread.so.0 + 0x9259)
                #5  0x00007ff752a325e3 __clone (libc.so.6 + 0xfe5e3)

                Stack trace of thread 913402:
                #0  0x00007ff7529268ca __futex_abstimed_wait_common64 (libpthread.so.0 + 0x158ca)
                #1  0x00007ff752920270 pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0 + 0xf270)
                #2  0x00007ff74feb2dfc n/a (radeonsi_dri.so + 0x1dbdfc)
                #3  0x00007ff74feabaac n/a (radeonsi_dri.so + 0x1d4aac)
                #4  0x00007ff75291a259 start_thread (libpthread.so.0 + 0x9259)
                #5  0x00007ff752a325e3 __clone (libc.so.6 + 0xfe5e3)

                Stack trace of thread 913437:
                #0  0x00007ff7529268ca __futex_abstimed_wait_common64 (libpthread.so.0 + 0x158ca)
                #1  0x00007ff752920270 pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0 + 0xf270)
                #2  0x00007ff74feb2dfc n/a (radeonsi_dri.so + 0x1dbdfc)
                #3  0x00007ff74feabaac n/a (radeonsi_dri.so + 0x1d4aac)
                #4  0x00007ff75291a259 start_thread (libpthread.so.0 + 0x9259)
                #5  0x00007ff752a325e3 __clone (libc.so.6 + 0xfe5e3)

                Stack trace of thread 913425:
                #0  0x00007ff7529268ca __futex_abstimed_wait_common64 (libpthread.so.0 + 0x158ca)
                #1  0x00007ff752920270 pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0 + 0xf270)
                #2  0x00007ff74feb2dfc n/a (radeonsi_dri.so + 0x1dbdfc)
                #3  0x00007ff74feabaac n/a (radeonsi_dri.so + 0x1d4aac)
                #4  0x00007ff75291a259 start_thread (libpthread.so.0 + 0x9259)
                #5  0x00007ff752a325e3 __clone (libc.so.6 + 0xfe5e3)

                Stack trace of thread 913423:
                #0  0x00007ff7529268ca __futex_abstimed_wait_common64 (libpthread.so.0 + 0x158ca)
                #1  0x00007ff752920270 pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0 + 0xf270)
                #2  0x00007ff74feb2dfc n/a (radeonsi_dri.so + 0x1dbdfc)
                #3  0x00007ff74feabaac n/a (radeonsi_dri.so + 0x1d4aac)
                #4  0x00007ff75291a259 start_thread (libpthread.so.0 + 0x9259)
                #5  0x00007ff752a325e3 __clone (libc.so.6 + 0xfe5e3)

                Stack trace of thread 913430:
                #0  0x00007ff7529268ca __futex_abstimed_wait_common64 (libpthread.so.0 + 0x158ca)
                #1  0x00007ff752920270 pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0 + 0xf270)
                #2  0x00007ff74feb2dfc n/a (radeonsi_dri.so + 0x1dbdfc)
                #3  0x00007ff74feabaac n/a (radeonsi_dri.so + 0x1d4aac)
                #4  0x00007ff75291a259 start_thread (libpthread.so.0 + 0x9259)
                #5  0x00007ff752a325e3 __clone (libc.so.6 + 0xfe5e3)

                Stack trace of thread 913432:
                #0  0x00007ff7529268ca __futex_abstimed_wait_common64 (libpthread.so.0 + 0x158ca)
                #1  0x00007ff752920270 pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0 + 0xf270)
                #2  0x00007ff74feb2dfc n/a (radeonsi_dri.so + 0x1dbdfc)
                #3  0x00007ff74feabaac n/a (radeonsi_dri.so + 0x1d4aac)
                #4  0x00007ff75291a259 start_thread (libpthread.so.0 + 0x9259)
                #5  0x00007ff752a325e3 __clone (libc.so.6 + 0xfe5e3)

                Stack trace of thread 913431:
                #0  0x00007ff7529268ca __futex_abstimed_wait_common64 (libpthread.so.0 + 0x158ca)
                #1  0x00007ff752920270 pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0 + 0xf270)
                #2  0x00007ff74feb2dfc n/a (radeonsi_dri.so + 0x1dbdfc)
                #3  0x00007ff74feabaac n/a (radeonsi_dri.so + 0x1d4aac)
                #4  0x00007ff75291a259 start_thread (libpthread.so.0 + 0x9259)
                #5  0x00007ff752a325e3 __clone (libc.so.6 + 0xfe5e3)

                Stack trace of thread 913428:
                #0  0x00007ff7529268ca __futex_abstimed_wait_common64 (libpthread.so.0 + 0x158ca)
                #1  0x00007ff752920270 pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0 + 0xf270)
                #2  0x00007ff74feb2dfc n/a (radeonsi_dri.so + 0x1dbdfc)
                #3  0x00007ff74feabaac n/a (radeonsi_dri.so + 0x1d4aac)
                #4  0x00007ff75291a259 start_thread (libpthread.so.0 + 0x9259)
                #5  0x00007ff752a325e3 __clone (libc.so.6 + 0xfe5e3)

                Stack trace of thread 913438:
                #0  0x00007ff7529268ca __futex_abstimed_wait_common64 (libpthread.so.0 + 0x158ca)
                #1  0x00007ff752920270 pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0 + 0xf270)
                #2  0x00007ff74feb2dfc n/a (radeonsi_dri.so + 0x1dbdfc)
                #3  0x00007ff74feabaac n/a (radeonsi_dri.so + 0x1d4aac)
                #4  0x00007ff75291a259 start_thread (libpthread.so.0 + 0x9259)
                #5  0x00007ff752a325e3 __clone (libc.so.6 + 0xfe5e3)

                Stack trace of thread 913434:
                #0  0x00007ff7529268ca __futex_abstimed_wait_common64 (libpthread.so.0 + 0x158ca)
                #1  0x00007ff752920270 pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0 + 0xf270)
                #2  0x00007ff74feb2dfc n/a (radeonsi_dri.so + 0x1dbdfc)
                #3  0x00007ff74feabaac n/a (radeonsi_dri.so + 0x1d4aac)
                #4  0x00007ff75291a259 start_thread (libpthread.so.0 + 0x9259)
                #5  0x00007ff752a325e3 __clone (libc.so.6 + 0xfe5e3)

                Stack trace of thread 913433:
                #0  0x00007ff7529268ca __futex_abstimed_wait_common64 (libpthread.so.0 + 0x158ca)
                #1  0x00007ff752920270 pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0 + 0xf270)
                #2  0x00007ff74feb2dfc n/a (radeonsi_dri.so + 0x1dbdfc)
                #3  0x00007ff74feabaac n/a (radeonsi_dri.so + 0x1d4aac)
                #4  0x00007ff75291a259 start_thread (libpthread.so.0 + 0x9259)
                #5  0x00007ff752a325e3 __clone (libc.so.6 + 0xfe5e3)

                Stack trace of thread 913435:
                #0  0x00007ff7529268ca __futex_abstimed_wait_common64 (libpthread.so.0 + 0x158ca)
                #1  0x00007ff752920270 pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0 + 0xf270)
                #2  0x00007ff74feb2dfc n/a (radeonsi_dri.so + 0x1dbdfc)
                #3  0x00007ff74feabaac n/a (radeonsi_dri.so + 0x1d4aac)
                #4  0x00007ff75291a259 start_thread (libpthread.so.0 + 0x9259)
                #5  0x00007ff752a325e3 __clone (libc.so.6 + 0xfe5e3)

                Stack trace of thread 913436:
                #0  0x00007ff7529268ca __futex_abstimed_wait_common64 (libpthread.so.0 + 0x158ca)
                #1  0x00007ff752920270 pthread_cond_wait@@GLIBC_2.3.2 (libpthread.so.0 + 0xf270)
                #2  0x00007ff74feb2dfc n/a (radeonsi_dri.so + 0x1dbdfc)
                #3  0x00007ff74feabaac n/a (radeonsi_dri.so + 0x1d4aac)
                #4  0x00007ff75291a259 start_thread (libpthread.so.0 + 0x9259)
                #5  0x00007ff752a325e3 __clone (libc.so.6 + 0xfe5e3)
                ELF object binary architecture: AMD x86-64

GNU gdb (GDB) 11.2
Copyright (C) 2022 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-pc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /usr/bin/sway...
Reading symbols from /usr/lib/debug/usr/bin/sway.debug...

warning: Can't open file /memfd:wayland-shm (deleted) during file-backed mapping note processing

warning: Can't open file /memfd:gdk-wayland (deleted) during file-backed mapping note processing

warning: Can't open file /memfd:wayland-cursor (deleted) during file-backed mapping note processing

warning: Can't open file /dev/shm/wayland.mozilla.ipc.350 (deleted) during file-backed mapping note processing

warning: Can't open file /dev/shm/wayland.mozilla.ipc.336 (deleted) during file-backed mapping note processing

warning: Can't open file /dev/shm/wayland.mozilla.ipc.335 (deleted) during file-backed mapping note processing

warning: Can't open file /dev/shm/wayland.mozilla.ipc.151 (deleted) during file-backed mapping note processing

warning: Can't open file /dev/shm/wayland.mozilla.ipc.119 (deleted) during file-backed mapping note processing

warning: Can't open file /dev/shm/wayland.mozilla.ipc.118 (deleted) during file-backed mapping note processing

warning: Can't open file /dev/shm/wayland.mozilla.ipc.349 (deleted) during file-backed mapping note processing

warning: Can't open file /dev/shm/wayland.mozilla.ipc.388 (deleted) during file-backed mapping note processing

warning: Can't open file /dev/shm/wayland.mozilla.ipc.168 (deleted) during file-backed mapping note processing

warning: Can't open file /dev/shm/wayland.mozilla.ipc.387 (deleted) during file-backed mapping note processing

warning: Can't open file /dev/shm/wayland.mozilla.ipc.187 (deleted) during file-backed mapping note processing

warning: Can't open file /dev/shm/dunst-cgDIak (deleted) during file-backed mapping note processing

warning: Can't open file /dev/shm/dunst-gNPPIE (deleted) during file-backed mapping note processing

warning: Can't open file /dev/shm/wayland.mozilla.ipc.65 (deleted) during file-backed mapping note processing

warning: Can't open file /memfd:xwayland-shared (deleted) during file-backed mapping note processing

warning: Can't open file /dev/shm/wayland.mozilla.ipc.134 (deleted) during file-backed mapping note processing

warning: Can't open file /dev/shm/wayland.mozilla.ipc.99 (deleted) during file-backed mapping note processing

warning: Can't open file /dev/shm/wayland.mozilla.ipc.10 (deleted) during file-backed mapping note processing

warning: Can't open file /dev/shm/wayland.mozilla.ipc.9 (deleted) during file-backed mapping note processing

warning: Can't open file /dev/shm/wayland.mozilla.ipc.290 (deleted) during file-backed mapping note processing

warning: Can't open file /dev/shm/wayland.mozilla.ipc.289 (deleted) during file-backed mapping note processing

warning: Can't open file /dev/shm/wayland.mozilla.ipc.197 (deleted) during file-backed mapping note processing

warning: Can't open file /dev/shm/wayland.mozilla.ipc.34 (deleted) during file-backed mapping note processing

warning: Can't open file /dev/shm/wayland.mozilla.ipc.33 (deleted) during file-backed mapping note processing

warning: Can't open file /dev/shm/wayland.mozilla.ipc.66 (deleted) during file-backed mapping note processing

warning: Can't open file /dev/shm/wayland.mozilla.ipc.20 (deleted) during file-backed mapping note processing

warning: Can't open file /run/user/1000/sway-client-bbZw4F (deleted) during file-backed mapping note processing

warning: Can't open file /run/user/1000/sway-client-6ljg5k (deleted) during file-backed mapping note processing

warning: Can't open file /dev/shm/wayland.mozilla.ipc.19 (deleted) during file-backed mapping note processing

warning: Can't open file /dev/shm/wayland.mozilla.ipc.157 (deleted) during file-backed mapping note processing

warning: Can't open file /dev/shm/wayland.mozilla.ipc.156 (deleted) during file-backed mapping note processing

warning: Can't open file /memfd:wayland-cursor-rs (deleted) during file-backed mapping note processing

warning: Can't open file /dev/shm/wayland.mozilla.ipc.196 (deleted) during file-backed mapping note processing

warning: Can't open file /memfd:smithay-client-toolkit (deleted) during file-backed mapping note processing

warning: Can't open file /run/user/1000/sway-client-ObMMFF (deleted) during file-backed mapping note processing
[New LWP 913399]
[New LWP 913406]
[New LWP 913408]
[New LWP 913401]
[New LWP 913409]
[New LWP 913403]
[New LWP 913410]
[New LWP 913411]
[New LWP 913404]
[New LWP 913405]
[New LWP 913407]
[New LWP 913420]
[New LWP 913413]
[New LWP 913429]
[New LWP 913421]
[New LWP 913427]
[New LWP 913414]
[New LWP 913417]
[New LWP 913424]
[New LWP 913422]
[New LWP 913415]
[New LWP 913412]
[New LWP 913419]
[New LWP 913416]
[New LWP 913426]
[New LWP 913418]
[New LWP 913402]
[New LWP 913437]
[New LWP 913425]
[New LWP 913423]
[New LWP 913430]
[New LWP 913432]
[New LWP 913431]
[New LWP 913428]
[New LWP 913438]
[New LWP 913434]
[New LWP 913433]
[New LWP 913435]
[New LWP 913436]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
Core was generated by `sway -d -c /home/reedrs/.config/sway/config'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x00007ff752bf64c3 in wlr_input_method_keyboard_grab_v2_send_modifiers (keyboard_grab=keyboard_grab@entry=0x558dd0af03f0, modifiers=modifiers@entry=0xf0) at ../wlroots-git/types/wlr_input_method_v2.c:313
313             zwp_input_method_keyboard_grab_v2_send_modifiers(
[Current thread is 1 (Thread 0x7ff751a3d980 (LWP 913399))]
>>> bt full                                                                                                                                                                                                         
#0  0x00007ff752bf64c3 in wlr_input_method_keyboard_grab_v2_send_modifiers (keyboard_grab=keyboard_grab@entry=0x558dd0af03f0, modifiers=modifiers@entry=0xf0) at ../wlroots-git/types/wlr_input_method_v2.c:313
#1  0x0000558dcdaa4a6a in handle_im_grab_keyboard (listener=0x558dcfbfc090, data=0x558dd0af03f0) at ../sway/sway/input/text_input.c:80
        relay = 0x558dcfbfc028
        keyboard_grab = 0x558dd0af03f0
        active_keyboard = 0x0
#2  0x00007ff752c0e80e in wlr_signal_emit_safe (signal=<optimized out>, data=0x558dd0af03f0) at ../wlroots-git/util/signal.c:29
        pos = 0x558dcfbfc090
        l = 0x558dcfbfc090
        cursor = {
          link = {
            prev = 0x558dcfbfc090,
            next = 0x7ffc653310e0
          },
          notify = 0x7ff752c0cde0 <handle_noop>
        }
        end = {
          link = {
            prev = 0x7ffc65331100,
            next = 0x558dd03a0830
          },
          notify = 0x7ff752c0cde0 <handle_noop>
        }
#3  0x00007ff752312d4a in  () at /usr/lib/libffi.so.8
#4  0x00007ff752312267 in  () at /usr/lib/libffi.so.8
#5  0x00007ff752c69323 in  () at /usr/lib/libwayland-server.so.0
#6  0x00007ff752c645cc in  () at /usr/lib/libwayland-server.so.0
#7  0x00007ff752c671ca in wl_event_loop_dispatch () at /usr/lib/libwayland-server.so.0
#8  0x00007ff752c64d37 in wl_display_run () at /usr/lib/libwayland-server.so.0
#9  0x0000558dcda82a3e in server_run (server=<optimized out>) at ../sway/sway/server.c:307
        config_path = 0x558dcf4d2040 "/home/reedrs/.config/sway/config"
        usage = 0x558dcdadcd10 "Usage: sway [options] [command]\n\n  -h, --help", ' ' <repeats 13 times>, "Show help message and quit.\n  -c, --config <config>  Specify a config file.\n  -C, --validate         Check the validity of the config file, th"...
        c = <optimized out>
        long_options = {[0] = {
            name = 0x558dcdadc39d "help",
            has_arg = 0,
            flag = 0x0,
            val = 104
          }, [1] = {
            name = 0x558dcdadf6cc "config",
            has_arg = 1,
            flag = 0x0,
            val = 99
          }, [2] = {
            name = 0x558dcdadc3a2 "validate",
            has_arg = 0,
            flag = 0x0,
            val = 67
          }, [3] = {
            name = 0x558dcdadc3ab "debug",
            has_arg = 0,
            flag = 0x0,
            val = 100
          }, [4] = {
            name = 0x558dcdadc282 "version",
            has_arg = 0,
            flag = 0x0,
            val = 118
          }, [5] = {
            name = 0x558dcdadaa4a "verbose",
            has_arg = 0,
            flag = 0x0,
            val = 86
          }, [6] = {
            name = 0x558dcdadc3b1 "get-socketpath",
            has_arg = 0,
            flag = 0x0,
            val = 112
          }, [7] = {
            name = 0x558dcdadc3c0 "unsupported-gpu",
            has_arg = 0,
            flag = 0x0,
            val = 117
          }, [8] = {
            name = 0x0,
            has_arg = 0,
            flag = 0x0,
            val = 0
          }}
        validate = false
        debug = true
        allow_unsupported_gpu = false
        verbose = false
#10 main (argc=<optimized out>, argv=<optimized out>) at ../sway/sway/main.c:431
        config_path = 0x558dcf4d2040 "/home/reedrs/.config/sway/config"
        usage = 0x558dcdadcd10 "Usage: sway [options] [command]\n\n  -h, --help", ' ' <repeats 13 times>, "Show help message and quit.\n  -c, --config <config>  Specify a config file.\n  -C, --validate         Check the validity of the config file, th"...
        c = <optimized out>
        long_options = {[0] = {
            name = 0x558dcdadc39d "help",
            has_arg = 0,
            flag = 0x0,
            val = 104
          }, [1] = {
            name = 0x558dcdadf6cc "config",
            has_arg = 1,
            flag = 0x0,
            val = 99
          }, [2] = {
            name = 0x558dcdadc3a2 "validate",
            has_arg = 0,
            flag = 0x0,
            val = 67
          }, [3] = {
            name = 0x558dcdadc3ab "debug",
            has_arg = 0,
            flag = 0x0,
            val = 100
          }, [4] = {
            name = 0x558dcdadc282 "version",
            has_arg = 0,
            flag = 0x0,
            val = 118
          }, [5] = {
            name = 0x558dcdadaa4a "verbose",
            has_arg = 0,
            flag = 0x0,
            val = 86
          }, [6] = {
            name = 0x558dcdadc3b1 "get-socketpath",
            has_arg = 0,
            flag = 0x0,
            val = 112
          }, [7] = {
            name = 0x558dcdadc3c0 "unsupported-gpu",
            has_arg = 0,
            flag = 0x0,
            val = 117
          }, [8] = {
            name = 0x0,
            has_arg = 0,
            flag = 0x0,
            val = 0
          }}
        validate = false
        debug = true
        allow_unsupported_gpu = false
        verbose = false
>>>


  • Description:

When I plug in my HUION H610 Pro USB graphics tablet, sometimes sway crashes. I have never had this happen the first time I plug the tablet in, however. I have to wait multiple hours or days of sway running, and several plug/unplug cycles of the tablet, before it finally crashes. When it does crash, it happens instantly, as soon as I plug the tablet in.

Similar behavior to #6502, but the backtrace looks pretty dissimilar.

@lesbianlizard lesbianlizard added the bug Not working as intended label Feb 16, 2022
@lesbianlizard
Copy link
Author

sway_usb_crash.log.gz

@issue-dispenser
Copy link

issue-dispenser commented Feb 18, 2022

Does the following diff fix the issue?

diff --git a/sway/input/text_input.c b/sway/input/text_input.c
index b8c19c1..58911c2 100644
--- a/sway/input/text_input.c
+++ b/sway/input/text_input.c
@@ -77,8 +77,6 @@ static void handle_im_grab_keyboard(struct wl_listener *listener, void *data) {
        struct wlr_keyboard *active_keyboard = wlr_seat_get_keyboard(relay->seat->wlr_seat);
        wlr_input_method_keyboard_grab_v2_set_keyboard(keyboard_grab,
                active_keyboard);
-       wlr_input_method_keyboard_grab_v2_send_modifiers(keyboard_grab,
-               &active_keyboard->modifiers);

        wl_signal_add(&keyboard_grab->events.destroy,
                &relay->input_method_keyboard_grab_destroy);

I'm not sure why it's not crashing in handle_im_grab_keyboard directly (optimization perhaps?), but in any case wlr_input_method_keyboard_grab_v2_set_keyboard already calls wlr_input_method_keyboard_grab_v2_send_modifiers for a non-null keyboard.

EDIT: Right, the &<struct>->member expression is just a byte-offset that avoids the dereference.

@lesbianlizard
Copy link
Author

thanks @issue-dispenser , I compiled with that patch, and I'll get back you in a few days, given I don't have a way to trigger the crash quickly.

@lesbianlizard
Copy link
Author

lesbianlizard commented Feb 23, 2022

@issue-dispenser sway has been running continuously with no crashes since I built it with this patch, seems promising!

issue-dispenser pushed a commit to issue-dispenser/sway that referenced this issue Mar 4, 2022
active_keyboard may be NULL, in which case an invalid pointer could be
passed to wlr_input_method_keyboard_grab_v2_send_modifiers. This
procedure call is unnecessary since wlroots commit 372a52ec "input
method: send modifiers in set_keyboard", so the call can simply be
removed.

Fixes swaywm#6836.
emersion pushed a commit that referenced this issue Mar 4, 2022
active_keyboard may be NULL, in which case an invalid pointer could be
passed to wlr_input_method_keyboard_grab_v2_send_modifiers. This
procedure call is unnecessary since wlroots commit 372a52ec "input
method: send modifiers in set_keyboard", so the call can simply be
removed.

Fixes #6836.
WillPower3309 referenced this issue in WillPower3309/swayfx Jan 4, 2023
* build: bump wlroots dependency to 0.16.0

* swaymsg: replace if with switch in pretty_print

* swaymsg: add GET_TREE pretty-printing

* swaybar: fix errno handling in status_handle_readable

If getline fails once, it was not reset before the next getline
call. errno is only overwritten by getline on error.

* Add cairo_image_surface_create error handling

cairo_image_surface_create can fail, e.g. when running out of
memory or when the size is too big. Avoid crashing in this case.

Closes: swaywm/sway#6531

* build: bump version to 1.8-dev

Historically we've been sticking with the last release number in
the master branch. However that's a bit confusing, people can't
easily figure out whether they're using a release or a work-in-progress
snapshot. Only the commit hash appended to the version number may
help, but that's not very explicit and disappears when using a
tarball.

We could bump the version in master to the next release number.
However during the RC cycle there would be a downgrade from 1.8 to
1.8-rc1. Also it would be hard to tell the difference between a
stable release and an old snapshot.

This patch introduces a new pre-release identifier, "dev". It's
alphabetically before "rc" so it should be correctly sorted by
semver comparisons. "dev" is upgraded to "rc" (and then to stable)
when doing a release. The master branch always uses a "dev"
version, only release branches use "rc" or stable versions.

* [IPC] Add repeat delay/rate info to keyboard

Closes #6735

wlroots already has the info in the struct so let's access it and print it out.

* input/seat: unset has_focus when focus_stack becomes empty

We currently track the focus of a seat in two ways: we use a list called
focus_stack to track the order in which nodes have been focused, with
the first node representing what's currently focused, and we use a
variable called has_focus to indicate whether anything has focus--i.e.
whether we should actually treat that first node as focused at any given
time.

In a number of places, we treat has_focus as implying that a focused
node exists. If it's true, we attempt to dereference the return value of
seat_get_focus(), our helper function for getting the first node in
focus_list, with no further checks. But this isn't quite correct with
the current implementation of seat_get_focus(): not only does it return
NULL when has_focus is false, it also returns NULL when focus_stack
contains no items.

In most cases, focus_stack never becomes empty and so this doesn't
matter at all. Since focus_stack stores a history of focused nodes, we
rarely remove nodes from it. The exception to this is when a node itself
goes away. In that case, we call seat_node_destroy() to remove it from
focus_stack and free it. But we don't unset has_focus if we've removed
the final node! This lets us get into a state where has_focus is true
but seat_get_focus() returns NULL, leading to a segfault when we try to
dereference it.

Fix the issue both by updating has_focus in seat_node_destroy() and by
adding an assertion in seat_get_focus() that ensures focus_stack and
has_focus are in sync, which will make it easier to track down similar
issues in the future.

Fixes #6395.

[1] There's some discussion in #1585 from when this was implemented
about whether has_focus is actually necessary; it's possible we could
remove it entirely, but for the moment this is the architecture we have.

* swaybar: fix tray_padding vs min-height re: scale

Co-authored-by: xdavidwu <xdavidwuph@gmail.com>

* swaybar: fix tray item icon scaling, positioning

* container: Fix crash when view unmaps + maps quickly

Followup on 4e4898e.

If a view quickly maps and unmaps repeatedly, there will be multiple
destroyed containers with same view in a single transaction. Each of
these containers will then try to destroy this view, resulting in use
after free.
The container should only destroy the view if the view still belongs
to the container.

Simple reproducer: couple XMapWindow + XUnmapWindow in a loop followed
by XDestroyWindow.

See #6605

* commands/move: Fix crash when pos_y is omitted

Fixes #6737

* Destroy sub-surfaces with parent layer-shell surface

Closes: swaywm/sway#6337

* Add safety assert in parse_movement_unit

Let's add this just in case a caller passes argc == 0.

References: swaywm/sway#6737 (comment)

* meson: check: false on run_command

Future meson releases will change the default and warns when the
implicit default is used, breaking builds.

Explicitly set check: false to maintain behavior and silence warnings.

* Print deprecation notice when running SUID

SUID privilege drop is needed for the "builtin"-backend of libseat,
which copied our old "direct" backend behavior for the sake of
compatibility and ease of transition.

libseat now has a better alternative in the form of seatd-launch. It
uses the normal seatd daemon and libseat backend and takes care of SUID
for us.

Add a soft deprecation warning to highlight our future intent of
removing this code. The deprecation cycle is needed to avoid surprises
when sway no longer drops privileges.

* xdg-shell: use toplevel geometry to adjust the popup box

`popup_unconstrain` uses view coordinates to init the output box for
popups. However wlroots expects the box to be set in a toplevel surface
coordinate system, which is not always equal to view. The difference
between those is a window geometry set via xdg-shell.

GTK4 reserves some space for client-side decoration and thus has a
window with top left corner not matching to (0, 0) of a surface. The box
calculated without taking that into account was slightly shifted
compared to the actual output and allowed to position part of the popup
off screen.

* build: fix building with basu

02b412a introduced the use of list for sdbus deps, however
it was assuming that all packages which were in a list has a version
higher than 239. That is true for libsystemd and libelogind, since they
use the same versions, however basu is using version numbers which are
way lower than what libsystemd/libelogind are using, so basu only build
is failing.

* Upgrade for wlroots surface refactoring

See [1] for details.

[1]: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/3412

* commands/focus: drop trailing whitespace

* input/cursor: count pointer gestures as idle activity

Fixes swaywm/sway#6765.

* input/cursor: treat swipe begin as idle activity too

Accidentally overlooked in fd53f80.

* treat fullscreen windows as 'tiled' for commands/focus

* transaction: destroying nodes aren't hidden

Commit 37d7bc6 ("transaction: Only wait for ack from visible
views") introduced a check which uses view_is_visible() to check if a view
is still visible on the screen. However view_is_visible() will early
return in case the node is in the destroying state. This is incorrect
for transactions, since a destroying view which is visible will trigger
configure events for other clients. This bug was visible when repeatedly
opening and closing two views side by side, since we ignore the
destroying node we get a frame where the still open view is shown with
the old configure values and the rest is the desktop background. The
next frame is than correct again.

Fix this by considering destroying views as visible, we correctly wait
for them and send the configure events to other views in time, fixing
the background flicker.

Fixes #6473

* build: execute wlroots subproject before finding deps

wlroots often requires dependencies more recent than Sway's.
Executing the wlroots subproject first will give Meson a chance to
find these newer dependencies, possibly via subprojects.

The subproject will override the "wlroots" dependency when executed,
so we don't need to use get_variable anymore.

References: swaywm/sway#6498 (comment)

* tray: do not render passive items

https://www.freedesktop.org/wiki/Specifications/StatusNotifierItem/StatusNotifierItem/#org.freedesktop.statusnotifieritem.status

* cmd/swap: error on swapping a container with itself

* input/cursor: pass through pointer hold gestures

This just follows swaywm/wlroots#3047, so `wl_pointer_gestures_v1`
clients can be notified of these events.

* swaynag: remove buffer destruction condition

An address of a variable can never be NULL, so checking it doesn't make
sense; and `destroy_buffer()` can operate on already destroyed buffers
anyway.

Fixes #6780

* Use bools for CLI flags

* xwayland: listen to `request_activate` event

When REAPER submenu is closed `XCB_CLIENT_MESSAGE` with type
`NET_ACTIVE_WINDOW` is sent to set focus to parent menu.

Closes: swaywm/sway#6324

* chore: chase wlr_output_layout_get_box() update

https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/3439

* Chase wlroots xdg-shell refactor

* Minor update to focus_on_window_activation

Removed xwayland limitation since wayland clients are supported via xdg-activation.

* Translated README into Italian

* readme: add link to Italian translation

* readme: sort language list alphabetically

* readme: use relative links for translations

* xdg-shell: use wlr_xdg_toplevel in sway_view

Improved type safety.

Closes: swaywm/sway#6813

* xdg-shell: use wlr_xdg_popup in sway_xdg_popup

Improved type safety.

* Fix snprintf compiler warning

* Remove all sprintf calls

Replace them with snprintf, which ensures buffer overflows won't
happen.

* sway/commands: add missing wlr_keyboard interface include in xkb_switch_layout

* sway/input: use wlr_input_device from input device base

* Remove some erroneous apostrophes in comments

* Don't enter seatop_move_floating when fullscreen

Currently, a floating window that's been fullscreened can send us
xdg_toplevel::move, and we'll enter seatop_move_floating, which lets us
drag the surface around while it's fullscreen. We don't want
this--fullscreen surfaces should always be aligned to the screen--so add
the same check that seatop_default already does when entering this mode.

Tested with Weston's weston-fullscreen demo, which sends a move request
if you click anywhere on its surface.

* swaynag: die on all allocation failures

* sway/input: don't pass possibly invalid modifiers pointer

active_keyboard may be NULL, in which case an invalid pointer could be
passed to wlr_input_method_keyboard_grab_v2_send_modifiers. This
procedure call is unnecessary since wlroots commit 372a52ec "input
method: send modifiers in set_keyboard", so the call can simply be
removed.

Fixes #6836.

* sway/input: destroy sway_switch properly

Fix: #6861
Added seat_device_destroy function to seat_device_destroy function.

* commands/focus: fix segfault when no container is already focused.

Fixes #6690.

* Remove WLR_SWITCH_STATE_TOGGLE usage

Ref [1].

[1]: https://gitlab.freedesktop.org/wlroots/wlroots/-/commit/4792446ee8f50104bd207d9ccd8558a7e4eb4514

* Replace pcre with pcre2

Closes: swaywm/sway#6838

* swaybar: remove swaybar_output.input_region

No need to keep the region around, we can immediately destroy it
after the wl_surface.set_input_region request.

* swaybar: set opaque region

When the background color is fully opaque, set the surface's opaque
region to the whole surface.

* Updating criteria checking with PCRE2

* swaynag: allocate button_details with details

They are used together, so it doesn't make sense to allocate them
separately.

* swaynag: statically allocate button_close, and move declaration

Every swaynag has a close button, so it doesn't make sense to
allocate it dynamically. The declaration is moved later to when
it is actually needed.

* swaynag: remove unnecessary zero of swaynag struct

Global variables are initialized to 0.

* swaynag: remove redundant status variables in main

Instead, we just use `status` for all failures.

* remove unnecessary strlen call

* sway/input/cursor: take device mm size from wlr_tablet

* sway/input/seat: take output name from specialized input device

* sway/input: follow up wlroots input device events renaming

* sway/input: fix bad position of wlr_drag

* sway/input: wlr_seat_keyboard() now takes wlr_keyboard

* bash-completion: localize variables

* sway/main: move constants off the stack

This makes stack traces from gdb slightly easier to read.

* Fix farsi label

* Avoid format-truncation warning

The existing code gives this error when compiled with GCC 12:

../sway/server.c: In function ‘server_init’:
../sway/server.c:217:75: error: ‘%d’ directive output may be truncated writing between 1 and 11 bytes into a region of size 8 [-Werror=format-truncation=]
  217 |                 snprintf(name_candidate, sizeof(name_candidate), "wayland-%d", i);
      |                                                                           ^~
../sway/server.c:217:66: note: directive argument in the range [-2147483647, 32]
  217 |                 snprintf(name_candidate, sizeof(name_candidate), "wayland-%d", i);
      |                                                                  ^~~~~~~~~~~~
../sway/server.c:217:17: note: ‘snprintf’ output between 10 and 20 bytes into a destination of size 16
  217 |                 snprintf(name_candidate, sizeof(name_candidate), "wayland-%d", i);
      |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Because i is never negative, this is a false positive, but it is easy to
change i to unsigned to silence the error.

* Shuffle variables to satisfy -Werror=restrict

This also fixes an invalid strlen invocation on uninitialized memory.

* layer_shell: keep output non-NULL wherever possible

Our layer shell implementation assigns every layer surface to an output
on creation. It tracks this output using the output field on the
underlying wlr_layer_surface_v1 structure. As such, much of the existing
code assumes that output is always non-NULL and omits NULL checks
accordingly.

However, there are currently two cases where we destroy a
sway_layer_surface and output is NULL. The first is when we can't find
an output to assign the surface to and destroy it immediately after
creation. The second is when we destroy a surface in response to its
output getting destroyed, as we set output to NULL in
handle_output_destroy() before we call wlr_layer_surface_v1_destroy(),
which is what calls the appropriate unmap and destroy callbacks.

The former case doesn't cause any problems, since we haven't even
allocated a sway_layer_surface at that point or registered any
callbacks. The latter case, however, currently triggers a crash (#6120)
if a popup is visible, since our popup_handle_unmap() implementation
can't handle a NULL output.

To fix this issue, keep output set until right before we free the
sway_layer_surface. All we need to do is remove some of the cleanup
logic from handle_output_destroy(), since as of commit c9060bc
("layer-shell: replace close() with destroy()") that same logic is
guaranteed to be happen later when wlroots calls handle_destroy() as
part of wlr_layer_surface_v1_destroy().

This lets us remove some NULL checks from other unmap/destroy callbacks,
which is nice. We also don't need to check that the wlr_output points to
a valid sway_output anymore, since we unset that pointer after disabling
the output as of commit a0bbe67 ("Address emersions comments on
output re-enabling") Just to be safe, I've added assertions that the
wlr_output is non-NULL wherever we use it.

Fixes #6120.

* Chase wlroots X11 hints update

* Add Swedish README

* Support cursor capture in grimshot

Refactor argument parser

Bring back `sh` compatibility

Default to NOTIFY=no

* Update grimshot.1.scd

Fixed typo. The object is **files**, which is plural. **image** modifies files; it's not countable.

* xkb_switch_layout: fix relative layout switches

Fixes #6011

* Implement ext-session-lock-v1

* Avoid inspecting a NULL view in seat_set_focus

Fixes #6968

* swaynag: do error checking and rename read_from_stdin

read_from_stdin not only read from stdin, but trimming trailing
newlines, so rename it to reflect this.

* swaynag: improve robustness when loading config

* swaynag: combine consecutive declaration/assignments

* config: Remove unused mouse binding structure

Mouse bindings are handled alongside normal bindings. Remove the unused
separate data structure definition to avoid confusion.

Signed-off-by: Michael Weiser <michael.weiser@gmx.de>

* Replace strncpy with memcpy

strncpy is useless here, is dangerous because it doesn't guarantee
that the string is NUL-terminated and causes the following warning:

    ../sway/criteria.c: In function ‘criteria_parse’:
    ../sway/criteria.c:712:25: error: ‘strncpy’ destination unchanged after copying no bytes [-Werror=stringop-truncation]
      712 |                         strncpy(value, valuestart, head - valuestart);
          |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

* Add descriptions for `stacking` and `tabbed` layouts

Resolves #5918

* man: Fix trailing spaces

* server: request xdg-shell v2

Wlroots does not yet support the newer xdg-shell versions and now
requires the compositor to set the supported xdg-shell version during
creation. Set this to v2 for sway as well.

Fixes swaywm/sway#7001

* realtime: request SCHED_RR using CAP_SYS_NICE

Try to gain SCHED_RR (round-robin) realtime scheduling privileges before
starting the server. This requires CAP_SYS_NICE on Linux systems.
We additionally register a pthread_atfork callback which resets the
scheduling class back to SCHED_OTHER (the Linux system default).

Due to CAP_SYS_NICE, setting RLIMIT_RTPRIO has no effect on the process
as documented within man 7 sched (from Linux):

  Privileged (CAP_SYS_NICE) threads ignore the RLIMIT_RTPRIO limit;
  as with older kernels, they can make arbitrary changes to
  scheduling policy and priority. See getrlimit(2) for further
  information on RLIMIT_RTPRIO

Note that this requires the sway distribution packagers to set the
CAP_SYS_NICE capability on the sway binary.

Supersedes #6992

* ext-session-lock: disable direct scan-out when locked

* Polish the language in README.zh-CN.md & sync with English one

Co-Authored-By: Urey. Xue <urey.s.knowledge@gmail.com>

* De-duplicate IPC output descriptions

* Handle NULL output make/model/serial

* chore: chase wlroots xdg-shell update

* xdg-shell: schedule a configure on maximize request

This commit reverts 03879290dbee26127f6867ef60bc2a7f9a6c8c5f and
fc84bcb7fb0ffa29b1f9bed287762241a3473803.

* Add a Hindi (हिन्दी) translation to the README

Hindi is one of the most prominent languages of the Indian Subcontinent.
This commit adds the translation of the README into the Hindi language.
Some of the words are still written in English because there wasn't an
appropriate technical term of the word in the language.

Co-authored-by: Surendrajat <surendrajat@protonmail.com>

* sway: add bindgesture command

Co-authored-by: Michael Weiser <michael.weiser@gmx.de>

* build: link with -pthread

Fixes the following FreeBSD error:

    ld: error: undefined symbol: pthread_getschedparam
    >>> referenced by realtime.c:25 (../sway/realtime.c:25)
    >>>               sway/sway.p/realtime.c.o:(set_rr_scheduling)

Fixes: a3a82ef ("realtime: request SCHED_RR using CAP_SYS_NICE")

* ipc: remove chatty debug log messages

These aren't particularly useful, and clobber the debug logs.

* Refuse to start when SUID is detected

This ensures that those surprised by the deprecation of SUID operation
receive an error rather than accidentally having sway run as root.

This detection will be removed in a future release.

* swaynag: move close_button up to fix SIGSEGV

When swaynag_parse_options encounters '--dismiss-button' (or its
shorthand '-s'), it sets the text of the first button in the
swaynag.buttons list, which is expected to exist and to be the dismiss
button, to the one passed by the user.

Commit 4780afb ("swaynag: statically
allocate button_close, and move declaration") moved the list
initialization to after swaynag_parse_options is called which made that
code fail.

For example, the command 'swaynag --dismiss-button Dismiss' crashes and
'swaynag --message Message --button Yes "" --dismiss-button Dismiss'
shows the wrong buttons.

Move it back to before swaynag_parse_options is called.

* config/output: use wlr_output_commit_state

This makes the code more robust because we don't potentially leave
bad state in wlr_output.pending behind anymore. This also fixes a
bug.

Closes: swaywm/sway#7043
References: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/3610

* Allocate enough space for `cmd_results->error`

* Remove access to wlr_input_device union

References: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/3626
Closes: swaywm/sway#7077

* Rename dpms output command to power

The "dpms" command refers to VESA Display Power Management
Signaling, a deprecated standard. It's superseded by VESA DPM.

Instead of tying out command name to a particular standard, use the
neutral term "power".

* Strip quotes in bindsym --input-device=...

If the input device is quoted, which is common when using variables in the
config file, those quotes must be ignored here, or the input device will be
ignored.

Fixes #7029.

* Avoid unecessary string copy

* Reject font values that are invalid for pango

Use pango to parse font configuration early, and reject the command as
invalid if the value is invalid for pango. Since we're already parsing
the font into a `PangoFontDescription`, keep that instance around and
avoid re-parsing the font each time we render text.

Fixes: swaywm/sway#6805

* Reuse parsed PangoFontDescription

Avoids parsing the configured font each time text is rendered.

* ipc: add "power" to output reply

* config.in: switch to `output power`

* Remove internal references to DPMS

While at it, use an int for the config field, just like we do for
all other fields.

* fix: remove redundant empty statement in main.c

This semi-colon looks like a typo. Luckily, it has no effect on the code as it's treated as an empty statement leading the switch case.

Really straightforward nitpick change, was just something I was confused by when reading over the code.

* input: chase delta_discrete semantics change

* swaymsg: fix floating_nodes being ignored

Fix floating_nodes being ignored in pretty_print_tree.

* ipc: make get_deco_rect check config->hide_lone_tab

Without this, the `IPC_GET_TREE` ipc call would return false information
about the container's `deco_rect` and `rect` properties if
`hide_edge_borders --i3` was in effect.

* grimshot: fix tilde expansion within quotes

* Enable single-pixel-buffer-v1

References: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/3428

* sway-output.5: improve display of parameter

Since "width" and "height" are separate parameters, show them as such.

* man: sway(5) move fixes

* ipc: drop WLR_OUTPUT_ADAPTIVE_SYNC_UNKNOWN case

This has been removed from wlroots.

* config/output: test adaptive sync

Required for [1].

[1]: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/3637

* Fix crash in xdg_activation_v1.c

wlr_xdg_surface_from_wlr_surface() can return a NULL pointer, so check for NULL before dereferencing it.

* sway: Add non-desktop-output type

Currently, when encountering a non-desktop display, sway offers the
output for leasing and returns without storing it in a sway specific
output type like `struct sway_output`.  Additionally, running
`swaymsg -t get_outputs` doesn't show non-desktop outputs.

This commit stores the non-desktop outputs into a struct called
`sway_output_non_desktop`, and adds them to a list on `sway_root`

* sway: add non-desktop outputs to json when running `swaymsg -t get_outputs`

* swaymsg: show non-desktop property when pretty printing outputs

* man: Add XWayland information

* ipc: expose mode picture aspect ratio

* swaymsg: show mode picture aspect ratio

* build: simplify protocol paths

No need for arrays here.

* sway/commands/output: Add command for unplugging non-physical outputs

* Improve Japanese translation

* allow pointer_constraints on layer_shell surfaces

* check for NULL

* use seat directly

* Use keyboard_state.focused_surface directly

* input: focus floating container when clicked on border

Fixes #7209.

* input: focus container when scrolling on titlebar

Fixes #6503.

* Fix leaks in criteria_destroy()

* Avoid double free in criteria_destroy()

* Add support for ext-idle-notify-v1

References: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/3753

* input: tweak focus behavior to allow focusing parent containers

Sway focuses the inactive child when focusing split containers. However,
there is currently no way to focus the parent container itself by mouse.
A user must use the keyboard to do so.

This commit maintains the current behavior, but makes it such that a
second click on the split container titlebar (i.e., after its children
are visible) focuses the split container itself.

* Fix keymap being NULL and segfaulting on dev add

Moved `libinput_config` to the callers of
`sway_input_configure_libinput_device` so that we send the event after
the added event.

* Rework session lock keyboard focus handling

When removing outputs, it is possible to end up in a situation where
none of the session lock client's surfaces have keyboard focus,
resulting in it not receiving keyboard events.  Track the focused
surface and update it as needed on surface destroy.

* Fix focus tracking when session lock is active

Remove the incorrect attempt to block focus changes when an input grab
is present and replace it with the same logic used for layer_shell-based
screen lockers: restore the focus after changing it.

This fixes a use-after-free of seat->workspace if outputs are destroyed
while a screen lock is enabled.

* container_floating_set_default_size: Store workspace size box on the stack

* Support libinput's 1.21 new dwtp option

Support the new dwtp (disable while trackpointing) option introduced in
libinput 1.21, allowing users to control whether the trackpoint (like
those in Thinkpads, but not only) should be disabled while using the
keyboard/touchpad.

See: https://gitlab.freedesktop.org/libinput/libinput/-/issues/731

* tree: support formatting null titles

Any windows that have never had a title set visually behave closer to
that of an empty title, but are unformattable, as the code bails out
early on a NULL title.

* criteria: allow matching on empty (NULL) titles

* criteria: allow matching for NULL string criteria

* ci: install hwdata

* Use wl_signal_emit_mutable()

This function fixes segfaults when emitting a signal potentially
removes arbitrary listeners.

* Use wlr_damage_ring

wlr_output_damage is to be replaced with wlr_damage_ring, so use that.

* lock: fix crash on output destroy

Closes: swaywm/sway#7120

* container_get_siblings: handle NULL workspace

* ci: checkout wlroots 0.16.0

* workspace_create: Don't allow NULL name

(cherry picked from commit 34933bb)

* output: set damage ring bounds to pixel values

Fixes: swaywm/sway#7254
(cherry picked from commit 85005b5)

* Use shm_open instead of mkstemp

shm_open is more reliable because it does not require
a writeable filesystem folder, unlike mkstemp.

(cherry picked from commit e2bc886)

* build: drop wayland-scanner fallback

(cherry picked from commit 366f6ef)

* build: unify server & client protocol generation

No need to make a difference here, let's just generate header
files for both.

(cherry picked from commit 5be5a03)

* build: drop "server" from target name for protocol code

(cherry picked from commit e5475d9)

* build: drop intermediate libraries for protocols

(cherry picked from commit af8a5a8)

* root: move the workspace matching code to its own file

This removes the pid_workspace bits from tree/root before it gets
too interesting.

No functional change.

(cherry picked from commit eb5021e)

* node: prettify node type names

(cherry picked from commit 1c4b94a)

* launcher: track workspaces by node

This removes the need to rename the pid_workspaces when a workspace
is renamed.

It also opens the possibility of tracking other node types. Tracking
containers would allow application to be placed correctly in the
container tree even if the user has moved their focus elsewhere since
it was launched.

(cherry picked from commit 3b49f27)

* launcher: use xdga tokens

This reuses wlroots token tracking for workspace matching. It doesn't
export any xdga tokens for clients yet.

(cherry picked from commit bd66f49)

* launcher: rename pid_workspace to launcher_ctx

Soon we will match views with more than just a pid.

(cherry picked from commit d75c9f9)

* view: associate launch contexts with views

Views now maintain a reference to a launch context which, as a last
resort, is populated at map time with a context associated with its pid.
This opens the possibility of populating it before map via another
source, e.g. xdga-tokens or configuration.

(cherry picked from commit 864b3a9)

* launcher: initialize launcher_ctxs once on startup

(cherry picked from commit 6656850)

* launcher: fudge the interface a bit

We want to create a context before knowing the pid it will match with.

(cherry picked from commit bdeb9f9)

* launcher: export xdga tokens and use them for workspace matching

(cherry picked from commit 30ad4dc)

* launcher: export X startup ids and use them for workspace matching

(cherry picked from commit 28fda4c)

* swaybar: Prioritize hotspot events to bar bindings

This is consistent with i3bar's behaviour, and for example, allows binding a
command to button1, while still being able to click on tray icons or other
zones on the bar's status line which may have their own bindings.

E.g., in Sway, without this commit, this config. makes tray icons unclickable:

    bar {
        # ...
        bindsym button1 exec swaynag -m You_clicked_the_tray._Want_some_help?
    }

But the same configuration in i3 (with i3-nagbar) keeps tray items clickable.

Signed-off-by: Joan Bruguera <joanbrugueram@gmail.com>
(cherry picked from commit 53f9dbd)

* swaybar: Make hotspots block bar release bindings

The previous commit prioritized hotspots before bar bindings for press events,
which matches i3's behaviour. However, since hotspots don't need to do any
processing on release events, those were not handled, and simply fell through
to `bindsym --release` bar bindings (if any).

This is counter-intuitive, and doesn't match i3's behaviour. Instead in case
a hotspot handles the press event, it should also handle the release event,
doing nothing, but blocking the event from triggering a --release bar binding.

E.g., in Sway, without this commit, this config. shows a text on tray clicks:

    bar {
        # ...
        bindsym --release button1 exec swaynag -m I_got_the_release_event.
    }

But the same configuration in i3 (with i3-nagbar) doesn't show the text.

Signed-off-by: Joan Bruguera <joanbrugueram@gmail.com>
(cherry picked from commit 94b69ac)

* build: drop unused wayland-egl dependency

(cherry picked from commit 37e4a3d)

* build: bump version to 1.8-rc1

* Fix build on Debian Stable

(cherry picked from commit dca0bb5)

* build: fix have_xwayland when xcb-icccm is not found

xcb-icccm is required to build Xwayland support.

Backported from commit d41f11e.

* build: bump version to 1.8-rc2

* seat: Avoid sending redundant keymaps on reload

When we reload the config, we reset every input device and re-apply
configuration from the config file. This means that the keyboard keymap
is updated at least once during config reload, more if the config file
contains keyboard configuration.

When they keyboard keymap changes and is updated through wlr_seat, the
keymap ends up sent to every keyboard bound in every client, seemingly
multiple times. On an x230 of mine with a keyboard layout set in the
config file, I see 42 keymap events sent to foot on config reload.

Reduce events from keyboard configurations by skipping all but the
currently active keyboard for the seat, and by clearing the active
keyboard during input manager device reset. After this change, I only
see a single just-in-time keymap event.

Fixes: swaywm/sway#6654

* criteria: be lenient on window_role and instance too

* build: bump version to 1.8-rc3

* commands/move: Warp cursor after moving workspace to another output

This makes sway's behavior consistent with i3 when `mouse_warping` is
set to any value besides `none`.

Fixes #7027.

(cherry picked from commit e3c63bf)

* seat: Set keyboard if seat keyboard is NULL

sway sends wl_keyboard.enter on seat focus change and when a keyboard
active on a seat is configured. If all keyboards are removed and a
keyboard is added back without changing the focused client, no new
notify event would be sent despite having keyboard focus. This could
lead to key events without notify, which is a protocol violation.

As a quick fix, when configuring a keyboard on a seat where no keyboard
is currently active, activate the keyboard so that a focused surface
will receive a notify event.

Regressed by: e1b268a
Closes: swaywm/sway#7330

(cherry picked from commit 1ade0ce)

* build: bump version to 1.8-rc4

* swaynag: fix NULL font description

The font description was only set if provided on the CLI. It was
left NULL for the defaults and when reading from the config file.

Closes: swaywm/sway#7186
(cherry picked from commit fd0af78)

* build: bump version to 1.8

* Removed other README languages

* Fixed build issues

* Removed alpha from render_data struct

* Updated PKGBUILDs and COPR spec

* Update sway/desktop/render.c

Co-authored-by: Alexis Tacnet <alexistacnet@gmail.com>

* Fixed deco_data not being initialized properly

* Replaced wlr_egl_(make|unset)_current with eglMakeCurrent

* Added matrix_projection into fx_renderer

Signed-off-by: Michael Weiser <michael.weiser@gmx.de>
Co-authored-by: Sefa Eyeoglu <contact@scrumplex.net>
Co-authored-by: Simon Ser <contact@emersion.fr>
Co-authored-by: Seth Barberee <seth.barberee@gmail.com>
Co-authored-by: Thomas Hebb <tommyhebb@gmail.com>
Co-authored-by: Nathan Schulte <nmschulte@gmail.com>
Co-authored-by: xdavidwu <xdavidwuph@gmail.com>
Co-authored-by: David Rosca <nowrep@gmail.com>
Co-authored-by: David96 <david@hameipe.de>
Co-authored-by: Kenny Levinsen <kl@kl.wtf>
Co-authored-by: Aleksei Bavshin <alebastr89@gmail.com>
Co-authored-by: Kirill Chibisov <contact@kchibisov.com>
Co-authored-by: Tudor Brindus <me@tbrindus.ca>
Co-authored-by: Patrick Hilhorst <git@hilhorst.be>
Co-authored-by: Rouven Czerwinski <rouven@czerwinskis.de>
Co-authored-by: Tobias Bengfort <tobias.bengfort@posteo.de>
Co-authored-by: Ronan Pigott <rpigott@berkeley.edu>
Co-authored-by: Kirill Primak <vyivel@eclair.cafe>
Co-authored-by: Tuomas Yrjölä <mail@yrhki.fi>
Co-authored-by: Kirill Primak <vyivel@posteo.net>
Co-authored-by: Alexander Browne <elcste@users.noreply.github.com>
Co-authored-by: Marco Rubin <20150305+Rubo3@users.noreply.github.com>
Co-authored-by: Muhamed Hobi <woohoomoo2u@gmail.com>
Co-authored-by: Simon Zeni <simon@bl4ckb0ne.ca>
Co-authored-by: Nihal Jere <nihal@nihaljere.xyz>
Co-authored-by: Alexander Gramiak <agrambot@gmail.com>
Co-authored-by: Moon Sungjoon <sumoon@seoulsaram.org>
Co-authored-by: Nicolas Avrutin <nicolas@avrutin.net>
Co-authored-by: ndren <andreien@ctemplar.com>
Co-authored-by: Bill Li <billli11hkb@gmail.com>
Co-authored-by: Leonardo Hernández Hernández <leohdz172@protonmail.com>
Co-authored-by: Oğuz Ersen <oguz@ersen.moe>
Co-authored-by: Manuel Stoeckl <code@mstoeckl.com>
Co-authored-by: Yasin Silavi <59373143+sttatusx@users.noreply.github.com>
Co-authored-by: Daniel De Graaf <code@danieldg.net>
Co-authored-by: kraftwerk28 <kefirchik3@gmail.com>
Co-authored-by: Eskil <67291226+eschillus@users.noreply.github.com>
Co-authored-by: Alice Carroll <git@alice-carroll.pet>
Co-authored-by: Alan <51193876+Pound-Hash@users.noreply.github.com>
Co-authored-by: Victor Makarov <vitja.makarov@gmail.com>
Co-authored-by: Michael Weiser <michael.weiser@gmx.de>
Co-authored-by: -k <slowdive@me.com>
Co-authored-by: Hongyi <61831273+FrozenArcher@users.noreply.github.com>
Co-authored-by: Urey. Xue <urey.s.knowledge@gmail.com>
Co-authored-by: LordRishav <75823494+LordRishav@users.noreply.github.com>
Co-authored-by: Surendrajat <surendrajat@protonmail.com>
Co-authored-by: Florian Franzen <Florian.Franzen@gmail.com>
Co-authored-by: Greg Depoire--Ferrer <greg@gregdf.com>
Co-authored-by: Thomas Jost <schnouki@schnouki.net>
Co-authored-by: Hugo Osvaldo Barrera <hugo@barrera.io>
Co-authored-by: zkldi <ktchidev@gmail.com>
Co-authored-by: llyyr <llyyr.public@gmail.com>
Co-authored-by: Baltazár Radics <baltazar.radics@gmail.com>
Co-authored-by: Martin Michlmayr <tbm@cyrius.com>
Co-authored-by: Filip Szczepański <jazz2rulez@gmail.com>
Co-authored-by: Alex Maese <memaese@hotmail.com>
Co-authored-by: マリウス <marius@xn--gckvb8fzb.com>
Co-authored-by: Andri Yngvason <andri@yngvason.is>
Co-authored-by: ohno418 <yutaro.ono.418@gmail.com>
Co-authored-by: Ferdinand Schober <ferdinand.schober@fau.de>
Co-authored-by: cparm <armelcadetpetit@gmail.com>
Co-authored-by: Yaroslav de la Peña Smirnov <yps@yaroslavps.com>
Co-authored-by: Alexander Orzechowski <orzechowski.alexander@gmail.com>
Co-authored-by: pudiva chip líquida <pudiva@skylittlesystem.org>
Co-authored-by: Puck Meerburg <puck@puckipedia.com>
Co-authored-by: Callum Andrew <calcium@mailbox.org>
Co-authored-by: Ronan Pigott <ronan@rjp.ie>
Co-authored-by: Joan Bruguera <joanbrugueram@gmail.com>
Co-authored-by: nerdopolis <bluescreen_avenger@verizon.net>
Co-authored-by: Ankit Pandey <anpandey@protonmail.com>
Co-authored-by: Alexis Tacnet <alexistacnet@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Not working as intended
Development

Successfully merging a pull request may close this issue.

2 participants