Details
-
Bug
-
Resolution: Fixed
-
P1: Critical
-
6.5.5
-
None
-
-
c9e235a63 (dev), 798fcfc40 (6.8), 4f69583aa (6.7), 83cbafbe3 (tqtc/lts-6.5)
Description
I ran in to a situation where a QQuickLayout was being set incorrectly and causing a recursive update. The layout configuration used in the attached example is nonsensical, but I'm reporting it so that the recursive rearrange protection could be improved to handle the edge case.
ColumnLayout { id: columnLayout Rectangle { id: rectangle1 } Rectangle{ id: rectangle2 Layout.minimumHeight: columnLayout.height } }
In the minimum reproducible case, a ColumnLayout is trying to determine its size from two child Rectangles. One of the Rectangles is set to have the minimumHeight of the parent ColumnLayout's height. This causes a recursive loop and the following error messages are displayed repeatedly:
Qt Quick Layouts: Detected recursive rearrange. Aborting after two iterations.
Qt Quick Layouts: Detected recursive rearrange. Aborting after two iterations.
qrc:/LayoutLockingMainThread/Main.qml:10:5: QML ColumnLayout: Layout polish loop detected for QQuickColumnLayout(0x159937e9a00, id="columnLayout", parent=0x1599379e750, geometry=0,0 0x217280). Aborting after two iterations.
The application becomes unresponsive when this occurs.
Attachments
Issue Links
- relates to
-
QTBUG-126740 found the simplest way yet to create an infinite polish loop
- Reported
-
QTBUG-122782 Infinite polish loop in ColumnLayout + GridLayout since "Adapt layouts to take advantage of new size policy information"
- Closed
-
QTBUG-116634 Add functionality to help to identify causes of polish loops
- Reported