The passive nature of models provides new challenges for programmers. Inconsistencies in the model can cause the application to crash. Since the model is hit by numerous calls from the view, it is hard to find out which call has crashed the application and which operation has introduced the problem."
3.5 Debugging with ModelTest The passive nature of models provides new challenges for programmers. Inconsistencies in the model can cause the application to crash. Since the model is hit by numerous calls from the view, it is hard to find out which call has crashed the application and which operation has introduced the problem. Qt Labs provides software called ModelTest, which checks models while your programming is running. Every time the model is changed, ModelTest scans the model and reports errors with an assert. This is especially important for tree models, since their hierarchical nature leaves many possibilities for subtle inconsistencies. http://benjamin-meyer.blogspot.nl/2007/02/qt-qabstractitemmodel-modeltest.html Complete backtrace: (gdb) bt #0 0xb5ad99c2 in QSortFilterProxyModel::parent(QModelIndex const&) const () from /usr/lib/i386-linux-gnu/libQtGui.so.4 #1 0xb6040b31 in ?? () from /usr/lib/python2.7/dist-packages/PyQt4/QtGui.so #2 0xb5a8c4d5 in QTreeView::indexRowSizeHint(QModelIndex const&) const () from /usr/lib/i386-linux-gnu/libQtGui.so.4 #3 0xb5a90757 in QTreeViewPrivate::itemHeight(int) const () from /usr/lib/i386-linux-gnu/libQtGui.so.4 #4 0xb5a90a2b in QTreeViewPrivate::updateScrollBars() () from /usr/lib/i386-linux-gnu/libQtGui.so.4 #5 0xb5a90d58 in QTreeView::updateGeometries() () from /usr/lib/i386-linux-gnu/libQtGui.so.4 #6 0xb5f600b8 in ?? () from /usr/lib/python2.7/dist-packages/PyQt4/QtGui.so #7 0xb5a42705 in QAbstractItemView::resizeEvent(QResizeEvent*) () from /usr/lib/i386-linux-gnu/libQtGui.so.4 #8 0xb5f80d3c in ?? () from /usr/lib/python2.7/dist-packages/PyQt4/QtGui.so #9 0xb54f018e in QWidget::event(QEvent*) () from /usr/lib/i386-linux-gnu/libQtGui.so.4 #10 0xb590de55 in QFrame::event(QEvent*) () from /usr/lib/i386-linux-gnu/libQtGui.so.4 #11 0xb59a0ab1 in QAbstractScrollArea::viewportEvent(QEvent*) () from /usr/lib/i386-linux-gnu/libQtGui.so.4 #12 0xb5a46acc in QAbstractItemView::viewportEvent(QEvent*) () from /usr/lib/i386-linux-gnu/libQtGui.so.4 #13 0xb5a94b66 in QTreeView::viewportEvent(QEvent*) () from /usr/lib/i386-linux-gnu/libQtGui.so.4 #14 0xb5f8aeea in ?? () from /usr/lib/python2.7/dist-packages/PyQt4/QtGui.so #15 0xb59a31d6 in ?? () from /usr/lib/i386-linux-gnu/libQtGui.so.4 #16 0xb6890b16 in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) () from /usr/lib/i386-linux-gnu/libQtCore.so.4 #17 0xb5495ea2 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/i386-linux-gnu/libQtGui.so.4 #18 0xb549b3a2 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/i386-linux-gnu/libQtGui.so.4 #19 0xb620c975 in ?? () from /usr/lib/python2.7/dist-packages/PyQt4/QtGui.so #20 0xb689097e in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib/i386-linux-gnu/libQtCore.so.4 #21 0xb54ea697 in QWidgetPrivate::sendPendingMoveAndResizeEvents(bool, bool) () from /usr/lib/i386-linux-gnu/libQtGui.so.4 #22 0xb54f3158 in QWidgetPrivate::show_helper() () from /usr/lib/i386-linux-gnu/libQtGui.so.4 #23 0xb54f35c1 in QWidget::setVisible(bool) () from /usr/lib/i386-linux-gnu/libQtGui.so.4 #24 0xb54f30e8 in QWidgetPrivate::showChildren(bool) () from /usr/lib/i386-linux-gnu/libQtGui.so.4 #25 0xb54f3180 in QWidgetPrivate::show_helper() () from /usr/lib/i386-linux-gnu/libQtGui.so.4 #26 0xb54f35c1 in QWidget::setVisible(bool) () from /usr/lib/i386-linux-gnu/libQtGui.so.4 #27 0xb5f809ba in ?? () from /usr/lib/python2.7/dist-packages/PyQt4/QtGui.so #28 0xb54f30e8 in QWidgetPrivate::showChildren(bool) () from /usr/lib/i386-linux-gnu/libQtGui.so.4 #29 0xb54f3180 in QWidgetPrivate::show_helper() () from /usr/lib/i386-linux-gnu/libQtGui.so.4 #30 0xb54f2f64 in QWidgetPrivate::show_recursive() () from /usr/lib/i386-linux-gnu/libQtGui.so.4 #31 0xb54f3069 in QWidgetPrivate::showChildren(bool) () from /usr/lib/i386-linux-gnu/libQtGui.so.4 #32 0xb54f3180 in QWidgetPrivate::show_helper() () from /usr/lib/i386-linux-gnu/libQtGui.so.4 #33 0xb54f2f64 in QWidgetPrivate::show_recursive() () from /usr/lib/i386-linux-gnu/libQtGui.so.4 #34 0xb54f3069 in QWidgetPrivate::showChildren(bool) () from /usr/lib/i386-linux-gnu/libQtGui.so.4 #35 0xb54f3180 in QWidgetPrivate::show_helper() () from /usr/lib/i386-linux-gnu/libQtGui.so.4 #36 0xb54f35c1 in QWidget::setVisible(bool) () from /usr/lib/i386-linux-gnu/libQtGui.so.4 #37 0xb60bdea6 in ?? () from /usr/lib/python2.7/dist-packages/PyQt4/QtGui.so #38 0xb61aa6ae in ?? () from /usr/lib/python2.7/dist-packages/PyQt4/QtGui.so #39 0x081949c1 in PyEval_EvalFrameEx () #40 0x08194eec in PyEval_EvalFrameEx () #41 0x08194eec in PyEval_EvalFrameEx () #42 0x0819af70 in PyEval_EvalCodeEx () #43 0x0819b8a1 in PyRun_FileExFlags () #44 0x080a8bda in PyRun_SimpleFileExFlags () #45 0x080a9949 in Py_Main () #46 0x0805ea5b in main () (gdb) (gdb) info threads Id Target Id Frame 14 Thread 0xae08db40 (LWP 28884) 0xb7764424 in __kernel_vsyscall () 13 Thread 0xae88eb40 (LWP 28883) 0xb7764424 in __kernel_vsyscall () 12 Thread 0xa5f2cb40 (LWP 28891) 0xb7764424 in __kernel_vsyscall () 11 Thread 0xa672db40 (LWP 28890) 0xb7764424 in __kernel_vsyscall () 10 Thread 0x9d3eeb40 (LWP 28909) 0xb7764424 in __kernel_vsyscall () 9 Thread 0x9e988b40 (LWP 28893) 0xb7764424 in __kernel_vsyscall () 8 Thread 0x9b1ffb40 (LWP 28914) 0xb7764424 in __kernel_vsyscall () 7 Thread 0x9bbfeb40 (LWP 28913) 0xb7764424 in __kernel_vsyscall () 6 Thread 0x9f2a9b40 (LWP 28892) 0xb7764424 in __kernel_vsyscall () 5 Thread 0x9c3ffb40 (LWP 28912) 0xb7764424 in __kernel_vsyscall () 4 Thread 0x9dbefb40 (LWP 28908) 0xb7764424 in __kernel_vsyscall () 3 Thread 0xa988eb40 (LWP 28889) 0xb7764424 in __kernel_vsyscall () 2 Thread 0xb088ab40 (LWP 28882) 0xb7764424 in __kernel_vsyscall () * 1 Thread 0xb730bb00 (LWP 28881) 0xb5ad99c2 in QSortFilterProxyModel::parent(QModelIndex const&) const () from /usr/lib/i386-linux-gnu/libQtGui.so.4 (gdb) Best regards: Uwe Fechner