Summary: | SIGSEGV (stack overflow?) when resizing quicktiled window rapidly | ||
---|---|---|---|
Product: | [Plasma] kwin | Reporter: | Arsen Arsenović <arsen> |
Component: | general | Assignee: | KWin default assignee <kwin-bugs-null> |
Status: | RESOLVED FIXED | ||
Severity: | crash | CC: | kde, nate |
Priority: | NOR | Keywords: | regression |
Version: | 5.26.90 | ||
Target Milestone: | --- | ||
Platform: | Gentoo Packages | ||
OS: | Linux | ||
Latest Commit: | https://invent.kde.org/plasma/kwin/commit/3a7115f850d2e5bf6cb195c1e352a42b5f5ee94a | Version Fixed In: | 5.27 |
Sentry Crash Report: |
Description
Arsen Arsenović
2023-01-21 23:02:28 UTC
Git commit 826fb1cb298fbaa21d7dea754ca225754c6851a7 by Vlad Zahorodnii. Committed on 23/01/2023 at 12:58. Pushed by vladz into branch 'master'. Fix a crash that happens when resizing quick tiled window QuickTile::setRelativeGeometry() and QuickRootTile::setVerticalSplit() or QuickRootTile::setHorizontalSplit() can hit recursion when size constraints start taking effect. This change reworks how other quick tiles are resized. With the proposed design, when relative geometry changes, QuickRootTile will notice that and start resizing other tiles. When QuickRootTile resizes horizontal or vertical split, it is going to ignore QuickRootTile::relativeGeometryChanged() signals (m_resizedTile). It prevents hitting the recursion and makes moving h/v splits more predictable. I do think that in order to make the tile design more robust to this kind of bugs, it's worth splitting geometry in two kinds though - the one that indicates the preferred geometry (implicitWidth/implicitHeight in qtquick lingua) and the current geometry, the parent node then monitors the preferred geometries and updates the current geometries. M +57 -108 src/tiles/quicktile.cpp M +12 -25 src/tiles/quicktile.h M +7 -5 src/tiles/tile.cpp M +3 -3 src/tiles/tile.h https://invent.kde.org/plasma/kwin/commit/826fb1cb298fbaa21d7dea754ca225754c6851a7 Git commit 3a7115f850d2e5bf6cb195c1e352a42b5f5ee94a by Vlad Zahorodnii. Committed on 23/01/2023 at 14:18. Pushed by vladz into branch 'cherry-pick-826fb1cb'. Fix a crash that happens when resizing quick tiled window QuickTile::setRelativeGeometry() and QuickRootTile::setVerticalSplit() or QuickRootTile::setHorizontalSplit() can hit recursion when size constraints start taking effect. This change reworks how other quick tiles are resized. With the proposed design, when relative geometry changes, QuickRootTile will notice that and start resizing other tiles. When QuickRootTile resizes horizontal or vertical split, it is going to ignore QuickRootTile::relativeGeometryChanged() signals (m_resizedTile). It prevents hitting the recursion and makes moving h/v splits more predictable. I do think that in order to make the tile design more robust to this kind of bugs, it's worth splitting geometry in two kinds though - the one that indicates the preferred geometry (implicitWidth/implicitHeight in qtquick lingua) and the current geometry, the parent node then monitors the preferred geometries and updates the current geometries. (cherry picked from commit 826fb1cb298fbaa21d7dea754ca225754c6851a7) M +57 -108 src/tiles/quicktile.cpp M +12 -25 src/tiles/quicktile.h M +7 -5 src/tiles/tile.cpp M +3 -3 src/tiles/tile.h https://invent.kde.org/plasma/kwin/commit/3a7115f850d2e5bf6cb195c1e352a42b5f5ee94a |