https://bugs.kde.org/show_bug.cgi?id=451432

            Bug ID: 451432
           Summary: Discover hangs when side scrolling (dragging) the
                    slideshow
           Product: Discover
           Version: master
          Platform: Other
                OS: Linux
            Status: REPORTED
          Severity: normal
          Priority: NOR
         Component: discover
          Assignee: lei...@leinir.dk
          Reporter: m...@ratijas.tk
                CC: aleix...@kde.org
  Target Milestone: ---

Created attachment 147461
  --> https://bugs.kde.org/attachment.cgi?id=147461&action=edit
Discover hangs when side scrolling the slideshow

SUMMARY
Discover hangs when side scrolling (dragging) the slideshow.

STEPS TO REPRODUCE
1. Open Discover
2. Search for e.g. Pix app
3. Drag the screenshots gallery all the way to the right, until the rightmost
item goes out of view.

OBSERVED RESULT
Discover hangs, in a sense that it becomes unresponsive, but it keeps running
at 100% (single core) CPU and leaking (consuming) more and more memory at a
rate ~1GB per minute.

EXPECTED RESULT
welp ¯\_(ツ)_/¯ not this

SOFTWARE/OS VERSIONS
Operating System: Arch Linux
KDE Plasma Version: 5.24.80
KDE Frameworks Version: 5.92.0
Qt Version: 5.15.3
Kernel Version: 5.16.13-arch1-1 (64-bit)
Graphics Platform: X11
Processors: 8 × Intel® Core™ i7-6700HQ CPU @ 2.60GHz
Memory: 15.6 GiB of RAM
Graphics Processor: NVIDIA GeForce GTX 970M/PCIe/SSE2

ADDITIONAL INFORMATION

❯ gdb
GNU gdb (GDB) 11.2

(gdb) attach 319215
Attaching to process 319215

0x00007f2e52eeab6b in QVector<Kirigami::PlatformTheme*>::indexOf
(this=0x561f1fca8468, t=@0x7ffd1524eec0: 0x561f6f751710, from=0) at
/usr/include/qt/QtCore/qvector.h:1005
1005            while (++n != e)

(gdb) info threads 
  Id   Target Id                                            Frame 
* 1    Thread 0x7f2e546bba80 (LWP 319215) "plasma-discover" 0x00007f2e52eeab6b
in QVector<Kirigami::PlatformTheme*>::indexOf (this=0x561f1fca8468,
t=@0x7ffd1524eec0: 0x561f6f751710, from=0) at
/usr/include/qt/QtCore/qvector.h:1005
  2    Thread 0x7f2e541b2640 (LWP 319216) "QXcbEventQueue"  0x00007f2e592732af
in poll () from /usr/lib/libc.so.6
  3    Thread 0x7f2e52eb2640 (LWP 319217) "QDBusConnection" 0x00007f2e592732af
in poll () from /usr/lib/libc.so.6
  4    Thread 0x7f2e50f7f640 (LWP 319218) "QQmlThread"      0x00007f2e592732af
in poll () from /usr/lib/libc.so.6
  5    Thread 0x7f2e34d24640 (LWP 319223) "Qt bearer threa" 0x00007f2e592732af
in poll () from /usr/lib/libc.so.6
  6    Thread 0x7f2e2f48a640 (LWP 319227) "QSGRenderThread" 0x00007f2e592732af
in poll () from /usr/lib/libc.so.6
  7    Thread 0x7f2e2dd7e640 (LWP 319228) "CPMMListener"    0x00007f2e59275b4d
in select () from /usr/lib/libc.so.6
  8    Thread 0x7f2e0fbff640 (LWP 319229) "gmain"           0x00007f2e592732af
in poll () from /usr/lib/libc.so.6
  9    Thread 0x7f2e0f3fe640 (LWP 319230) "gdbus"           0x00007f2e592732af
in poll () from /usr/lib/libc.so.6
  10   Thread 0x7f2e0ebfd640 (LWP 319231) "QNetworkAccessM" 0x00007f2e592732af
in poll () from /usr/lib/libc.so.6
  11   Thread 0x7f2e0e3fc640 (LWP 319233) "QNetworkAccessM" 0x00007f2e592732af
in poll () from /usr/lib/libc.so.6
  12   Thread 0x7f2e0d272640 (LWP 319240) "QQuickPixmapRea" 0x00007f2e592732af
in poll () from /usr/lib/libc.so.6
  13   Thread 0x7f2e0ca71640 (LWP 319241) "QNetworkAccessM" 0x00007f2e592732af
in poll () from /usr/lib/libc.so.6
  14   Thread 0x7f2dee78a640 (LWP 319242) "QNetworkAccessM" 0x00007f2e592732af
in poll () from /usr/lib/libc.so.6

