Details
-
Bug
-
Resolution: Duplicate
-
P1: Critical
-
4.6.2, 4.7.1
-
None
-
Windows 7, XP
Description
In a very specific scenario, when refiltering a model, I receive a stack overflow with the QListView. My basic setup is
QListView -> QSortFilterProxyModel -> QStandardItemModel
It appears that when I refilter with a specific string, the list view goes into infinite recursion layout out its children. This seems to happen when the scroll bars are turning on and off. This functionality seems to be happening in
QAbstractScrollAreaPrivate::layoutChildren()
In one call, the needh is true and needv is false. This triggers changing the size of viewport, which calls updateGeometries() and then layoutChildren(). The next call to layoutChildren() has needh to false and needv to true, which again triggers a resize of the viewport, and so on.
hbarpolicy = Qt::ScrollBarAsNeeded
vbarpolicy = Qt::ScrollBarAsNeeded
I'm sorry I don't have a repro case. This appears to happen only with a specific filter string here and our current set of data. Turning uniformItemSizes to off fixes the problem here, as does changing the scrollbar policies to "always on". Feel free to contact me for any additional information. A portion of the stack trace is as follows:
> QtGuid4.dll!QAbstractScrollAreaPrivate::layoutChildren() Line 479 C++
QtGuid4.dll!QListView::updateGeometries() Line 1492 C++
QtGuid4.dll!QAbstractItemView::resizeEvent(QResizeEvent * event=0x000954d0) Line 2339 C++
QtGuid4.dll!QListView::resizeEvent(QResizeEvent * e=0x000954d0) Line 847 C++
QtGuid4.dll!QWidget::event(QEvent * event=0x000954d0) Line 8153 C++
QtGuid4.dll!QFrame::event(QEvent * e=0x000954d0) Line 557 + 0xc bytes C++
QtGuid4.dll!QAbstractScrollArea::viewportEvent(QEvent * e=0x000954d0) Line 1036 + 0xc bytes C++
QtGuid4.dll!QAbstractItemView::viewportEvent(QEvent * event=0x000954d0) Line 1611 C++
QtGuid4.dll!QAbstractScrollAreaPrivate::viewportEvent(QEvent * event=0x000954d0) Line 100 + 0x28 bytes C++
QtGuid4.dll!QAbstractScrollAreaFilter::eventFilter(QObject * o=0x06ca9120, QEvent * e=0x000954d0) Line 116 + 0x29 bytes C++
QtCored4.dll!QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject * receiver=0x06ca9120, QEvent * event=0x000954d0) Line 819 + 0x15 bytes C++
QtGuid4.dll!QApplicationPrivate::notify_helper(QObject * receiver=0x06ca9120, QEvent * e=0x000954d0) Line 4296 + 0x11 bytes C++
QtGuid4.dll!QApplication::notify(QObject * receiver=0x06ca9120, QEvent * e=0x000954d0) Line 4265 + 0x10 bytes C++
QtCored4.dll!QCoreApplication::notifyInternal(QObject * receiver=0x06ca9120, QEvent * event=0x000954d0) Line 704 + 0x15 bytes C++
QtCored4.dll!QCoreApplication::sendEvent(QObject * receiver=0x06ca9120, QEvent * event=0x000954d0) Line 215 + 0x39 bytes C++
QtGuid4.dll!QWidgetPrivate::setGeometry_sys(int x=2, int y=2, int w=426, int h=408, bool isMove=false) Line 1505 + 0x11 bytes C++
QtGuid4.dll!QWidget::setGeometry(const QRect & r=
QtGuid4.dll!QAbstractScrollAreaPrivate::layoutChildren() Line 479 C++
QtGuid4.dll!QListView::updateGeometries() Line 1492 C++
QtGuid4.dll!QAbstractItemView::resizeEvent(QResizeEvent * event=0x00096354) Line 2339 C++
QtGuid4.dll!QListView::resizeEvent(QResizeEvent * e=0x00096354) Line 847 C++
QtGuid4.dll!QWidget::event(QEvent * event=0x00096354) Line 8153 C++
QtGuid4.dll!QFrame::event(QEvent * e=0x00096354) Line 557 + 0xc bytes C++
QtGuid4.dll!QAbstractScrollArea::viewportEvent(QEvent * e=0x00096354) Line 1036 + 0xc bytes C++
QtGuid4.dll!QAbstractItemView::viewportEvent(QEvent * event=0x00096354) Line 1611 C++
QtGuid4.dll!QAbstractScrollAreaPrivate::viewportEvent(QEvent * event=0x00096354) Line 100 + 0x28 bytes C++
QtGuid4.dll!QAbstractScrollAreaFilter::eventFilter(QObject * o=0x06ca9120, QEvent * e=0x00096354) Line 116 + 0x29 bytes C++
QtCored4.dll!QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject * receiver=0x06ca9120, QEvent * event=0x00096354) Line 819 + 0x15 bytes C++
QtGuid4.dll!QApplicationPrivate::notify_helper(QObject * receiver=0x06ca9120, QEvent * e=0x00096354) Line 4296 + 0x11 bytes C++
QtGuid4.dll!QApplication::notify(QObject * receiver=0x06ca9120, QEvent * e=0x00096354) Line 4265 + 0x10 bytes C++
QtCored4.dll!QCoreApplication::notifyInternal(QObject * receiver=0x06ca9120, QEvent * event=0x00096354) Line 704 + 0x15 bytes C++
QtCored4.dll!QCoreApplication::sendEvent(QObject * receiver=0x06ca9120, QEvent * event=0x00096354) Line 215 + 0x39 bytes C++
QtGuid4.dll!QWidgetPrivate::setGeometry_sys(int x=2, int y=2, int w=443, int h=391, bool isMove=false) Line 1505 + 0x11 bytes C++
QtGuid4.dll!QWidget::setGeometry(const QRect & r={...}
) Line 6636 C++
QtGuid4.dll!QAbstractScrollAreaPrivate::layoutChildren() Line 479 C++
QtGuid4.dll!QListView::updateGeometries() Line 1492 C++
QtGuid4.dll!QAbstractItemView::resizeEvent(QResizeEvent * event=0x000971d8) Line 2339 C++
QtGuid4.dll!QListView::resizeEvent(QResizeEvent * e=0x000971d8) Line 847 C++
QtGuid4.dll!QWidget::event(QEvent * event=0x000971d8) Line 8153 C++
QtGuid4.dll!QFrame::event(QEvent * e=0x000971d8) Line 557 + 0xc bytes C++
QtGuid4.dll!QAbstractScrollArea::viewportEvent(QEvent * e=0x000971d8) Line 1036 + 0xc bytes C++
QtGuid4.dll!QAbstractItemView::viewportEvent(QEvent * event=0x000971d8) Line 1611 C++
QtGuid4.dll!QAbstractScrollAreaPrivate::viewportEvent(QEvent * event=0x000971d8) Line 100 + 0x28 bytes C++
QtGuid4.dll!QAbstractScrollAreaFilter::eventFilter(QObject * o=0x06ca9120, QEvent * e=0x000971d8) Line 116 + 0x29 bytes C++
QtCored4.dll!QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject * receiver=0x06ca9120, QEvent * event=0x000971d8) Line 819 + 0x15 bytes C++
QtGuid4.dll!QApplicationPrivate::notify_helper(QObject * receiver=0x06ca9120, QEvent * e=0x000971d8) Line 4296 + 0x11 bytes C++
QtGuid4.dll!QApplication::notify(QObject * receiver=0x06ca9120, QEvent * e=0x000971d8) Line 4265 + 0x10 bytes C++
QtCored4.dll!QCoreApplication::notifyInternal(QObject * receiver=0x06ca9120, QEvent * event=0x000971d8) Line 704 + 0x15 bytes C++
QtCored4.dll!QCoreApplication::sendEvent(QObject * receiver=0x06ca9120, QEvent * event=0x000971d8) Line 215 + 0x39 bytes C++
QtGuid4.dll!QWidgetPrivate::setGeometry_sys(int x=2, int y=2, int w=426, int h=408, bool isMove=false) Line 1505 + 0x11 bytes C++
QtGuid4.dll!QWidget::setGeometry(const QRect & r=
QtGuid4.dll!QAbstractScrollAreaPrivate::layoutChildren() Line 479 C++
QtGuid4.dll!QListView::updateGeometries() Line 1492 C++
QtGuid4.dll!QAbstractItemView::resizeEvent(QResizeEvent * event=0x0009805c) Line 2339 C++
QtGuid4.dll!QListView::resizeEvent(QResizeEvent * e=0x0009805c) Line 847 C++
QtGuid4.dll!QWidget::event(QEvent * event=0x0009805c) Line 8153 C++
QtGuid4.dll!QFrame::event(QEvent * e=0x0009805c) Line 557 + 0xc bytes C++
QtGuid4.dll!QAbstractScrollArea::viewportEvent(QEvent * e=0x0009805c) Line 1036 + 0xc bytes C++
QtGuid4.dll!QAbstractItemView::viewportEvent(QEvent * event=0x0009805c) Line 1611 C++
QtGuid4.dll!QAbstractScrollAreaPrivate::viewportEvent(QEvent * event=0x0009805c) Line 100 + 0x28 bytes C++
QtGuid4.dll!QAbstractScrollAreaFilter::eventFilter(QObject * o=0x06ca9120, QEvent * e=0x0009805c) Line 116 + 0x29 bytes C++
QtCored4.dll!QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject * receiver=0x06ca9120, QEvent * event=0x0009805c) Line 819 + 0x15 bytes C++
QtGuid4.dll!QApplicationPrivate::notify_helper(QObject * receiver=0x06ca9120, QEvent * e=0x0009805c) Line 4296 + 0x11 bytes C++
QtGuid4.dll!QApplication::notify(QObject * receiver=0x06ca9120, QEvent * e=0x0009805c) Line 4265 + 0x10 bytes C++
QtCored4.dll!QCoreApplication::notifyInternal(QObject * receiver=0x06ca9120, QEvent * event=0x0009805c) Line 704 + 0x15 bytes C++
QtCored4.dll!QCoreApplication::sendEvent(QObject * receiver=0x06ca9120, QEvent * event=0x0009805c) Line 215 + 0x39 bytes C++
QtGuid4.dll!QWidgetPrivate::setGeometry_sys(int x=2, int y=2, int w=443, int h=391, bool isMove=false) Line 1505 + 0x11 bytes C++
QtGuid4.dll!QWidget::setGeometry(const QRect & r={...}
) Line 6636 C++
QtGuid4.dll!QAbstractScrollAreaPrivate::layoutChildren() Line 479 C++
QtGuid4.dll!QListView::updateGeometries() Line 1492 C++
QtGuid4.dll!QAbstractItemView::resizeEvent(QResizeEvent * event=0x00098ee0) Line 2339 C++
QtGuid4.dll!QListView::resizeEvent(QResizeEvent * e=0x00098ee0) Line 847 C++
QtGuid4.dll!QWidget::event(QEvent * event=0x00098ee0) Line 8153 C++
QtGuid4.dll!QFrame::event(QEvent * e=0x00098ee0) Line 557 + 0xc bytes C++
QtGuid4.dll!QAbstractScrollArea::viewportEvent(QEvent * e=0x00098ee0) Line 1036 + 0xc bytes C++
QtGuid4.dll!QAbstractItemView::viewportEvent(QEvent * event=0x00098ee0) Line 1611 C++
QtGuid4.dll!QAbstractScrollAreaPrivate::viewportEvent(QEvent * event=0x00098ee0) Line 100 + 0x28 bytes C++
QtGuid4.dll!QAbstractScrollAreaFilter::eventFilter(QObject * o=0x06ca9120, QEvent * e=0x00098ee0) Line 116 + 0x29 bytes C++
QtCored4.dll!QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject * receiver=0x06ca9120, QEvent * event=0x00098ee0) Line 819 + 0x15 bytes C++
QtGuid4.dll!QApplicationPrivate::notify_helper(QObject * receiver=0x06ca9120, QEvent * e=0x00098ee0) Line 4296 + 0x11 bytes C++
QtGuid4.dll!QApplication::notify(QObject * receiver=0x06ca9120, QEvent * e=0x00098ee0) Line 4265 + 0x10 bytes C++
QtCored4.dll!QCoreApplication::notifyInternal(QObject * receiver=0x06ca9120, QEvent * event=0x00098ee0) Line 704 + 0x15 bytes C++
QtCored4.dll!QCoreApplication::sendEvent(QObject * receiver=0x06ca9120, QEvent * event=0x00098ee0) Line 215 + 0x39 bytes C++
QtGuid4.dll!QWidgetPrivate::setGeometry_sys(int x=2, int y=2, int w=426, int h=408, bool isMove=false) Line 1505 + 0x11 bytes C++
QtGuid4.dll!QWidget::setGeometry(const QRect & r=
QtGuid4.dll!QAbstractScrollAreaPrivate::layoutChildren() Line 479 C++
QtGuid4.dll!QListView::updateGeometries() Line 1492 C++
QtGuid4.dll!QAbstractItemView::resizeEvent(QResizeEvent * event=0x00099d64) Line 2339 C++
QtGuid4.dll!QListView::resizeEvent(QResizeEvent * e=0x00099d64) Line 847 C++
QtGuid4.dll!QWidget::event(QEvent * event=0x00099d64) Line 8153 C++
QtGuid4.dll!QFrame::event(QEvent * e=0x00099d64) Line 557 + 0xc bytes C++
QtGuid4.dll!QAbstractScrollArea::viewportEvent(QEvent * e=0x00099d64) Line 1036 + 0xc bytes C++
QtGuid4.dll!QAbstractItemView::viewportEvent(QEvent * event=0x00099d64) Line 1611 C++
QtGuid4.dll!QAbstractScrollAreaPrivate::viewportEvent(QEvent * event=0x00099d64) Line 100 + 0x28 bytes C++
QtGuid4.dll!QAbstractScrollAreaFilter::eventFilter(QObject * o=0x06ca9120, QEvent * e=0x00099d64) Line 116 + 0x29 bytes C++
QtCored4.dll!QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject * receiver=0x06ca9120, QEvent * event=0x00099d64) Line 819 + 0x15 bytes C++
QtGuid4.dll!QApplicationPrivate::notify_helper(QObject * receiver=0x06ca9120, QEvent * e=0x00099d64) Line 4296 + 0x11 bytes C++
QtGuid4.dll!QApplication::notify(QObject * receiver=0x06ca9120, QEvent * e=0x00099d64) Line 4265 + 0x10 bytes C++
QtCored4.dll!QCoreApplication::notifyInternal(QObject * receiver=0x06ca9120, QEvent * event=0x00099d64) Line 704 + 0x15 bytes C++
QtCored4.dll!QCoreApplication::sendEvent(QObject * receiver=0x06ca9120, QEvent * event=0x00099d64) Line 215 + 0x39 bytes C++
QtGuid4.dll!QWidgetPrivate::setGeometry_sys(int x=2, int y=2, int w=443, int h=391, bool isMove=false) Line 1505 + 0x11 bytes C++
QtGuid4.dll!QWidget::setGeometry(const QRect & r={...}
) Line 6636 C++
QtGuid4.dll!QAbstractScrollAreaPrivate::layoutChildren() Line 479 C++
QtGuid4.dll!QListView::updateGeometries() Line 1492 C++
QtGuid4.dll!QAbstractItemView::resizeEvent(QResizeEvent * event=0x0009abe8) Line 2339 C++
QtGuid4.dll!QListView::resizeEvent(QResizeEvent * e=0x0009abe8) Line 847 C++
QtGuid4.dll!QWidget::event(QEvent * event=0x0009abe8) Line 8153 C++
QtGuid4.dll!QFrame::event(QEvent * e=0x0009abe8) Line 557 + 0xc bytes C++
QtGuid4.dll!QAbstractScrollArea::viewportEvent(QEvent * e=0x0009abe8) Line 1036 + 0xc bytes C++
QtGuid4.dll!QAbstractItemView::viewportEvent(QEvent * event=0x0009abe8) Line 1611 C++
QtGuid4.dll!QAbstractScrollAreaPrivate::viewportEvent(QEvent * event=0x0009abe8) Line 100 + 0x28 bytes C++
QtGuid4.dll!QAbstractScrollAreaFilter::eventFilter(QObject * o=0x06ca9120, QEvent * e=0x0009abe8) Line 116 + 0x29 bytes C++
QtCored4.dll!QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject * receiver=0x06ca9120, QEvent * event=0x0009abe8) Line 819 + 0x15 bytes C++
QtGuid4.dll!QApplicationPrivate::notify_helper(QObject * receiver=0x06ca9120, QEvent * e=0x0009abe8) Line 4296 + 0x11 bytes C++
QtGuid4.dll!QApplication::notify(QObject * receiver=0x06ca9120, QEvent * e=0x0009abe8) Line 4265 + 0x10 bytes C++
QtCored4.dll!QCoreApplication::notifyInternal(QObject * receiver=0x06ca9120, QEvent * event=0x0009abe8) Line 704 + 0x15 bytes C++
QtCored4.dll!QCoreApplication::sendEvent(QObject * receiver=0x06ca9120, QEvent * event=0x0009abe8) Line 215 + 0x39 bytes C++
QtGuid4.dll!QWidgetPrivate::setGeometry_sys(int x=2, int y=2, int w=426, int h=408, bool isMove=false) Line 1505 + 0x11 bytes C++
QtGuid4.dll!QWidget::setGeometry(const QRect & r=
QtGuid4.dll!QAbstractScrollAreaPrivate::layoutChildren() Line 479 C++
QtGuid4.dll!QListView::updateGeometries() Line 1492 C++
QtGuid4.dll!QAbstractItemView::resizeEvent(QResizeEvent * event=0x0009ba6c) Line 2339 C++
QtGuid4.dll!QListView::resizeEvent(QResizeEvent * e=0x0009ba6c) Line 847 C++
QtGuid4.dll!QWidget::event(QEvent * event=0x0009ba6c) Line 8153 C++
QtGuid4.dll!QFrame::event(QEvent * e=0x0009ba6c) Line 557 + 0xc bytes C++
QtGuid4.dll!QAbstractScrollArea::viewportEvent(QEvent * e=0x0009ba6c) Line 1036 + 0xc bytes C++
QtGuid4.dll!QAbstractItemView::viewportEvent(QEvent * event=0x0009ba6c) Line 1611 C++
QtGuid4.dll!QAbstractScrollAreaPrivate::viewportEvent(QEvent * event=0x0009ba6c) Line 100 + 0x28 bytes C++
QtGuid4.dll!QAbstractScrollAreaFilter::eventFilter(QObject * o=0x06ca9120, QEvent * e=0x0009ba6c) Line 116 + 0x29 bytes C++
QtCored4.dll!QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject * receiver=0x06ca9120, QEvent * event=0x0009ba6c) Line 819 + 0x15 bytes C++
QtGuid4.dll!QApplicationPrivate::notify_helper(QObject * receiver=0x06ca9120, QEvent * e=0x0009ba6c) Line 4296 + 0x11 bytes C++
QtGuid4.dll!QApplication::notify(QObject * receiver=0x06ca9120, QEvent * e=0x0009ba6c) Line 4265 + 0x10 bytes C++
QtCored4.dll!QCoreApplication::notifyInternal(QObject * receiver=0x06ca9120, QEvent * event=0x0009ba6c) Line 704 + 0x15 bytes C++
QtCored4.dll!QCoreApplication::sendEvent(QObject * receiver=0x06ca9120, QEvent * event=0x0009ba6c) Line 215 + 0x39 bytes C++
QtGuid4.dll!QWidgetPrivate::setGeometry_sys(int x=2, int y=2, int w=443, int h=391, bool isMove=false) Line 1505 + 0x11 bytes C++
QtGuid4.dll!QWidget::setGeometry(const QRect & r={...}
) Line 6636 C++
QtGuid4.dll!QAbstractScrollAreaPrivate::layoutChildren() Line 479 C++
QtGuid4.dll!QListView::updateGeometries() Line 1492 C++
Attachments
Issue Links
- relates to
-
QTBUG-14412 QListView: When resizing a listview rather quickly then it can recurse into updateGeometries() can cause a loop
- Closed
- replaces
-
QTCREATORBUG-4628 crash when opening the doc sub directory under a kturtle
- Closed
-
QTBUG-18558 Crash when resizing QListView
- Closed