https://bugs.kde.org/show_bug.cgi?id=358497
Bug ID: 358497
Summary: Find Uses cannot be canceled
Product: kdevelop
Version: 4.90.91
Platform: Compiled Sources
OS: Linux
Status: UNCONFIRMED
Severity: normal
Priority: NOR
Component: general
Assignee: [email protected]
Reporter: [email protected]
I used the shortcut for "Find Uses" on QLatin1String by mistake, in the kio.git
project.
KDevelop froze with 100% CPU usage for a very long time.
Yes there are lots of hits, so I understanad it needs to compute for a long
time, but that should keep the GUI responsive (-> chunk the work or use a
thread). As a user I should be able to cancel once I realize my mistake.
Reproducible: Always
Actual Results:
#0 0x00007f4812bb49ec in QVector<QPostEvent>::at (this=0x88d5a0, i=80942) at
../../include/QtCore/../../src/corelib/tools/qvector.h:418
#1 0x00007f4812de93ae in QCoreApplication::removePostedEvents
(receiver=0xd9b9b40, eventType=0) at kernel/qcoreapplication.cpp:1697
#2 0x00007f4813bf36d2 in QWidget::~QWidget (this=0xd9b9b40,
__in_chrg=<optimized out>) at kernel/qwidget.cpp:1666
#3 0x00007f4813d62b9e in QFrame::~QFrame (this=0xd9b9b40, __in_chrg=<optimized
out>) at widgets/qframe.cpp:256
#4 0x00007f4813d671e8 in QLabel::~QLabel (this=0xd9b9b40, __in_chrg=<optimized
out>) at widgets/qlabel.cpp:243
#5 0x00007f4813d6721e in QLabel::~QLabel (this=0xd9b9b40, __in_chrg=<optimized
out>) at widgets/qlabel.cpp:247
#6 0x00007f4812e23058 in QObjectPrivate::deleteChildren (this=0xd9b5ba0) at
kernel/qobject.cpp:1963
#7 0x00007f4813bf36be in QWidget::~QWidget (this=0xd9aadc0,
__in_chrg=<optimized out>) at kernel/qwidget.cpp:1664
#8 0x00007f4813d62b9e in QFrame::~QFrame (this=0xd9aadc0, __in_chrg=<optimized
out>) at widgets/qframe.cpp:256
#9 0x00007f4813e0881d in QAbstractScrollArea::~QAbstractScrollArea
(this=0xd9aadc0, __in_chrg=<optimized out>) at
widgets/qabstractscrollarea.cpp:575
#10 0x00007f4813e0f2c4 in QScrollArea::~QScrollArea (this=0xd9aadc0,
__in_chrg=<optimized out>) at widgets/qscrollarea.cpp:166
#11 0x00007f48100a588f in
KDevelop::NavigatableWidgetList::~NavigatableWidgetList (this=0xd9aadc0) at
/d/kde/src/5/extragear/kdevelop/kdevplatform/language/duchain/navigation/useswidget.cpp:195
#12 0x00007f48101495a5 in KDevelop::ContextUsesWidget::~ContextUsesWidget
(this=0xd9aadc0) at
/d/kde/src/5/extragear/kdevelop/kdevplatform/language/duchain/navigation/useswidget.h:89
#13 0x00007f48101495c9 in KDevelop::ContextUsesWidget::~ContextUsesWidget
(this=0xd9aadc0) at
/d/kde/src/5/extragear/kdevelop/kdevplatform/language/duchain/navigation/useswidget.h:89
#14 0x00007f48100a7e51 in buildContextUses (code=...,
declarations=QList<KDevelop::IndexedDeclaration> = {...}, context=0xd7c8c70) at
/d/kde/src/5/extragear/kdevelop/kdevplatform/language/duchain/navigation/useswidget.cpp:455
#15 0x00007f48100a7f37 in buildContextUses (code=...,
declarations=QList<KDevelop::IndexedDeclaration> = {...}, context=0xd7c8bd0) at
/d/kde/src/5/extragear/kdevelop/kdevplatform/language/duchain/navigation/useswidget.cpp:459
#16 0x00007f48100a7f37 in buildContextUses (code=...,
declarations=QList<KDevelop::IndexedDeclaration> = {...}, context=0xd8eea40) at
/d/kde/src/5/extragear/kdevelop/kdevplatform/language/duchain/navigation/useswidget.cpp:459
#17 0x00007f48100a83f4 in KDevelop::TopContextUsesWidget::setExpanded
(this=0xce47990, expanded=true) at
/d/kde/src/5/extragear/kdevelop/kdevplatform/language/duchain/navigation/useswidget.cpp:487
#18 0x00007f48100a95d8 in
KDevelop::UsesWidget::UsesWidgetCollector::processUses (this=0x2dadc50,
topContext=...) at
/d/kde/src/5/extragear/kdevelop/kdevplatform/language/duchain/navigation/useswidget.cpp:644
#19 0x00007f48100b275a in KDevelop::UsesCollector::updateReady (this=0x2dadc50,
url=..., topContext=...) at
/d/kde/src/5/extragear/kdevelop/kdevplatform/language/duchain/navigation/usescollector.cpp:402
#20 0x00007f4810146197 in KDevelop::UsesCollector::qt_static_metacall
(_o=0x2dadc50, _c=QMetaObject::InvokeMetaMethod, _id=3, _a=0x7ffe33801020) at
/d/kde/build/5/extragear/kdevelop/kdevplatform/language/moc_usescollector.cpp:94
#21 0x00007f4812df46af in QMetaMethod::invoke (this=0x7ffe338014e0,
object=0x2dadc50, connectionType=Qt::DirectConnection, returnValue=...,
val0=..., val1=..., val2=..., val3=..., val4=..., val5=..., val6=..., val7=...,
val8=..., val9=...) at kernel/qmetaobject.cpp:2211
#22 0x00007f4812df3b9a in QMetaObject::invokeMethod (obj=0x2dadc50,
member=0x7f481014dd52 "updateReady", type=Qt::DirectConnection, ret=...,
val0=..., val1=..., val2=..., val3=..., val4=..., val5=..., val6=..., val7=...,
val8=..., val9=...) at kernel/qmetaobject.cpp:1478
#23 0x00007f480ff0eeef in QMetaObject::invokeMethod (obj=0x2dadc50,
member=0x7f481014dd52 "updateReady", type=Qt::DirectConnection, val0=...,
val1=..., val2=..., val3=..., val4=..., val5=..., val6=..., val7=..., val8=...,
val9=...) at
/d/qt/5/kde/qtbase/include/QtCore/../../src/corelib/kernel/qobjectdefs.h:412
#24 0x00007f480ff5f261 in KDevelop::DUChain::updateContextForUrl
(this=0x1e9cc40, document=...,
minFeatures=KDevelop::TopDUContext::Features::AllDeclarationsContextsAndUses,
notifyReady=0x2dadc50, priority=1) at
/d/kde/src/5/extragear/kdevelop/kdevplatform/language/duchain/duchain.cpp:1678
#25 0x00007f48100b1102 in KDevelop::UsesCollector::startCollecting
(this=0x2dadc50) at
/d/kde/src/5/extragear/kdevelop/kdevplatform/language/duchain/navigation/usescollector.cpp:296
#26 0x00007f48100a8a83 in KDevelop::UsesWidget::UsesWidget (this=0x6f6dd00,
declaration=..., customCollector=...) at
/d/kde/src/5/extragear/kdevelop/kdevplatform/language/duchain/navigation/useswidget.cpp:535
#27 0x00007f4810094694 in
KDevelop::UsesNavigationContext::UsesNavigationContext (this=0xcbf910,
declaration=..., previousContext=0x433d640) at
/d/kde/src/5/extragear/kdevelop/kdevplatform/language/duchain/navigation/usesnavigationcontext.cpp:30
#28 0x00007f481008e289 in KDevelop::AbstractNavigationContext::execute
(this=0x433d640, action=...) at
/d/kde/src/5/extragear/kdevelop/kdevplatform/language/duchain/navigation/abstractnavigationcontext.cpp:183
#29 0x00007f47cdfa0ec8 in ContextBrowserPlugin::showUsesDelayed
(this=0x23e4c30, declaration=...) at
/d/kde/src/5/extragear/kdevelop/kdevplatform/plugins/contextbrowser/contextbrowser.cpp:375
The constructor of a UsesWidget triggers the destructor of another UsesWidget??
447│ QList<ContextUsesWidget*> buildContextUses(const CodeRepresentation& code,
QList<IndexedDeclaration> declarations, DUContext* context) {
448│ QList<ContextUsesWidget*> ret;
449│
450│ if(!context->parentContext() || isNewGroup(context->parentContext(),
context)) {
451│ ContextUsesWidget* created = new ContextUsesWidget(code, declarations,
context);
452│ if(created->hasItems())
453│ ret << created;
454│ else
455├> delete created;
456│ }
Creating widgets and deleting them right away sounds very slow, when done in a
loop (the caller has a loop).
--
You are receiving this mail because:
You are watching all bug changes.