(gdb) bt
#0  0x00007f2e52eeab6b in
QVector<Kirigami::PlatformTheme*>::indexOf(Kirigami::PlatformTheme* const&,
int) const (this=0x561f1fca8468, t=@0x7ffd1524eec0: 0x561f6f751710, from=0) at
/usr/include/qt/QtCore/qvector.h:1005
#1  0x00007f2e52ee9376 in
QVector<Kirigami::PlatformTheme*>::removeOne(Kirigami::PlatformTheme* const&)
(this=0x561f1fca8468, t=@0x7ffd1524eec0: 0x561f6f751710) at
/usr/include/qt/QtCore/qvector.h:182
#2  0x00007f2e52ee7fd8 in
Kirigami::PlatformThemeData::removeChangeWatcher(Kirigami::PlatformTheme*)
(this=0x561f1fca82d0, object=0x561f6f751710) at
/home/ratijas/kde/src/frameworks/kirigami/src/libkirigami/platformtheme.cpp:193
#3  0x00007f2e52ee6aeb in Kirigami::PlatformTheme::event(QEvent*)
(this=0x561f6f751710, event=0x7ffd1524f040) at
/home/ratijas/kde/src/frameworks/kirigami/src/libkirigami/platformtheme.cpp:861
#4  0x00007f2e51c460bd in PlasmaDesktopTheme::event(QEvent*)
(this=0x561f6f751710, event=0x7ffd1524f040) at
/home/ratijas/kde/src/frameworks/qqc2-desktop-style/kirigami-plasmadesktop-integration/plasmadesktoptheme.cpp:314
#5  0x00007f2e5ad281c6 in QApplicationPrivate::notify_helper(QObject*, QEvent*)
(this=<optimized out>, receiver=0x561f6f751710, e=0x7ffd1524f040) at
kernel/qapplication.cpp:3637
#6  0x00007f2e5992d0aa in QCoreApplication::notifyInternal2(QObject*, QEvent*)
(receiver=0x561f6f751710, event=0x7ffd1524f040) at
kernel/qcoreapplication.cpp:1064
#7  0x00007f2e52ee71e0 in Kirigami::PlatformTheme::update()
(this=0x561f6f751710) at
/home/ratijas/kde/src/frameworks/kirigami/src/libkirigami/platformtheme.cpp:957
#8  0x00007f2e52eedb75 in QtPrivate::FunctorCall<QtPrivate::IndexesList<>,
QtPrivate::List<>, void, void (Kirigami::PlatformTheme::*)()>::call(void
(Kirigami::PlatformTheme::*)(), Kirigami::PlatformTheme*, void**)
    (f=(void (Kirigami::PlatformTheme::*)(Kirigami::PlatformTheme * const))
0x7f2e52ee6d8c <Kirigami::PlatformTheme::update()>, o=0x561f6f751710,
arg=0x7ffd1524f260) at /usr/include/qt/QtCore/qobjectdefs_impl.h:152
#9  0x00007f2e52eed338 in QtPrivate::FunctionPointer<void
(Kirigami::PlatformTheme::*)()>::call<QtPrivate::List<>, void>(void
(Kirigami::PlatformTheme::*)(), Kirigami::PlatformTheme*, void**)
    (f=(void (Kirigami::PlatformTheme::*)(Kirigami::PlatformTheme * const))
0x7f2e52ee6d8c <Kirigami::PlatformTheme::update()>, o=0x561f6f751710,
arg=0x7ffd1524f260) at /usr/include/qt/QtCore/qobjectdefs_impl.h:185
#10 0x00007f2e52eec5d5 in QtPrivate::QSlotObject<void
(Kirigami::PlatformTheme::*)(), QtPrivate::List<>, void>::impl(int,
QtPrivate::QSlotObjectBase*, QObject*, void**, bool*)
    (which=1, this_=0x561f6f7517d0, r=0x561f6f751710, a=0x7ffd1524f260,
ret=0x0) at /usr/include/qt/QtCore/qobjectdefs_impl.h:418
#11 0x00007f2e5995df63 in QtPrivate::QSlotObjectBase::call(QObject*, void**)
(a=0x7ffd1524f260, r=<optimized out>, this=0x561f6f7517d0, this=<optimized
out>, r=<optimized out>, a=<optimized out>)
    at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398
