Bug 226631 - KRunner freezes when searching through plugins
Summary: KRunner freezes when searching through plugins
Status: RESOLVED FIXED
Alias: None
Product: kdelibs
Classification: Frameworks and Libraries
Component: kdeui (show other bugs)
Version: unspecified
Platform: Compiled Sources Linux
: NOR major
Target Milestone: ---
Assignee: Plasma Bugs List
URL:
Keywords:
: 238819 (view as bug list)
Depends on:
Blocks:
 
Reported: 2010-02-13 05:33 UTC by Alex Merry
Modified: 2010-10-22 10:35 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Alex Merry 2010-02-13 05:33:07 UTC
Version:           4.4 branch: r1085604 (using KDE 4.4.0)
Compiler:          gcc 4.4.3 
OS:                Linux
Installed from:    Compiled From Sources

I think this is probably a KCategorizedView bug, actually, but it could potentially be a usage issue, so I'll report it against KRunner first.

Running latest 4.4 branch.

I opened KRunner, clicked on the spanner to get the list of plugins, scrolled down a short way, and started to type "amarok" into the search field.  It got as far as "a", then froze, using 100% CPU.

Note that this doesn't happen if the list is not scrolled.  It happens everytime if I scroll a short way down first.

GDB has the backtrace below in thread 1.

Where it's getting stuck is in KCategorizedView::Private::highestElementInLastRow, the Q_FOREVER construct.  prevIndex is -1, which means that when it tries to get the previous index, it stays as -1.  So it never hits the "prevIndex == block.firstIndex" escape clause.  And tempRect.topLeft().y() == 0, prevRect.topLeft().y() == -17, so it never hits that escape clause either.

The block argument to highestElementInLastRow has firstIndex.row() == 0, items.count() == 1.  So lastIndex.row() == 0.

q->rootIndex() appears to be invalid when I check it with GDB.

proxyModel->index(0, q->modelColumn(), q->rootIndex()) gives index (0, 0), to presumeably prevIndex starts out at (0, 0) before the loop is entered, then moves back to the invalid index.

#0  KCategorizedView::Private::highestElementInLastRow (this=0x1b0f780, block=...)
    at /home/kde-devel/src/KDE/kdelibs/kdeui/itemviews/kcategorizedview.cpp:351
#1  0x00007fa74cfdf977 in KCategorizedView::Private::blockHeight (
    this=0x1b0f780, category=...)
    at /home/kde-devel/src/KDE/kdelibs/kdeui/itemviews/kcategorizedview.cpp:232
#2  0x00007fa74cfe35ac in KCategorizedView::paintEvent (this=0x16932d0,
    event=0x7fff6a2331f0)
    at /home/kde-devel/src/KDE/kdelibs/kdeui/itemviews/kcategorizedview.cpp:809
#3  0x00007fa74b572ea5 in QWidget::event (this=0x16932d0, event=0x7fff6a2331f0)
    at /home/kde-devel/src/qt/src/gui/kernel/qwidget.cpp:8124
#4  0x00007fa74b9d74d7 in QFrame::event (this=0x16932d0, e=0x7fff6a2331f0)
    at /home/kde-devel/src/qt/src/gui/widgets/qframe.cpp:557
#5  0x00007fa74ba7cabd in QAbstractScrollArea::viewportEvent (this=0x16932d0,
    e=0x7fff6a2331f0)
    at /home/kde-devel/src/qt/src/gui/widgets/qabstractscrollarea.cpp:1036
#6  0x00007fa74bb29b39 in QAbstractItemView::viewportEvent (this=0x16932d0,
    event=0x7fff6a2331f0)
    at /home/kde-devel/src/qt/src/gui/itemviews/qabstractitemview.cpp:1603
#7  0x00007fa74ba7d793 in QAbstractScrollAreaPrivate::viewportEvent (
    this=0x1bc5020, event=0x7fff6a2331f0)
    at /home/kde-devel/src/qt/src/gui/widgets/qabstractscrollarea_p.h:100
#8  0x00007fa74ba7d858 in QAbstractScrollAreaFilter::eventFilter (
    this=0x1864640, o=0x164ccc0, e=0x7fff6a2331f0)
    at /home/kde-devel/src/qt/src/gui/widgets/qabstractscrollarea_p.h:116
