hyprwm / Hyprland

Hyprland is an independent, highly customizable, dynamic tiling Wayland compositor that doesn't sacrifice on its looks.
https://hyprland.org
BSD 3-Clause "New" or "Revised" License
19.64k stars 830 forks source link

Sporadic Crashing #533

Closed JoshuaFern closed 2 years ago

JoshuaFern commented 2 years ago

Not sure the cause. Probably not a one off bug, had crashes like this before but I didn't look into it.

Nvidia/NixOS

coredump.log

vaxerski commented 2 years ago

check on latest, cant promise anything tho as i couldnt reproduce this so i had to take a guess

ThatOneCalculator commented 2 years ago

Possibly nvidia related?

vaxerski commented 2 years ago

no, lol, the crash is clearly hl

ThatOneCalculator commented 2 years ago

guess im just bad at reading logs kek

JoshuaFern commented 2 years ago

Thanks, I'll follow up if it happens again.

JoshuaFern commented 2 years ago

Hi, had two more crashes today with the latest hyprland.

coredump.log

vaxerski commented 2 years ago

no, you did not. It's just your fantasy.

(jk let me finish my shower i'll fix that rq)

JoshuaFern commented 2 years ago

And here's the other crash log... coredump.log

vaxerski commented 2 years ago

I think I fixed it. Please verify.

JoshuaFern commented 2 years ago

Seems okay, no crashes so far.

JoshuaFern commented 2 years ago

Hi, had two crashes today.

I was playing a game and switched workspaces when this one happened. coredump.log

Not sure what I was doing during this one. coredump.log

JoshuaFern commented 2 years ago

Another one... coredump.log

vaxerski commented 2 years ago

might be fixed. Coredump pretty weird.

JoshuaFern commented 2 years ago

Thanks, closing until it happens again.

JoshuaFern commented 2 years ago

I'm back again.

hyprland.log coredump.log

vaxerski commented 2 years ago

might be fixed in 7f483dfdb0be9c8d22a6de49ed666c04122138fa

although I'm worried about this log, right at the end:

[ERR] Node 25ace00 holding invalid window 1c36480!!

Meaning you corrupted the dwindle binary tree. What were you doing? I see this mysterious script:

[LOG] Executing WAYLAND_DISPLAY=wayland-0 DISPLAY=:0 CW=$(hyprctl -j monitors | jq '.[]|.activeWorkspace.id'); if [ $CW = "5" ]; then NW=15; else NW=5; fi; hyprctl dispatch workspace $NW

but i suck at those, what does this do?

JoshuaFern commented 2 years ago

Meaning you corrupted the dwindle binary tree. What were you doing?

I was just playing a game, it was using Proton.

but i suck at those, what does this do?

It's a hacky way to setup my workspace switching, basically it uses jq to parse the json output of hyprctl so I can have twice as many workspaces with the same buttons.

Like if I'm on workspace 2 and I hit the workspace 1 bind it goes to workspace 1, and I hit the workspace 1 bind again while on workspace 1 it goes to workspace 11 instead. Every workspace has like a mirror workspace that I can store other windows on.

Here's how it looks in my config:

    # Double tap workspaces
    bind=SUPER,1,exec,CW=$(hyprctl -j monitors | jq '.[]|.activeWorkspace.id'); if [ $CW = "1" ]; then NW=11; else NW=1; fi; hyprctl dispatch workspace $NW
    bind=SUPERSHIFT,1,exec,CW=$(hyprctl -j monitors | jq '.[]|.activeWorkspace.id'); if [ $CW = "1" ]; then NW=11; else NW=1; fi; hyprctl dispatch movetoworkspacesilent $NW
    bind=SUPER,2,exec,CW=$(hyprctl -j monitors | jq '.[]|.activeWorkspace.id'); if [ $CW = "2" ]; then NW=12; else NW=2; fi; hyprctl dispatch workspace $NW
    bind=SUPERSHIFT,2,exec,CW=$(hyprctl -j monitors | jq '.[]|.activeWorkspace.id'); if [ $CW = "2" ]; then NW=12; else NW=2; fi; hyprctl dispatch movetoworkspacesilent $NW
    bind=SUPER,3,exec,CW=$(hyprctl -j monitors | jq '.[]|.activeWorkspace.id'); if [ $CW = "3" ]; then NW=13; else NW=3; fi; hyprctl dispatch workspace $NW
    bind=SUPERSHIFT,3,exec,CW=$(hyprctl -j monitors | jq '.[]|.activeWorkspace.id'); if [ $CW = "3" ]; then NW=13; else NW=3; fi; hyprctl dispatch movetoworkspacesilent $NW
    bind=SUPER,4,exec,CW=$(hyprctl -j monitors | jq '.[]|.activeWorkspace.id'); if [ $CW = "4" ]; then NW=14; else NW=4; fi; hyprctl dispatch workspace $NW
    bind=SUPERSHIFT,4,exec,CW=$(hyprctl -j monitors | jq '.[]|.activeWorkspace.id'); if [ $CW = "4" ]; then NW=14; else NW=4; fi; hyprctl dispatch movetoworkspacesilent $NW
    bind=SUPER,5,exec,CW=$(hyprctl -j monitors | jq '.[]|.activeWorkspace.id'); if [ $CW = "5" ]; then NW=15; else NW=5; fi; hyprctl dispatch workspace $NW
    bind=SUPERSHIFT,5,exec,CW=$(hyprctl -j monitors | jq '.[]|.activeWorkspace.id'); if [ $CW = "5" ]; then NW=15; else NW=5; fi; hyprctl dispatch movetoworkspacesilent $NW
    bind=SUPER,6,exec,CW=$(hyprctl -j monitors | jq '.[]|.activeWorkspace.id'); if [ $CW = "6" ]; then NW=16; else NW=6; fi; hyprctl dispatch workspace $NW
    bind=SUPERSHIFT,6,exec,CW=$(hyprctl -j monitors | jq '.[]|.activeWorkspace.id'); if [ $CW = "6" ]; then NW=16; else NW=6; fi; hyprctl dispatch movetoworkspacesilent $NW
    bind=SUPER,7,exec,CW=$(hyprctl -j monitors | jq '.[]|.activeWorkspace.id'); if [ $CW = "7" ]; then NW=17; else NW=7; fi; hyprctl dispatch workspace $NW
    bind=SUPERSHIFT,7,exec,CW=$(hyprctl -j monitors | jq '.[]|.activeWorkspace.id'); if [ $CW = "7" ]; then NW=17; else NW=7; fi; hyprctl dispatch movetoworkspacesilent $NW
    bind=SUPER,8,exec,CW=$(hyprctl -j monitors | jq '.[]|.activeWorkspace.id'); if [ $CW = "8" ]; then NW=18; else NW=8; fi; hyprctl dispatch workspace $NW
    bind=SUPERSHIFT,8,exec,CW=$(hyprctl -j monitors | jq '.[]|.activeWorkspace.id'); if [ $CW = "8" ]; then NW=18; else NW=8; fi; hyprctl dispatch movetoworkspacesilent $NW
    bind=SUPER,9,exec,CW=$(hyprctl -j monitors | jq '.[]|.activeWorkspace.id'); if [ $CW = "9" ]; then NW=19; else NW=9; fi; hyprctl dispatch workspace $NW
    bind=SUPERSHIFT,9,exec,CW=$(hyprctl -j monitors | jq '.[]|.activeWorkspace.id'); if [ $CW = "9" ]; then NW=19; else NW=9; fi; hyprctl dispatch movetoworkspacesilent $NW
    bind=SUPER,0,exec,CW=$(hyprctl -j monitors | jq '.[]|.activeWorkspace.id'); if [ $CW = "10" ]; then NW=20; else NW=10; fi; hyprctl dispatch workspace $NW
    bind=SUPERSHIFT,0,exec,CW=$(hyprctl -j monitors | jq '.[]|.activeWorkspace.id'); if [ $CW = "10" ]; then NW=20; else NW=10; fi; hyprctl dispatch movetoworkspacesilent $NW
    bind=SUPER,grave,togglespecialworkspace
    bind=SUPERSHIFT,asciitilde,movetoworkspacesilent,special

Let me know if you have a better way to do this.

JoshuaFern commented 2 years ago

Hi, back again. Was playing Splitgate when it crashed this time.

hyprland.log coredump.log

vaxerski commented 2 years ago

yuck, splatgate

vaxerski commented 2 years ago

Although I am unsure what happened and why, might be fixed in ff26531e11b55854c5937dac2f2ba121c78e11b9

JoshuaFern commented 2 years ago

That was fast, thanks again.

JoshuaFern commented 2 years ago

Happened again

hyprland.log coredump.log

vaxerski commented 2 years ago

can you fucking stop breaking my software? >:((

vaxerski commented 2 years ago

cb839c9dcc0196312e5c6b7014114d9b489e0632 should prevent this crash. Although this might cause some layout issues whenever it would've crashed before.

Can you tell me what you were doing though? This is some spooky fucking shit that's happening. Somehow you're on a workspace with a fullscreen window that doesnt have a fullscreen window.

JoshuaFern commented 2 years ago

What can I say? I'm apparently great at breaking things.

I wasn't doing anything crazy, just using my computer as I normally do. I think I was just closing a window when the crash happened.

Here's my hyprland.conf if you'd like to review it https://gist.github.com/JoshuaFern/b7752eb6856a531e8e3552b88832457b

vaxerski commented 2 years ago

what window were you closing? maybe i can repro this? Again, your issue stems from a workspace with an apparently fucking quantum state of fullscreen-ness

JoshuaFern commented 2 years ago

I don't remember what I was closing, might be related to https://github.com/hyprwm/Hyprland/issues/625

JustSimplyKyle commented 2 years ago

Crash, when opening/switching layouts and playing osu log: https://0x0.st/ofMJ.log hyprland coredump: https://0x0.st/ofMy.txt xwayland coredump: https://0x0.st/ofMt.txt

vaxerski commented 2 years ago

can you give me bt -full from the gdb debug console of this dump? coredumpctl debug <pid> and then once you get to (gdb) do bt -full

JustSimplyKyle commented 2 years ago

xwayland: image Hyprland: image

is this what you want?

vaxerski commented 2 years ago

yes thank you

shame the dump didnt record even locals, meh