#12 doActivate<false>(QObject*, int, void**) (sender=0x561f6f750b60,
signal_index=14, argv=0x7ffd1524f260) at kernel/qobject.cpp:3886
#13 0x00007f2e5b9add37 in QQuickItem::windowChanged(QQuickWindow*)
(this=<optimized out>, _t1=<optimized out>) at .moc/moc_qquickitem.cpp:1146
#14 0x00007f2e5b9aa856 in QQuickItemPrivate::derefWindow()
(this=0x561f6f750cd0) at
/usr/src/debug/qtdeclarative/src/quick/items/qquickitem.cpp:3056
#15 0x00007f2e5b9aa7fd in QQuickItemPrivate::derefWindow()
(this=0x561f6f74f430) at
/usr/src/debug/qtdeclarative/src/quick/items/qquickitem.cpp:3049
#16 0x00007f2e5b9aa7fd in QQuickItemPrivate::derefWindow()
(this=0x561f6f74a3f0) at
/usr/src/debug/qtdeclarative/src/quick/items/qquickitem.cpp:3049
#17 0x00007f2e5b9aa7fd in QQuickItemPrivate::derefWindow()
(this=this@entry=0x561f6f749d60) at
/usr/src/debug/qtdeclarative/src/quick/items/qquickitem.cpp:3049
#18 0x00007f2e5b9abef1 in QQuickItem::setParentItem(QQuickItem*)
(this=0x561f6f74d1b0, parentItem=<optimized out>) at
/usr/src/debug/qtdeclarative/src/quick/items/qquickitem.cpp:2706
#19 0x00007f2e5ba751dc in QQuickItemView::destroyingItem(QObject*)
(this=<optimized out>, object=<optimized out>) at
/usr/src/debug/qtdeclarative/src/quick/items/qquickitemview.cpp:2422
#20 0x00007f2e5995dfaf in doActivate<false>(QObject*, int, void**)
(sender=0x561f1fdabb60, signal_index=7, argv=0x7ffd1524f5c0) at
kernel/qobject.cpp:3898
#21 0x00007f2e5b70bd57 in QQmlInstanceModel::destroyingItem(QObject*)
(this=<optimized out>, _t1=<optimized out>) at
.moc/moc_qqmlobjectmodel_p.cpp:284
#22 0x00007f2e5b732810 in
QQmlDelegateModelPrivate::emitDestroyingItem(QObject*) (item=<optimized out>,
this=0x561f1fdabb90) at
/usr/src/debug/qtdeclarative/src/qmlmodels/qqmldelegatemodel_p_p.h:305
#23 QQmlDelegateModelPrivate::destroyCacheItem(QQmlDelegateModelItem*)
(this=0x561f1fdabb90, cacheItem=0x561f46f30140) at
/usr/src/debug/qtdeclarative/src/qmlmodels/qqmldelegatemodel.cpp:643
#24 0x00007f2e5b7476b2 in QQmlDelegateModelPrivate::release(QObject*,
QQmlInstanceModel::ReusableFlag) (this=0x561f1fdabb90, object=<optimized out>,
reusableFlag=QQmlInstanceModel::NotReusable)
    at /usr/src/debug/qtdeclarative/src/qmlmodels/qqmldelegatemodel.cpp:637
#25 0x00007f2e5b7306c6 in QQmlDelegateModelPrivate::release(QObject*,
QQmlInstanceModel::ReusableFlag) (reusableFlag=<optimized out>,
object=<optimized out>, this=<optimized out>)
    at /usr/src/debug/qtdeclarative/src/qmlmodels/qqmldelegatemodel.cpp:656
#26 QQmlDelegateModel::release(QObject*, QQmlInstanceModel::ReusableFlag)
(this=<optimized out>, item=<optimized out>, reusableFlag=<optimized out>) at
/usr/src/debug/qtdeclarative/src/qmlmodels/qqmldelegatemodel.cpp:658
#27 0x00007f2e5ba757e7 in QQuickItemViewPrivate::releaseItem(FxViewItem*,
QQmlInstanceModel::ReusableFlag) (this=0x561f1fdaa3a0, item=0x561f6f750b00,
reusableFlag=QQmlInstanceModel::NotReusable)
    at /usr/src/debug/qtdeclarative/src/quick/items/qquickitemview.cpp:2454
#28 0x00007f2e5ba7da1d in QQuickListViewPrivate::releaseItem(FxViewItem*,
QQmlInstanceModel::ReusableFlag) (reusableFlag=<optimized out>, item=<optimized
out>, this=0x561f1fdaa3a0)
    at /usr/src/debug/qtdeclarative/src/quick/items/qquicklistview.cpp:663
