Bug 406931 - crash when filtering class list
Summary: crash when filtering class list
Status: RESOLVED FIXED
Alias: None
Product: kdevelop
Classification: Applications
Component: general (show other bugs)
Version: git master
Platform: Other Linux
: NOR crash
Target Milestone: ---
Assignee: kdevelop-bugs-null
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2019-04-26 19:24 UTC by Rolf Eike Beer
Modified: 2019-09-20 05:56 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In: 5.4.3
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Rolf Eike Beer 2019-04-26 19:24:18 UTC
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
Comment 1 Milian Wolff 2019-09-20 04:11:19 UTC
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