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

Switching workspaces in ghidra locks up system #8045

Closed
1 task done
Beyley opened this issue Oct 9, 2024 · 13 comments
Closed
1 task done

Switching workspaces in ghidra locks up system #8045

Beyley opened this issue Oct 9, 2024 · 13 comments
Labels
bug Something isn't working

Comments

@Beyley
Copy link

Beyley commented Oct 9, 2024

Already reported ? *

  • 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 Beyley added the bug Something isn't working label Oct 9, 2024
@vaxerski
Copy link
Member

vaxerski commented Oct 9, 2024

sounds like an infinite loop somehow?

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

@cluosh
Copy link

cluosh commented Oct 13, 2024

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
Copy link

cluosh commented Oct 13, 2024

Backtrace from SSHing in:

bt.txt

@vaxerski
Copy link
Member

thanks, check now

@cluosh
Copy link

cluosh commented Oct 14, 2024

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.

@pix
Copy link

pix commented Oct 15, 2024

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➤  

@vaxerski
Copy link
Member

yep, try now

@pix
Copy link

pix commented Oct 17, 2024

It's fixed for me ! Thanks.

@necauqua
Copy link

necauqua commented Oct 18, 2024

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.

@vaxerski
Copy link
Member

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)

@necauqua
Copy link

necauqua commented Oct 18, 2024

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

@vaxerski
Copy link
Member

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

@Beyley
Copy link
Author

Beyley commented Oct 18, 2024

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

5 participants