#29 QQuickListViewPrivate::releaseItem(FxViewItem*,
QQmlInstanceModel::ReusableFlag) (this=0x561f1fdaa3a0, item=<optimized out>,
reusableFlag=<optimized out>) at
/usr/src/debug/qtdeclarative/src/quick/items/qquicklistview.cpp:655
#30 0x00007f2e5ba7dd0d in QQuickListViewPrivate::removeItem(FxViewItem*)
(this=this@entry=0x561f1fdaa3a0, item=<optimized out>,
item@entry=0x561f6f750b00) at
/usr/src/debug/qtdeclarative/src/quick/items/qquicklistview.cpp:758
#31 0x00007f2e5ba83802 in QQuickListViewPrivate::removeNonVisibleItems(double,
double) (this=0x561f1fdaa3a0, bufferFrom=-122, bufferTo=310) at
/usr/src/debug/qtdeclarative/src/quick/items/qquicklistview.cpp:800
#32 0x00007f2e5ba6b1f0 in QQuickItemViewPrivate::refill(double, double)
(this=0x561f1fdaa3a0, from=-112, to=300) at
/usr/src/debug/qtdeclarative/src/quick/items/qquickitemview.cpp:1802
#33 0x00007f2e5ba6cdd9 in QQuickItemViewPrivate::layout() (this=0x561f1fdaa3a0)
at /usr/src/debug/qtdeclarative/src/quick/items/qquickitemview.cpp:1920
#34 0x00007f2e5b9be06d in QQuickWindowPrivate::polishItems()
(this=0x561f1e3abca0) at
/usr/src/debug/qtdeclarative/src/quick/items/qquickwindow.cpp:393
#35 0x00007f2e5b977463 in
QSGThreadedRenderLoop::polishAndSync(QSGThreadedRenderLoop::Window*, bool)
(this=0x561f1e604cd0, w=0x561f1ef712b0, inExpose=<optimized out>)
    at
/usr/src/debug/qtdeclarative/src/quick/scenegraph/qsgthreadedrenderloop.cpp:1577
#36 0x00007f2e5b9c9784 in QQuickWindow::event(QEvent*) (this=0x561f1e372560,
e=0x7ffd1524fd40) at
/usr/src/debug/qtdeclarative/src/quick/items/qquickwindow.cpp:1857
#37 0x00007f2e5ad281c6 in QApplicationPrivate::notify_helper(QObject*, QEvent*)
(this=<optimized out>, receiver=0x561f1e372560, e=0x7ffd1524fd40) at
kernel/qapplication.cpp:3637
#38 0x00007f2e5992d0aa in QCoreApplication::notifyInternal2(QObject*, QEvent*)
(receiver=0x561f1e372560, event=0x7ffd1524fd40) at
kernel/qcoreapplication.cpp:1064
#39 0x00007f2e59e6c609 in QPlatformWindow::deliverUpdateRequest()
(this=<optimized out>) at kernel/qplatformwindow.cpp:796
#40 QPlatformWindow::windowEvent(QEvent*) (this=<optimized out>,
event=<optimized out>) at kernel/qplatformwindow.cpp:476
#41 0x00007f2e5ad2c4fc in QApplication::notify(QObject*, QEvent*)
(this=0x7ffd15250390, receiver=0x561f1e372560, e=0x7ffd1524ffd0) at
kernel/qapplication.cpp:2879
#42 0x00007f2e5992d0aa in QCoreApplication::notifyInternal2(QObject*, QEvent*)
(receiver=0x561f1e372560, event=0x7ffd1524ffd0) at
kernel/qcoreapplication.cpp:1064
#43 0x00007f2e599788e5 in QTimerInfoList::activateTimers()
(this=0x561f1e341670) at kernel/qtimerinfo_unix.cpp:643
#44 0x00007f2e59978eca in timerSourceDispatch(GSource*, GSourceFunc, gpointer)
(source=<optimized out>) at kernel/qeventdispatcher_glib.cpp:183
#45 0x00007f2e581e4ee3 in g_main_dispatch (context=0x7f2e4c005010) at
../glib/glib/gmain.c:3381
#46 g_main_context_dispatch (context=0x7f2e4c005010) at
../glib/glib/gmain.c:4099
#47 0x00007f2e5823b0f9 in g_main_context_iterate.constprop.0
(context=context@entry=0x7f2e4c005010, block=block@entry=1,
dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/glib/gmain.c:4175
#48 0x00007f2e581e2455 in g_main_context_iteration (context=0x7f2e4c005010,
may_block=1) at ../glib/glib/gmain.c:4240
#49 0x00007f2e5997908a in
QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)
(this=0x561f1e3476f0, flags=...) at kernel/qeventdispatcher_glib.cpp:423
--Type <RET> for more, q to quit, c to continue without paging--c
#50 0x00007f2e5992539b in
QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7ffd15250270,
flags=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:69
#51 0x00007f2e59930ad7 in QCoreApplication::exec() () at
../../include/QtCore/../../src/corelib/global/qflags.h:121
#52 0x0000561f1d865ec7 in main(int, char**) (argc=1, argv=0x7ffd15250518) at
/home/ratijas/kde/src/kde/workspace/discover/discover/main.cpp:217

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to