Hyprland icon indicating copy to clipboard operation
Hyprland copied to clipboard

Switching workspaces in ghidra locks up system

Open Beyley opened this issue 1 year ago • 1 comments

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?

Beyley avatar Oct 09 '24 02:10 Beyley

sounds like an infinite loop somehow?

ssh to a locked up system, attach gdb to hyprland gdb attach $(pidof Hyprland) and get bt -full

vaxerski avatar Oct 09 '24 10:10 vaxerski

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

cluosh avatar Oct 13 '24 15:10 cluosh

Backtrace from SSHing in:

bt.txt

cluosh avatar Oct 13 '24 16:10 cluosh

thanks, check now

vaxerski avatar Oct 13 '24 23:10 vaxerski

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.

cluosh avatar Oct 14 '24 11:10 cluosh

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➤  

pix avatar Oct 15 '24 20:10 pix

yep, try now

vaxerski avatar Oct 16 '24 21:10 vaxerski

It's fixed for me ! Thanks.

pix avatar Oct 17 '24 20:10 pix

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.

necauqua avatar Oct 18 '24 17:10 necauqua

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)

vaxerski avatar Oct 18 '24 17:10 vaxerski

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

necauqua avatar Oct 18 '24 17:10 necauqua

you can open a new issue - OP said it's fixed for him so yours is different

vaxerski avatar Oct 18 '24 18:10 vaxerski

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.

Beyley avatar Oct 18 '24 20:10 Beyley