#9  0x00007fa74c7d5011 in QCoreApplicationPrivate::sendThroughObjectEventFilters (this=0x1502290, receiver=0x164ccc0, event=0x7fff6a2331f0)
    at /home/kde-devel/src/qt/src/corelib/kernel/qcoreapplication.cpp:819
#10 0x00007fa74b50bc41 in QApplicationPrivate::notify_helper (this=0x1502290,
    receiver=0x164ccc0, e=0x7fff6a2331f0)
    at /home/kde-devel/src/qt/src/gui/kernel/qapplication.cpp:4293
#11 0x00007fa74b50babc in QApplication::notify (this=0x1501f50,
    receiver=0x164ccc0, e=0x7fff6a2331f0)
    at /home/kde-devel/src/qt/src/gui/kernel/qapplication.cpp:4262
#12 0x00007fa74d0071af in KApplication::notify (this=0x1501f50,
    receiver=0x164ccc0, event=0x7fff6a2331f0)
    at /home/kde-devel/src/KDE/kdelibs/kdeui/kernel/kapplication.cpp:302
#13 0x00007fa74c7d4d31 in QCoreApplication::notifyInternal (this=0x1501f50,
    receiver=0x164ccc0, event=0x7fff6a2331f0)
    at /home/kde-devel/src/qt/src/corelib/kernel/qcoreapplication.cpp:704
#14 0x00007fa74b50e06f in QCoreApplication::sendSpontaneousEvent (
    receiver=0x164ccc0, event=0x7fff6a2331f0)
    at ../../include/QtCore/../../../src/qt/src/corelib/kernel/qcoreapplication.h:218
#15 0x00007fa74b56b60c in QWidgetPrivate::drawWidget (this=0x16de910,
    pdev=0x1663e18, rgn=..., offset=..., flags=4, sharedPainter=0x0,
    backingStore=0x1643850)
    at /home/kde-devel/src/qt/src/gui/kernel/qwidget.cpp:5321
#16 0x00007fa74b56bf7e in QWidgetPrivate::paintSiblingsRecursive (
    this=0x1bc5020, pdev=0x1663e18, siblings=..., index=0, rgn=...,
    offset=..., flags=4, sharedPainter=0x0, backingStore=0x1643850)
    at /home/kde-devel/src/qt/src/gui/kernel/qwidget.cpp:5434
#17 0x00007fa74b56baa7 in QWidgetPrivate::drawWidget (this=0x1bc5020,
    pdev=0x1663e18, rgn=..., offset=..., flags=4, sharedPainter=0x0,
    backingStore=0x1643850)
    at /home/kde-devel/src/qt/src/gui/kernel/qwidget.cpp:5370
#18 0x00007fa74b56bf7e in QWidgetPrivate::paintSiblingsRecursive (
    this=0x7fa72407af50, pdev=0x1663e18, siblings=..., index=2, rgn=...,
    offset=..., flags=4, sharedPainter=0x0, backingStore=0x1643850)
    at /home/kde-devel/src/qt/src/gui/kernel/qwidget.cpp:5434
#19 0x00007fa74b56baa7 in QWidgetPrivate::drawWidget (this=0x7fa72407af50,
    pdev=0x1663e18, rgn=..., offset=..., flags=4, sharedPainter=0x0,
    backingStore=0x1643850)
    at /home/kde-devel/src/qt/src/gui/kernel/qwidget.cpp:5370
#20 0x00007fa74b56bf7e in QWidgetPrivate::paintSiblingsRecursive (
    this=0x7fa72407a480, pdev=0x1663e18, siblings=..., index=1, rgn=...,
    offset=..., flags=4, sharedPainter=0x0, backingStore=0x1643850)
    at /home/kde-devel/src/qt/src/gui/kernel/qwidget.cpp:5434
#21 0x00007fa74b56baa7 in QWidgetPrivate::drawWidget (this=0x7fa72407a480,
    pdev=0x1663e18, rgn=..., offset=..., flags=4, sharedPainter=0x0,
    backingStore=0x1643850)
    at /home/kde-devel/src/qt/src/gui/kernel/qwidget.cpp:5370
