STEPS TO REPRODUCE 1. open class pane on left side 2. expand something, i.e. into derived classes, select a method 3. now enter a filter expression that will exclude this class OBSERVED RESULT #6 0x00007fb12365dbc4 in QListData::size (this=0x707070504050017) at /usr/ include/qt5/QtCore/qlist.h:113 #7 0x00007fb1238511d2 in QList<ClassModelNodes::Node*>::indexOf (this=0x707070504050017, t=@0x7ffd1980e8c8: 0x2172010, from=0) at /usr/ include/qt5/QtCore/qlist.h:975 #8 0x00007fb12384ffe2 in ClassModelNodes::Node::row (this=0x2172010) at / home/ebeer/repos/upstream/KDE/kdevelop/kdevplatform/language/classmodel/ classmodelnode.cpp:494 #9 0x00007fb12384ba6c in ClassModel::index (this=0x3cc3610, a_node=0x2172010) at /home/ebeer/repos/upstream/KDE/kdevelop/kdevplatform/language/classmodel/ classmodel.cpp:190 #10 0x00007fb12384ba08 in ClassModel::parent (this=0x3cc3610, childIndex=...) at /home/ebeer/repos/upstream/KDE/kdevelop/kdevplatform/language/classmodel/ classmodel.cpp:177 #11 0x00007fb120a7a961 in QAbstractItemModelPrivate::rowsAboutToBeRemoved(QModelIndex const&, int, int) () from /usr/lib64/libQt5Core.so.5 #12 0x00007fb120a7d9a5 in QAbstractItemModel::beginRemoveRows(QModelIndex const&, int, int) () from /usr/lib64/libQt5Core.so.5 #13 0x00007fb12384bdb5 in ClassModel::nodesAboutToBeRemoved (this=0x3cc3610, a_parent=0x4ebe390, a_first=0, a_last=20) at /home/ebeer/repos/upstream/KDE/ kdevelop/kdevplatform/language/classmodel/classmodel.cpp:243 #14 0x00007fb12384fc9d in ClassModelNodes::Node::~Node (this=0x4ebe390, __in_chrg=<optimized out>) at /home/ebeer/repos/upstream/KDE/kdevelop/ kdevplatform/language/classmodel/classmodelnode.cpp:427 #15 0x00007fb123850492 in ClassModelNodes::DynamicNode::~DynamicNode (this=0x4ebe390, __in_chrg=<optimized out>) at /home/ebeer/repos/upstream/KDE/ kdevelop/kdevplatform/language/classmodel/classmodelnode.h:124 #16 0x00007fb123850502 in ClassModelNodes::IdentifierNode::~IdentifierNode (this=0x4ebe390, __in_chrg=<optimized out>) at /home/ebeer/repos/upstream/KDE/ kdevelop/kdevplatform/language/classmodel/classmodelnode.h:161 #17 0x00007fb12384e37e in ClassModelNodes::ClassNode::~ClassNode (this=0x4ebe390, __in_chrg=<optimized out>) at /home/ebeer/repos/upstream/KDE/ kdevelop/kdevplatform/language/classmodel/classmodelnode.cpp:127 #18 0x00007fb12384e3a2 in ClassModelNodes::ClassNode::~ClassNode (this=0x4ebe390, __in_chrg=<optimized out>) at /home/ebeer/repos/upstream/KDE/ kdevelop/kdevplatform/language/classmodel/classmodelnode.cpp:133 #19 0x00007fb123851a54 in qDeleteAll<QList<ClassModelNodes::Node*>::const_iterator> (begin=..., end=...) at /usr/include/qt5/QtCore/qalgorithms.h:320 #20 0x00007fb123850efc in qDeleteAll<QList<ClassModelNodes::Node*> > (c=...) at /usr/include/qt5/QtCore/qalgorithms.h:328 #21 0x00007fb12384fd4c in ClassModelNodes::Node::clear (this=0x4e87f90) at / home/ebeer/repos/upstream/KDE/kdevelop/kdevplatform/language/classmodel/ classmodelnode.cpp:435 #22 0x00007fb123850185 in ClassModelNodes::DynamicNode::performNodeCleanup (this=0x4e87f90) at /home/ebeer/repos/upstream/KDE/kdevelop/kdevplatform/ language/classmodel/classmodelnode.cpp:537 #23 0x00007fb123850205 in ClassModelNodes::DynamicNode::performPopulateNode (this=0x4e87f90, a_forceRepopulate=true) at /home/ebeer/repos/upstream/KDE/ kdevelop/kdevplatform/language/classmodel/classmodelnode.cpp:554 #24 0x00007fb12385e599 in ClassModelNodes::FilteredProjectFolder::updateFilterString (this=0x4e87f80, a_newF SOFTWARE/OS VERSIONS openSUSE Tumbleweed Qt 5.12.2 built this morning
Git commit 5bff5d65a023cfce078c0abc7f82b9899f49fffb by Milian Wolff, on behalf of Marcin Dłubakowski. Committed on 20/09/2019 at 04:10. Pushed by mwolff into branch '5.4'. Fixed crash when filtering class list Issue: When you select an inner node (method or member) in classes panel, then type something in search bar that filters that node out, Kdevelop crashes. It seems that when nodes get filtered, at some point currentIndex of QTreeView points to deleted node, which causes segfault in ClassModel::hasChildren. Manually invalidating currentIndex before filtering seems to have fixed the issue. Differential Revision: https://phabricator.kde.org/D22660 M +1 -0 plugins/classbrowser/classwidget.cpp https://invent.kde.org/kde/kdevelop/commit/5bff5d65a023cfce078c0abc7f82b9899f49fffb