Switching workspaces in ghidra locks up system
Already reported ? *
- [X] I have searched the existing open and closed issues.
Regression?
No
System Info and Version
System/Version info
Hyprland, built from branch main at commit 60308a2bb576413cbc787d4bde4f8d0e3fa3c9d6 (defaultConfig: add a nofocus rule for weird X windows).
Date: Tue Oct 8 12:28:34 2024
Tag: v0.44.0-16-g60308a2b, commits: 5315
built against aquamarine 0.4.2
flags: (if any)
System Information:
System name: Linux
Node name: arch
Release: 6.11.2-zen1-1.1-zen
Version: #1 ZEN SMP PREEMPT_DYNAMIC Sun, 06 Oct 2024 03:15:15 +0000
GPU information:
03:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Navi 21 [Radeon RX 6800/6800 XT / 6900 XT] [1002:73bf] (rev c0) (prog-if 00 [VGA controller])
os-release: NAME="Arch Linux"
PRETTY_NAME="Arch Linux"
ID=arch
BUILD_ID=rolling
ANSI_COLOR="38;2;23;147;209"
HOME_URL="https://archlinux.org/"
DOCUMENTATION_URL="https://wiki.archlinux.org/"
SUPPORT_URL="https://bbs.archlinux.org/"
BUG_REPORT_URL="https://gitlab.archlinux.org/groups/archlinux/-/issues"
PRIVACY_POLICY_URL="https://terms.archlinux.org/docs/privacy-policy/"
LOGO=archlinux-logo
plugins:
======Config-Start======
Config File: /home/beyley/.config/hypr/hyprland.conf: Read Succeeded
#global defines
$lockCommand = hyprlock --immediate
# Monitor definitions
monitor=HDMI-A-1,1920x1080@60,0x0,1
# monitor=HDMI-A-1,1920x1080@60,0x0,1,bitdepth,10
# monitor=DP-2,3440x1440@165,1920x120,1,bitdepth,10
monitor=DP-2,3440x1440@165,1920x120,1
monitor=DP-3,1280x1024@75,5360x120,1,transform,1
# monitor=DP-3,1280x1024@75,5360x120,1,transform,1,bitdepth,10
# Workspaces for main monitor
workspace=1,monitor:DP-2
workspace=2,monitor:DP-2
workspace=3,monitor:DP-2
workspace=4,monitor:DP-2
workspace=5,monitor:DP-2
workspace=6,monitor:DP-2
workspace=7,monitor:DP-2
workspace=8,monitor:DP-2
workspace=9,monitor:DP-2
# Workspaces for right monitor
workspace=11,monitor:DP-3,rounding:false,border:false,gapsout:0,gapsin:0,default:true
workspace=12,monitor:DP-3,rounding:false,border:false,gapsout:0,gapsin:0,default:true
workspace=13,monitor:DP-3,rounding:false,border:false,gapsout:0,gapsin:0,default:true
workspace=14,monitor:DP-3,rounding:false,border:false,gapsout:0,gapsin:0,default:true
workspace=15,monitor:DP-3,rounding:false,border:false,gapsout:0,gapsin:0,default:true
workspace=16,monitor:DP-3,rounding:false,border:false,gapsout:0,gapsin:0,default:true
workspace=17,monitor:DP-3,rounding:false,border:false,gapsout:0,gapsin:0,default:true
workspace=18,monitor:DP-3,rounding:false,border:false,gapsout:0,gapsin:0,default:true
workspace=19,monitor:DP-3,rounding:false,border:false,gapsout:0,gapsin:0,default:true
# Workspaces for left montior
workspace=21,monitor:HDMI-A-1,rounding:false,border:false,gapsout:0,gapsin:0,default:true
workspace=22,monitor:HDMI-A-1,rounding:false,border:false,gapsout:0,gapsin:0,default:true
workspace=23,monitor:HDMI-A-1,rounding:false,border:false,gapsout:0,gapsin:0,default:true
workspace=24,monitor:HDMI-A-1,rounding:false,border:false,gapsout:0,gapsin:0,default:true
workspace=25,monitor:HDMI-A-1,rounding:false,border:false,gapsout:0,gapsin:0,default:true
workspace=26,monitor:HDMI-A-1,rounding:false,border:false,gapsout:0,gapsin:0,default:true
workspace=27,monitor:HDMI-A-1,rounding:false,border:false,gapsout:0,gapsin:0,default:true
workspace=28,monitor:HDMI-A-1,rounding:false,border:false,gapsout:0,gapsin:0,default:true
workspace=29,monitor:HDMI-A-1,rounding:false,border:false,gapsout:0,gapsin:0,default:true
# Force discord onto right monitor
windowrulev2=workspace 11,class:vesktop
# Force dev tools onto dev workspace
windowrulev2=workspace 1,class:^(jetbrains\-)
windowrulev2=workspace 1,class:code
# Force kitty onto terminal workspace
windowrulev2=workspace 2,class:kitty
# Force firefox onto browser workspace
windowrulev2=workspace 3,class:firefox-nightly
# Put ghidra, anki, and bitwarden onto other workspace.
windowrulev2=workspace 4,class:ghidra-Ghidra
windowrulev2=workspace 4,class:anki
windowrulev2=workspace 4,class:Bitwarden
windowrulev2=workspace 5,class:thunderbird
windowrulev2=workspace 6,class:^(steam),floating:0
# Make anki and rpcs3 float
windowrulev2=float,class:anki
windowrulev2=float,class:rpcs3
windowrulev2=center 1,class:anki
windowrulev2=center 1,class:rpcs3
# Force certain apps/windows to not become transparent
windowrulev2=opaque,class:vesktop
windowrulev2=opaque,title:(.*)(- YouTube)(.*)
# Force kitty to always be more transparent
windowrulev2=opacity 0.8,class:kitty
windowrulev2 = immediate, class:^(gamescope)$
windowrulev2 = immediate, class:^(Barotrauma)$
windowrulev2 = immediate, class:^(steam_app_1422450)$
windowrulev2 = immediate, class:^(Minecraft 1.6.4)$
windowrulev2 = immediate, class:^(osu!)$
# windowrulev2 = immediate, class:^(steam_app_1017180)$
exec-once = /usr/lib/polkit-kde-authentication-agent-1
# Activate the dbus environment
exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
# Set custom cursor
exec-once = hyprctl setcursor Patchouli 32
exec-once = gsettings set org.gnome.desktop.interface cursor-theme Patchouli
# Set some default env vars to make apps happy
env = XCURSOR_SIZE,32
# Fixes for IME
env = GTK_IM_MODULE,fcitx
env = QT_IM_MODULE,fcitx
env = XMODIFIERS=@im,fcitx
env = SDL_IM_MODULE,fcitx
env = GLFW_IM_MODULE,ibus
# Force dedicated GPU
# env = WLR_DRM_DEVICES,/dev/dri/card2
# Enable firefox Wayland support
env = MOZ_ENABLE_WAYLAND,1
# Hint electron apps to default to wayland
env = ELECTRON_OZONE_PLATFORM_HINT,wayland
# Make toolkits prefer wayland
env = GDK_BACKEND,wayland,x11,*
env = QT_QPA_PLATFORM,wayland;xcb
# env = SDL_VIDEODRIVER,wayland
env = CLUTTER_BACKEND,wayland
# Make the QT theme qt6ct
env = QT_QPA_PLATFORMTHEME,qt6ct
# Dolphin icon fixes?
env = XDG_MENU_PREFIX,plasma-
# Set the current desktop to hyprland forcefully
env = XDG_CURRENT_DESKTOP,Hyprland
env = XDG_SESSION_TYPE,wayland
env = XDG_SESSION_DESKTOP,Hyprland
# Uncomment this to make xwayland dump debug logs
# env = WLR_XWAYLAND,/home/beyley/xwayland_debug.sh
# Start daemons
exec-once = hypridle
exec-once = kwalletd5
exec-once = fcitx5
exec-once = mako
exec-once = wl-paste --type text --watch cliphist store # Stores only text data
exec-once = wl-paste --type image --watch cliphost store # Stores only image data
# Start default apps
exec-once = waybar
exec-once = vesktop
exec-once = firefox-nightly
exec-once = kitty
exec-once = kitty
exec-once = /usr/lib/pam_kwallet_init
exec-once = /home/beyley/start-portal.sh
# exec-once = kmail
exec-once = thunderbird
exec-once = jetbrains-toolbox
exec-once = bitwarden-desktop
general {
gaps_in = 5
gaps_out = 10
border_size = 2
col.active_border = rgba(a502e0ee) rgba(8f11bdee) 45deg
col.inactive_border = rgba(595959aa)
allow_tearing = true
layout = dwindle
}
decoration {
rounding = 5
blur {
enabled = false
# enabled = true
# size = 5
# passes = 3
}
# inactive_opacity = 0.8
drop_shadow = yes
shadow_range = 4
shadow_render_power = 3
col.shadow = rgba(1a1a1aee)
}
animations {
enabled = yes
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
animation = windows, 1, 7, myBezier
animation = windowsOut, 1, 7, default, popin 80%
animation = border, 1, 10, default
animation = borderangle, 1, 8, default
animation = fade, 1, 7, default
animation = workspaces, 1, 6, default
}
input {
kb_layout = us
kb_variant = workman
kb_model =
kb_options =
kb_rules =
follow_mouse = 1
sensitivity = -0.4
tablet {
output = DP-4
region_size = 1811, 1440
region_position = 0, 0
}
}
dwindle {
pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
preserve_split = yes # you probably want this
}
master {
# new_is_master = true
}
gestures {
workspace_swipe = off
}
misc {
# force_hypr_chan = 1
force_default_wallpaper = 3
vfr = false
vrr = 0
# hide_cursor_on_key_press = 1
# enable this once this is stable
# render_ahead_of_time = true
render_ahead_safezone = 3
# fix red screen of death
allow_session_lock_restore = true
middle_click_paste = false
key_press_enables_dpms = true
}
render {
# explicit_sync = 1
explicit_sync_kms = 2
# direct_scanout = true
}
cursor {
hide_on_key_press = true
inactive_timeout = 10
no_warps = true
}
debug {
# overlay = true
# damage_blink = true
error_position = 1
}
plugin {
hyprtrails {
color = rgba(aa00ffaa)
}
# csgo-vulkan-fix {
# res_w = 3440
# res_h = 1440
#
# # NOT a regex! This is a string and has to exactly match initial_class
# class = cs2
# }
}
$mainMod = SUPER
# Exit the compositor
bind = $mainModSHIFT, M, exit,
# lock command
bind = $mainMod, L, exec, $lockCommand
# App spawning
bind = $mainMod, Q, exec, kitty
bind = $mainMod, E, exec, dolphin
# mod+space for apps, mod+h for clipboard history
bind = $mainMod, SPACE, exec, tofi-drun | xargs hyprctl dispatch exec --
bind = $mainMod, H, exec, cliphist list | tofi | cliphist decode | wl-copy
bind = $mainModSHIFT, H, exec, /home/beyley/.embedfix.sh
#Window controls
bind = $mainMod, C, killactive,
bind = $mainMod, G, togglegroup,
bind = $mainMod, Tab, changegroupactive,
bind = $mainMod, V, togglefloating,
bind = $mainMod, P, pseudo, # dwindle
bind = $mainMod, J, togglesplit, # dwindle
bind = $mainMod, F, fullscreen, 1
bind = $mainModSHIFT, F, fullscreen, 2
bind = $mainMod, left, movefocus, l
bind = $mainMod, right, movefocus, r
bind = $mainMod, up, movefocus, u
bind = $mainMod, down, movefocus, d
# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow
# Switch workspaces with mainMod + [0-9]
bind = $mainMod, 1, exec, hyprsome workspace 1
bind = $mainMod, 2, exec, hyprsome workspace 2
bind = $mainMod, 3, exec, hyprsome workspace 3
bind = $mainMod, 4, exec, hyprsome workspace 4
bind = $mainMod, 5, exec, hyprsome workspace 5
bind = $mainMod, 6, exec, hyprsome workspace 6
bind = $mainMod, 7, exec, hyprsome workspace 7
bind = $mainMod, 8, exec, hyprsome workspace 8
bind = $mainMod, 9, exec, hyprsome workspace 9
# Move active window to a workspace with mainMod + SHIFT + [0-9]
bind = $mainModSHIFT, 1, exec, hyprsome move 1 && hyprsome workspace 1
bind = $mainModSHIFT, 2, exec, hyprsome move 2 && hyprsome workspace 2
bind = $mainModSHIFT, 3, exec, hyprsome move 3 && hyprsome workspace 3
bind = $mainModSHIFT, 4, exec, hyprsome move 4 && hyprsome workspace 4
bind = $mainModSHIFT, 5, exec, hyprsome move 5 && hyprsome workspace 5
bind = $mainModSHIFT, 6, exec, hyprsome move 6 && hyprsome workspace 6
bind = $mainModSHIFT, 7, exec, hyprsome move 7 && hyprsome workspace 7
bind = $mainModSHIFT, 8, exec, hyprsome move 8 && hyprsome workspace 8
bind = $mainModSHIFT, 9, exec, hyprsome move 9 && hyprsome workspace 9
# Screenshot hotkeys
bind = , Print, exec, /home/beyley/screenshot.sh region
bind = Shift, Print, exec, /home/beyley/screenshot.sh window
bind = Ctrl, Print, exec, /home/beyley/screenshot.sh output
# Colour picker
bind = CtrlShift, Print, exec, hyprpicker | awk '{printf("%s", $0)}' | wl-copy
# Make hardware volume slider work
bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+
bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
# Global shortcut hacks (CTRL+SHIFT+F12 is for replay buffer save)
bind = SHIFTCTRL,F12,pass,^(com\.obsproject\.Studio)$
======Config-End========
Description
Inconsistently, when opening/switching ghidra workspaces (not hyprland workspaces), my whole system will instantly lock up, cant switch TTY, cant kill hyprland. I have to hard reset my computer by holding the power button.
How to reproduce
Open ghidra, create a couple workspaces/projects, and switch between them a couple times, it should trigger after a couple tries
Crash reports, logs, images, videos
No crash logs are generated, and since I cant access a terminal, I cant acquire the current hyprland session's logs. What would be the best way to acquire logs here?
sounds like an infinite loop somehow?
ssh to a locked up system, attach gdb to hyprland gdb attach $(pidof Hyprland) and get bt -full
I have the same problem, initially opened a dupe because I didn't find this before, I added dmesg DRM debug logs there but not sure if there's anything helpful (#8105). I'll try to ssh
thanks, check now
Didn't fix it unfortunately. I saw backtraces that didn't land in lookupParentExists, so I'm guessing the loop is happening further outside. I will gather more info when I have time.
Does this help:
0x000063efbd7ecfb4 in Hyprutils::Memory::CWeakPointer<CXWaylandSurface>::incrementWeak (this=0x7ffdd2ce8410) at /usr/include/hyprutils/memory/WeakPtr.hpp:181
181 impl_->incWeak();
[ Legend: Modified register | Code | Heap | Stack | String ]
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── registers ────
$rax : 0x000063efbdc162a8 → 0x000063efbda64f50 → <Hyprutils::Memory::CSharedPointer_::impl<CXWaylandSurface>::~impl()+0000> endbr64
$rbx : 0x00007ffdd2ce8470 → 0x000063efde908e40 → 0x000063efbdc07a00 → 0x000063efbd803e00 → <Hyprutils::Memory::CSharedPointer_::impl<CWindow>::~impl()+0000> endbr64
$rcx : 0x000063efde90a860 → 0x000063efbdc162a8 → 0x000063efbda64f50 → <Hyprutils::Memory::CSharedPointer_::impl<CXWaylandSurface>::~impl()+0000> endbr64
$rdx : 0x000063efde908d80 → 0x000063efbdc162a8 → 0x000063efbda64f50 → <Hyprutils::Memory::CSharedPointer_::impl<CXWaylandSurface>::~impl()+0000> endbr64
$rsp : 0x00007ffdd2ce8400 → 0x000063efde57b9a0 → 0x000063efbdc07ba8 → 0x000063efbd801ee0 → <Hyprutils::Memory::CSharedPointer_::impl<CWorkspace>::~impl()+0000> endbr64
$rbp : 0x00007ffdd2ce8440 → 0x00007ffdd2ce84b0 → 0x00007ffdd2ce85b0 → 0x00007ffdd2ce8880 → 0x00007ffdd2ce88d0 → 0x00007ffdd2ce8920 → 0x00007ffdd2ce89e0 → 0x00007ffdd2ce8ac0
$rsi : 0x000063efdea00800 → 0x000063efde912e90 → 0x000063efbdc07270 → 0x000063efbd775b10 → <Hyprutils::Memory::CSharedPointer_::impl<CWLSurface>::~impl()+0000> endbr64
$rdi : 0x000063efde9fcca0 → 0x000063efbdc162a8 → 0x000063efbda64f50 → <Hyprutils::Memory::CSharedPointer_::impl<CXWaylandSurface>::~impl()+0000> endbr64
$rip : 0x000063efbd7ecfb4 → <CWindow::X11TransientFor()+01b4> call QWORD PTR [rax+0x20]
$r8 : 0x35352fe6929161
$r9 : 0x7
$r10 : 0x0
$r11 : 0x000076f0b7af6080 → 0x000076f0b7af6080
$r12 : 0x000063efdd632d30 → 0x000063efde9088b0 → 0x000063efbdc14f28 → 0x000063efbd9e0db0 → <Hyprutils::Memory::CSharedPointer_::impl<CWLSurfaceResource>::~impl()+0000> endbr64
$r13 : 0x000063efde9052a0 → "d of 4194396\n"
$r14 : 0x00007ffdd2ce8510 → 0x00007ffdd2ce8520 → 0x000063efde7d2130 → 0x000063e9e0835a92
$r15 : 0x00007ffdd2ce8508 → 0x000063efde8f0220 → 0x000063efbdc07a00 → 0x000063efbd803e00 → <Hyprutils::Memory::CSharedPointer_::impl<CWindow>::~impl()+0000> endbr64
$eflags: [zero carry PARITY adjust sign trap INTERRUPT direction overflow resume virtualx86 identification]
$cs: 0x33 $ss: 0x2b $ds: 0x00 $es: 0x00 $fs: 0x00 $gs: 0x00
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── stack ────
0x00007ffdd2ce8400│+0x0000: 0x000063efde57b9a0 → 0x000063efbdc07ba8 → 0x000063efbd801ee0 → <Hyprutils::Memory::CSharedPointer_::impl<CWorkspace>::~impl()+0000> endbr64 ← $rsp
0x00007ffdd2ce8408│+0x0008: 0x000063efde90a860 → 0x000063efbdc162a8 → 0x000063efbda64f50 → <Hyprutils::Memory::CSharedPointer_::impl<CXWaylandSurface>::~impl()+0000> endbr64
0x00007ffdd2ce8410│+0x0010: 0x000063efde9fcca0 → 0x000063efbdc162a8 → 0x000063efbda64f50 → <Hyprutils::Memory::CSharedPointer_::impl<CXWaylandSurface>::~impl()+0000> endbr64
0x00007ffdd2ce8418│+0x0018: 0xac5067ef4db66800
0x00007ffdd2ce8420│+0x0020: 0x00007ffdd2ce8490 → 0x0000000000000001
0x00007ffdd2ce8428│+0x0028: 0x000063efde905298 → 0x000063efde8f0220 → 0x000063efbdc07a00 → 0x000063efbd803e00 → <Hyprutils::Memory::CSharedPointer_::impl<CWindow>::~impl()+0000> endbr64
0x00007ffdd2ce8430│+0x0030: 0x00007ffdd2ce8470 → 0x000063efde908e40 → 0x000063efbdc07a00 → 0x000063efbd803e00 → <Hyprutils::Memory::CSharedPointer_::impl<CWindow>::~impl()+0000> endbr64
0x00007ffdd2ce8438│+0x0038: 0x000063efde9052a0 → "d of 4194396\n"
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── code:x86:64 ────
0x63efbd7ecfac <CWindow::X11TransientFor()+01ac> test rdi, rdi
0x63efbd7ecfaf <CWindow::X11TransientFor()+01af> je 0x63efbd7ecff0 <_ZN7CWindow15X11TransientForEv+496>
0x63efbd7ecfb1 <CWindow::X11TransientFor()+01b1> mov rax, QWORD PTR [rdi]
→ 0x63efbd7ecfb4 <CWindow::X11TransientFor()+01b4> call QWORD PTR [rax+0x20]
0x63efbd7ecfb7 <CWindow::X11TransientFor()+01b7> mov rdi, QWORD PTR [rbp-0x30]
0x63efbd7ecfbb <CWindow::X11TransientFor()+01bb> jmp 0x63efbd7ecec2 <_ZN7CWindow15X11TransientForEv+194>
0x63efbd7ecfc0 <CWindow::X11TransientFor()+01c0> mov QWORD PTR [rbx], 0x0
0x63efbd7ecfc7 <CWindow::X11TransientFor()+01c7> mov rax, QWORD PTR [rbp-0x28]
0x63efbd7ecfcb <CWindow::X11TransientFor()+01cb> sub rax, QWORD PTR fs:0x28
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── arguments (guessed) ────
*[rax+0x20] (
$rdi = 0x000063efde9fcca0 → 0x000063efbdc162a8 → 0x000063efbda64f50 → <Hyprutils::Memory::CSharedPointer_::impl<CXWaylandSurface>::~impl()+0000> endbr64
)
───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── source:/usr/include/hy[...]WeakPtr.hpp+181 ────
176 /* no-op if there is no impl_ */
177 void incrementWeak() {
178 if (!impl_)
179 return;
180
→ 181 impl_->incWeak();
182 }
183 };
184 }
185 }
186
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── threads ────
[#0] Id 12, Name: "Hyprla:traceq0", stopped 0x76f0b6db0a19 in __futex_abstimed_wait_common64 (), reason: STOPPED
[#1] Id 3, Name: "dconf worker", stopped 0x76f0b6e2bbb0 in __GI_ppoll (), reason: STOPPED
[#2] Id 11, Name: "Hyprland:gdrv0", stopped 0x76f0b6db0a19 in __futex_abstimed_wait_common64 (), reason: STOPPED
[#3] Id 7, Name: "Hyprland:gdrv0", stopped 0x76f0b6db0a19 in __futex_abstimed_wait_common64 (), reason: STOPPED
[#4] Id 10, Name: "Hyprlan:disk$0", stopped 0x76f0b6db0a19 in __futex_abstimed_wait_common64 (), reason: STOPPED
[#5] Id 9, Name: "Hyprland:sh0", stopped 0x76f0b6db0a19 in __futex_abstimed_wait_common64 (), reason: STOPPED
[#6] Id 6, Name: "Hyprland", stopped 0x76f0b6e371fd in syscall (), reason: STOPPED
[#7] Id 8, Name: "Hyprla:traceq0", stopped 0x76f0b6db0a19 in __futex_abstimed_wait_common64 (), reason: STOPPED
[#8] Id 5, Name: "pool-spawner", stopped 0x76f0b6e371fd in syscall (), reason: STOPPED
[#9] Id 15, Name: "Hyprland:sh0", stopped 0x76f0b6db0a19 in __futex_abstimed_wait_common64 (), reason: STOPPED
[#10] Id 13, Name: "Hyprland:gdrv0", stopped 0x76f0b6db0a19 in __futex_abstimed_wait_common64 (), reason: STOPPED
[#11] Id 4, Name: "gmain", stopped 0x76f0b6e2bbb0 in __GI_ppoll (), reason: STOPPED
[#12] Id 2, Name: "gdbus", stopped 0x76f0b6e2bbb0 in __GI_ppoll (), reason: STOPPED
[#13] Id 14, Name: "Hyprla:traceq0", stopped 0x76f0b6db0a19 in __futex_abstimed_wait_common64 (), reason: STOPPED
[#14] Id 1, Name: "Hyprland", stopped 0x63efbd7ecfb4 in Hyprutils::Memory::CWeakPointer<CXWaylandSurface>::incrementWeak (), reason: STOPPED
[#15] Id 16, Name: "Hyprlan:disk$0", stopped 0x76f0b6db0a19 in __futex_abstimed_wait_common64 (), reason: STOPPED
[#16] Id 17, Name: "Hyprland:sh0", stopped 0x76f0b6db0a19 in __futex_abstimed_wait_common64 (), reason: STOPPED
[#17] Id 18, Name: "Hyprlan:disk$0", stopped 0x76f0b6db0a19 in __futex_abstimed_wait_common64 (), reason: STOPPED
[#18] Id 19, Name: "Hyprland", stopped 0x76f0b6db0a19 in __futex_abstimed_wait_common64 (), reason: STOPPED
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── trace ────
[#0] 0x63efbd7ecfb4 → Hyprutils::Memory::CWeakPointer<CXWaylandSurface>::incrementWeak(this=0x7ffdd2ce8410)
[#1] 0x63efbd7ecfb4 → Hyprutils::Memory::CWeakPointer<CXWaylandSurface>::operator=(this=0x7ffdd2ce8410, rhs=@0x63efdd632fb8)
[#2] 0x63efbd7ecfb4 → Hyprutils::Memory::CWeakPointer<CXWaylandSurface>::operator=(this=0x7ffdd2ce8410, rhs=@0x63efdd632fb8)
[#3] 0x63efbd7ecfb4 → CWindow::X11TransientFor(this=<optimized out>)
[#4] 0x63efbd754ada → void CCompositor::changeWindowZOrder(Hyprutils::Memory::CSharedPointer<CWindow>, bool)::{lambda(Hyprutils::Memory::CSharedPointer<CWindow>, bool, auto:1&&)#1}::operator()<{lambda(Hyprutils::Memory::CSharedPointer<CWindow>, bool, auto:1&&)#1}&>(Hyprutils::Memory::CSharedPointer<CWindow>, bool, {lambda(Hyprutils::Memory::CSharedPointer<CWindow>, bool, auto:1&&)#1}&) const [clone .lto_priv.0]()
[#5] 0x63efbd734aff → CCompositor::changeWindowZOrder(this=0x63efdd58afe0, pWindow={
impl_ = <optimized out>
}, top=0x1)
[#6] 0x63efbd81d365 → Events::listener_mapWindow(owner=<optimized out>, data=<optimized out>)
[#7] 0x63efbd7f9d8b → operator()(__closure=0x63efdea0f330, d={
_M_manager = 0x0,
_M_storage = {
_M_ptr = 0x0,
_M_buffer = {
__data = "\000\000\000\000\000\000\000",
__align = {<No data fields>}
}
}
})
[#8] 0x63efbd7f9d8b → std::__invoke_impl<void, CWindow::CWindow(Hyprutils::Memory::CSharedPointer<CXWaylandSurface>)::<lambda(std::any)>&, std::any>(__f=@0x63efdea0f330)
[#9] 0x63efbd7f9d8b → std::__invoke_r<void, CWindow::CWindow(Hyprutils::Memory::CSharedPointer<CXWaylandSurface>)::<lambda(std::any)>&, std::any>(__fn=@0x63efdea0f330)
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
gef➤
gef➤ f 3
#3 CWindow::X11TransientFor (this=<optimized out>) at /usr/src/debug/hyprland/Hyprland-0.44.1/src/desktop/Window.cpp:460
460 s = s->parent;
gef➤ f 4
#4 0x000063efbd754ada in void CCompositor::changeWindowZOrder(Hyprutils::Memory::CSharedPointer<CWindow>, bool)::{lambda(Hyprutils::Memory::CSharedPointer<CWindow>, bool, auto:1&&)#1}::operator()<{lambda(Hyprutils::Memory::CSharedPointer<CWindow>, bool, auto:1&&)#1}&>(Hyprutils::Memory::CSharedPointer<CWindow>, bool, {lambda(Hyprutils::Memory::CSharedPointer<CWindow>, bool, auto:1&&)#1}&) const [clone .lto_priv.0] () at /usr/src/debug/hyprland/Hyprland-0.44.1/src/Compositor.cpp:1409
1409 if (w->m_bIsMapped && !w->isHidden() && w->m_bIsX11 && w->X11TransientFor() == pw && w != pw && std::find(toMove.begin(), toMove.end(), w) == toMove.end()) {
gef➤
yep, try now
It's fixed for me ! Thanks.
hey, I had ghidra randomly hanging the whole wm and pegging one core for a little while, but in the last few days it's been constant, and I never found what exactly triggers it.
After finding this issue, I upgraded to 0e630e9 (latest main atm), but it did not help
bt seems slightly different from above
#0 0x00000000009c4e90 in Hyprutils::Memory::CSharedPointer_::impl<CXWaylandSurface>::dataNonNull() ()
#1 0x00000000009bd64c in CXWM::readProp(Hyprutils::Memory::CSharedPointer<CXWaylandSurface>, unsigned int, xcb_get_property_reply_t*) ()
#2 0x00000000009be836 in CXWM::readWindowData(Hyprutils::Memory::CSharedPointer<CXWaylandSurface>) ()
#3 0x00000000009becde in CXWM::handleMapRequest(xcb_map_request_event_t*) ()
#4 0x00000000009c48fb in CXWM::onEvent(int, unsigned int) ()
#5 0x00007f501058bf7f in wl_event_loop_dispatch ()
from /nix/store/l741d824qd6gxyxbn25gg70bj0hr2nsc-wayland-1.23.1/lib/libwayland-server.so.0
#6 0x00007f50105895d5 in wl_display_run ()
from /nix/store/l741d824qd6gxyxbn25gg70bj0hr2nsc-wayland-1.23.1/lib/libwayland-server.so.0
#7 0x000000000077281f in CEventLoopManager::enterLoop() ()
#8 0x00000000006e7e8a in main ()
Wait, looking closer and seeing the handleMapRequest I just realised what changed in the last few days, instead of grouping the stupid project window I reverted to the older habit of unmapping it.
"well dont unmap it then duh" - sure, but it's still a bug idk
Now it doesn't seem to almost-immediately hang, and hopefully the fix from here fixed those rarer hangs. Still, ghidra also doesn't like being unmapped too.
X11 is a mess and I do not have the capacity to deal with all the oddities, sorry. As long as it works or there is a workaround I don't think it's reasonable for me to spend hours debugging it (which in many cases fails)
Sure, I left my point of data more to track this, someone might arrive here from google and see that it's the unmapping that causes the issue after the fixes from here ¯\_(ツ)_/¯ (which is a thing people do with this useless ghidra project window on tiling wms in place of minimizing)
I'd personally reopen this, rename it to "ghidra/java/x11 hangs" and add a "wontfix/need volunteers" tags or something
you can open a new issue - OP said it's fixed for him so yours is different
Apologies, was busy and didn't have time to respond/test, I can confirm that my original issue is fixed now in the latest commits.