#22 0x00007fa74b56bf7e in QWidgetPrivate::paintSiblingsRecursive (
    this=0x7fa7240c66d0, pdev=0x1663e18, siblings=..., index=0, rgn=...,
    offset=..., flags=4, sharedPainter=0x0, backingStore=0x1643850)
    at /home/kde-devel/src/qt/src/gui/kernel/qwidget.cpp:5434
#23 0x00007fa74b56be02 in QWidgetPrivate::paintSiblingsRecursive (
    this=0x7fa7240c66d0, pdev=0x1663e18, siblings=..., index=0, rgn=...,
    offset=..., flags=4, sharedPainter=0x0, backingStore=0x1643850)
    at /home/kde-devel/src/qt/src/gui/kernel/qwidget.cpp:5421
#24 0x00007fa74b56baa7 in QWidgetPrivate::drawWidget (this=0x7fa7240c66d0,
    pdev=0x1663e18, rgn=..., offset=..., flags=4, sharedPainter=0x0,
    backingStore=0x1643850)
    at /home/kde-devel/src/qt/src/gui/kernel/qwidget.cpp:5370
#25 0x00007fa74b56bf7e in QWidgetPrivate::paintSiblingsRecursive (
    this=0x164c720, pdev=0x1663e18, siblings=..., index=2, rgn=...,
    offset=..., flags=4, sharedPainter=0x0, backingStore=0x1643850)
    at /home/kde-devel/src/qt/src/gui/kernel/qwidget.cpp:5434
#26 0x00007fa74b56baa7 in QWidgetPrivate::drawWidget (this=0x164c720,
    pdev=0x1663e18, rgn=..., offset=..., flags=4, sharedPainter=0x0,
    backingStore=0x1643850)
    at /home/kde-devel/src/qt/src/gui/kernel/qwidget.cpp:5370
#27 0x00007fa74b56bf7e in QWidgetPrivate::paintSiblingsRecursive (
    this=0x164c1c0, pdev=0x1663e18, siblings=..., index=1, rgn=...,
    offset=..., flags=4, sharedPainter=0x0, backingStore=0x1643850)
    at /home/kde-devel/src/qt/src/gui/kernel/qwidget.cpp:5434
#28 0x00007fa74b56baa7 in QWidgetPrivate::drawWidget (this=0x164c1c0,
    pdev=0x1663e18, rgn=..., offset=..., flags=5, sharedPainter=0x0,
    backingStore=0x1643850)
    at /home/kde-devel/src/qt/src/gui/kernel/qwidget.cpp:5370
#29 0x00007fa74b77ff35 in QWidgetBackingStore::sync (this=0x1643850)
    at /home/kde-devel/src/qt/src/gui/painting/qbackingstore.cpp:1291
#30 0x00007fa74b562451 in QWidgetPrivate::syncBackingStore (this=0x164c1c0)
    at /home/kde-devel/src/qt/src/gui/kernel/qwidget.cpp:1663
#31 0x00007fa74b5734fc in QWidget::event (this=0x1668a20, event=0x1cc4940)
    at /home/kde-devel/src/qt/src/gui/kernel/qwidget.cpp:8271
#32 0x00007fa7408f46df in KRunnerDialog::event (this=0x1668a20,
    event=0x1cc4940)
    at /home/kde-devel/src/KDE/kdebase/workspace/krunner/krunnerdialog.cpp:331
#33 0x00007fa74b50bc6a in QApplicationPrivate::notify_helper (this=0x1502290,
    receiver=0x1668a20, e=0x1cc4940)
    at /home/kde-devel/src/qt/src/gui/kernel/qapplication.cpp:4297              
[event loop]
Comment 1 Alex Merry 2010-10-02 01:01:55 UTC
Fixed in r1181738 and r1181739.
Comment 2 Christoph Feck 2010-10-05 14:48:41 UTC
*** Bug 238819 has been marked as a duplicate of this bug. ***
Comment 3 flstcboy 2010-10-22 10:35:57 UTC
k3b still crashes when opening settings dialog because of this bug.
will the patch be ported back to kdelibs 4.5.2 (currently 4.5.2-310.1) ?