domferr / domferr/tilingshell

Desktop freezes occasionally when tiling

Open
#529 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
2k
Forks
116
PR merge metrics
No merged PRs in 30d

Description

**Describe the bug**
Sometimes when I tile a window, my whole desktop locks up. Audio keeps playing, the screen still shows the last thing I was doing, but I cannot interact with the computer.

I *think* it mostly occurs when I have a picture-in-picture open from Chromium (which is above/sticky, i.e. always on top and always on active workspace), but I'm not totally sure.

Upon inspecting `journalctl -q | grep -C20 tilingshell`, I see the following extremely suspect stacktrace:
```
Mar 19 13:20:23 OAK-0127-LL gnome-shell[20508]: JS ERROR: too much recursion
getWindows@/home/x/.local/share/gnome-shell/extensions/tilingshell@ferrarodomenico.com/utils/ui.js:120:1
_onTiledWindowRaised@/home/x/.local/share/gnome-shell/extensions/tilingshell@ferrarodomenico.com/components/raiseTogether/raiseTogetherManager.js:63:15
_connectRaisedSignal/raisedId<@/home/x/.local/share/gnome-shell/extensions/tilingshell@ferrarodomenico.com/components/raiseTogether/raiseTogetherManager.js:53:12
_onTiledWindowRaised/<@/home/x/.local/share/gnome-shell/extensions/tilingshell@ferrarodomenico.com/components/raiseTogether/raiseTogetherManager.js:66:24
_onTiledWindowRaised@/home/x/.local/share/gnome-shell/extensions/tilingshell@ferrarodomenico.com/components/raiseTogether/raiseTogetherManager.js:63:27
_connectRaisedSignal/raisedId<@/home/x/.local/share/gnome-shell/extensions/tilingshell@ferrarodomenico.com/components/raiseTogether/raiseTogetherManager.js:53:12
_onTiledWindowRaised/<@/home/x/.local/share/gnome-shell/extensions/tilingshell@ferrarodomenico.com/components/raiseTogether/raiseTogetherManager.js:66:24
_onTiledWindowRaised@/home/x/.local/share/gnome-shell/extensions/tilingshell@ferrarodomenico.com/components/raiseTogether/raiseTogetherManager.js:63:27
_connectRaisedSignal/raisedId<@/home/x/.local/share/gnome-shell/extensions/tilingshell@ferrarodomenico.com/components/raiseTogether/raiseTogetherManager.js:53:12
_onTiledWindowRaised/<@/home/x/.local/share/gnome-shell/extensions/tilingshell@ferrarodomenico.com/components/raiseTogether/raiseTogetherManager.js:66:24
_onTiledWindowRaised@/home/x/.local/share/gnome-shell/extensions/tilingshell@ferrarodomenico.com/components/raiseTogether/raiseTogetherManager.js:63:27
_connectRaisedSignal/raisedId<@/home/x/.local/share/gnome-shell/extensions/tilingshell@ferrarodomenico.com/components/raiseTogether/raiseTogetherManager.js:53:12
_onTiledWindowRaised/<@/home/x/.local/share/gnome-shell/extensions/tilingshell@ferrarodomenico.com/components/raiseTogether/raiseTogetherManager.js:66:24
_onTiledWindowRaised@/home/x/.local/share/gnome-shell/extensions/tilingshell@ferrarodomenico.com/components/raiseTogether/raiseTogetherManager.js:63:27
_connectRaisedSignal/raisedId<@/home/x/.local/share/gnome-shell/extensions/tilingshell@ferrarodomenico.com/components/raiseTogether/raiseTogetherManager.js:53:12
_onTiledWindowRaised/<@/home/x/.local/share/gnome-shell/extensions/tilingshell@ferrarodomenico.com/components/raiseTogether/raiseTogetherManager.js:66:24
_onTiledWindowRaised@/home/x/.local/share/gnome-shell/extensions/tilingshell@ferrarodomenico.com/components/raiseTogether/raiseTogetherManager.js:63:27
_connectRaisedSignal/raisedId<@/home/x/.local/share/gnome-shell/extensions/tilingshell@ferrarodomenico.com/components/raiseTogether/raiseTogetherManager.js:53:12
_onTiledWindowRaised/<@/home/x/.local/share/gnome-shell/extensions/tilingshell@ferrarodomenico.com/components/raiseTogether/raiseTogetherManager.js:66:24
_onTiledWindowRaised@/home/x/.local/share/gnome-shell/extensions/tilingshell@ferrarodomenico.com/components/raiseTogether/raiseTogetherManager.js:63:27
_connectRaisedSignal/raisedId<@/home/x/.local/share/gnome-shell/extensions/tilingshell@ferrarodomenico.com/components/raiseTogether/raiseTogetherManager.js:53:12
_onTiledWindowRaised/<@/home/x/.local/share/gnome-shell/extensions/tilingshell@ferrarodomenico.com/components/raiseTogether/raiseTogetherManager.js:66:24
_onTiledWindowRaised@/home/x/.local/share/gnome-shell/extensions/tilingshell@ferrarodomenico.com/components/raiseTogether/raiseTogetherManager.js:63:27
_connectRaisedSignal/raisedId<@/home/x/.local/share/gnome-shell/extensions/tilingshell@ferrarodomenico.com/components/raiseTogether/raiseTogetherManager.js:53:12
_onTiledWindowRaised/<@/home/x/.local/share/gnome-shell/extensions/tilingshell@ferrarodomenico.com/components/raiseTogether/raiseTogetherManager.js:66:24
_onTiledWindowRaised@/home/x/.local/share/gnome-shell/extensions/tilingshell@ferrarodomenico.com/components/raiseTogether/raiseTogetherManager.js:63:27
_connectRaisedSignal/raisedId<@/home/x/.local/share/gnome-shell/extensions/tilingshell@ferrarodomenico.com/components/raiseTogether/raiseTogetherManager.js:53:12
_onTiledWindowRaised/<@/home/x/.local/share/gnome-shell/extensions/tilingshell@ferrarodomenico.com/components/raiseTogether/raiseTogetherManager.js:66:24
_onTiledWindowRaised@/home/x/.local/share/gnome-shell/extensions/tilingshell@ferrarodomenico.com/components/raiseTogether/raiseTogetherManager.js:63:27
_connectRaisedSignal/raisedId<@/home/x/.local/share/gnome-shell/extensions/tilingshell@ferrarodomenico.com/components/raiseTogether/raiseTogetherManager.js:53:12
_onTiledWindowRaised/<@/home/x/.local/share/gnome-shell/extensions/tilingshell@ferrarodomenico.com/components/raiseTogether/raiseTogetherManager.js:66:24
_onTiledWindowRaised@/home/x/.local/share/gnome-shell/extensions/tilingshell@ferrarodomenico.com/components/raiseTogether/raiseTogetherManager.js:63:27
_connectRaisedSignal/raisedId<@/home/x/.local/share/gnome-shell/extensions/tilingshell@ferrarodomenico.com/components/raiseTogether/raiseTogetherManager.js:53:12
_onTiledWindowRaised/<@/home/x/.local/share/gnome-shell/extensions/tilingshell@ferrarodomenico.com/components/raiseTogether/raiseTogetherManager.js:66:24
_onTiledWindowRaised@/home/x/.local/share/gnome-shell/extensions/tilingshell@ferrarodomenico.com/components/raiseTogether/raiseTogetherManager.js:63:27
_connectRaisedSignal/raisedId<@/home/x/.local/share/gnome-shell/extensions/tilingshell@ferrarodomenico.com/components/raiseTogether/raiseTogetherManager.js:53:12
...
```

