Details
-
Bug
-
Resolution: Out of scope
-
P2: Important
-
None
-
5.6.2, 5.8.0
-
Windows 7, Windows 10
MSVC 2013, MSVC 2015
Description
There is a stack overflow exception when we are hiding a TableView with more than 152 ListItems. In addition the ListItems need to have a delegate containing Items with clip:true.
It looks like the stack overflow might occur because of recursive QSGBatchRenderer::Renderer::nodeChangedBatchRoot (qsgbatchrenderer.cpp. line 974 in Qt 5.6.2) calls.
Also the stack overflow happens only when built with MSVC compiler (2013 and 2015), but not with MinGW. Tested only on Windows 7 and 10.
The attached example can be used to reproduce the issue. It has a TableView with 153 items and a button, which hides the TableView. Thus the problem can be reproduced by clicking the button. If you remove one of the ListItems, the problem is not reproducible any more. Also the ListItem delegate contains several Items with clip: true. If you remove any one of those 'clip:true' parameters, the problem is no longer reproducible. EDIT: It seems that I have cleaned up the example (qtbug59789.zip) a bit too much and it is repro only on Qt 5.6.2. I'll attach an example for Qt 5.8.0 later. EDIT2: After I crashed the example few times with Qt 5.6.2, it started to crash with Qt 5.8.0 too. Thus I don't have fool-proof repro steps for Qt 5.8.0, but on Qt 5.6.2 it crashes every time for me.
Attachments
For Gerrit Dashboard: QTBUG-59789 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
197318,1 | QSGBatchRenderer: Avoid deep recursion | 5.9 | qt/qtdeclarative | Status: ABANDONED | -1 | 0 |
197532,4 | Fix excessive recursion in renderer | 5.9 | qt/qtdeclarative | Status: MERGED | +2 | 0 |