This goes on and on with more stack traces below. Notably, the next things I see in `journalctl` are messages from system boot, which tells me that's after when I finally forced shutdown by holding the power button.

For now, since the issue appears to be happening when the extension attempts to raise windows together, I'm going to disable that feature. Hopefully that will prevent the issue from occurring, though I would like to still be able to use the feature.

**To Reproduce**
Unclear. I have seen it mostly happen when tiling a sticky/above window, however.

**Screenshots**
N/A

**Information (please complete the following):**
- Tiling Shell version: v17.3
- GNOME version: 42.9
- X11

**Additional context**
I have a few other extensions installed that may be affecting tiling-shell's behavior, I'll go ahead and include them here:
```
dash-to-panel@jderose9.github.com
timepp@zagortenay333
colortint@matt.serverus.co.uk
advanced-alt-tab@G-dH.github.com
sound-output-device-chooser@kgshank.net
windows-search-provider@G-dH.github.com
espresso@coadmunkee.github.com
display-brightness-ddcutil@themightydeity.github.com
tilingshell@ferrarodomenico.com
extensions-search-provider@G-dH.github.com
ubuntu-appindicators@ubuntu.com
native-window-placement@gnome-shell-extensions.gcampax.github.com
user-theme@gnome-shell-extensions.gcampax.github.com
```

Contributor guide

Open the contributing guide

Research direction

Start with utils/ui.js around getWindows and components/raiseTogether/raiseTogetherManager.js around _onTiledWindowRaised and _connectRaisedSignal, as identified in the stack trace. Reproduce by tiling a sticky or always-on-top Chromium picture-in-picture window on GNOME 42.9/X11, then inspect the raise-together signal flow. Done means the recursive error and resulting desktop freeze no longer occur while raising tiled windows together.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
desktop
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.