Neochat freezes and leaks memory when loading a room
Description
Neochat seems to freeze and leak memory whenever it tries to load a room. This happens every time.
Steps to reproduce
- Open app
- Open a room or allow Neochat to try to load whatever room you last looked at
Relevant logs and/or screenshots
Here is my best attempt at getting a backtrace. I ran neochat with GDB, then did Ctrl-C to interrupt Neochat when it froze.
(gdb) bt
#0 0x00007ffff6e89c47 in QQmlJavaScriptExpressionGuard_callback(QQmlNotifierEndpoint*, void**) (e=<optimized out>)
at /usr/src/debug/libqt5-qtdeclarative-5.15.2-ku.4.1.x86_64/src/qml/qml/qqmljavascriptexpression.cpp:418
#1 0x00007ffff6e6dbcd in QQmlNotifier::emitNotify(QQmlNotifierEndpoint*, void**) (endpoint=<optimized out>, a=0x0) at /usr/src/debug/libqt5-qtdeclarative-5.15.2-ku.4.1.x86_64/src/qml/qml/qqmlnotifier.cpp:104
#2 0x00007ffff5da577d in doActivate<false>(QObject*, int, void**) (sender=0x62b6f60, signal_index=20, argv=argv@entry=0x0) at kernel/qobject.cpp:3778
#3 0x00007ffff5d9ef60 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (sender=<optimized out>, m=<optimized out>, local_signal_index=<optimized out>, argv=argv@entry=0x0)
at kernel/qobject.cpp:3946
#4 0x00007ffff5d9efc4 in QMetaObject::activate(QObject*, int, void**) (sender=<optimized out>, signal_index=<optimized out>, argv=argv@entry=0x0) at kernel/qobject.cpp:3971
#5 0x00007ffff707312c in VDMModelDelegateDataType::notify(QQmlAdaptorModel const&, QList<QQmlDelegateModelItem*> const&, int, int, QVector<int> const&) const
(this=<optimized out>, items=<optimized out>, index=<optimized out>, count=<optimized out>, roles=<optimized out>)
at /usr/src/debug/libqt5-qtdeclarative-5.15.2-ku.4.1.x86_64/src/qmlmodels/qqmladaptormodel.cpp:175
#6 0x00007ffff707b705 in QQmlAdaptorModel::notify(QList<QQmlDelegateModelItem*> const&, int, int, QVector<int> const&) const (roles=..., count=1, index=15, items=..., this=0x5419bb0)
at /usr/src/debug/libqt5-qtdeclarative-5.15.2-ku.4.1.x86_64/include/QtQmlModels/5.15.2/QtQmlModels/private/../../../../../src/qmlmodels/qqmladaptormodel_p.h:159
#7 QQmlDelegateModelPrivate::reuseItem(QQmlDelegateModelItem*, int, int) (this=this@entry=0x5419b40, item=<optimized out>,
item@entry=0x62b6f60, newModelIndex=newModelIndex@entry=15, newGroups=newGroups@entry=805306370) at /usr/src/debug/libqt5-qtdeclarative-5.15.2-ku.4.1.x86_64/src/qmlmodels/qqmldelegatemodel.cpp:1088
#8 0x00007ffff7084f9c in QQmlDelegateModelPrivate::object(QQmlListCompositor::Group, int, QQmlIncubator::IncubationMode)
(this=0x5419b40, group=QQmlListCompositor::Default, index=15, incubationMode=QQmlIncubator::Asynchronous)
at /usr/src/debug/libqt5-qtdeclarative-5.15.2-ku.4.1.x86_64/src/qmlmodels/qqmldelegatemodel.cpp:1240
#9 0x00007ffff73fd5e6 in QQuickItemViewPrivate::createItem(int, QQmlIncubator::IncubationMode) (this=this@entry=
0x559a740, modelIndex=modelIndex@entry=15, incubationMode=incubationMode@entry=QQmlIncubator::Asynchronous)
at /usr/src/debug/libqt5-qtdeclarative-5.15.2-ku.4.1.x86_64/src/quick/items/qquickitemview.cpp:2349
--Type <RET> for more, q to quit, c to continue without paging--c
#10 0x00007ffff740d5a9 in QQuickListViewPrivate::addVisibleItems(double, double, double, double, bool) (this=0x559a740, fillFrom=-338, fillTo=1028, bufferFrom=<optimized out>, bufferTo=<optimized out>, doBuffer=true) at /usr/src/debug/libqt5-qtdeclarative-5.15.2-ku.4.1.x86_64/src/quick/items/qquicklistview.cpp:717
#11 0x00007ffff73fe7d8 in QQuickItemViewPrivate::refill(double, double) (this=0x559a740, from=-18, to=708) at /usr/src/debug/libqt5-qtdeclarative-5.15.2-ku.4.1.x86_64/src/quick/items/qquickitemview.cpp:1814
#12 0x00007ffff73ffae3 in QQuickItemViewPrivate::layout() (this=0x559a740) at /usr/src/debug/libqt5-qtdeclarative-5.15.2-ku.4.1.x86_64/src/quick/items/qquickitemview.cpp:1920
#13 0x00007ffff73502b5 in QQuickWindowPrivate::polishItems() (this=0x81ca30) at /usr/src/debug/libqt5-qtdeclarative-5.15.2-ku.4.1.x86_64/src/quick/items/qquickwindow.cpp:393
#14 0x00007ffff72cb8eb in QSGGuiThreadRenderLoop::renderWindow(QQuickWindow*) (this=0x9b5e10, window=<optimized out>) at /usr/src/debug/libqt5-qtdeclarative-5.15.2-ku.4.1.x86_64/src/quick/scenegraph/qsgrenderloop.cpp:693
#15 0x00007ffff735d8c7 in QQuickWindow::event(QEvent*) (this=0x964ff0, e=0x7fffffffcef0) at /usr/src/debug/libqt5-qtdeclarative-5.15.2-ku.4.1.x86_64/src/quick/items/qquickwindow.cpp:1858
#16 0x00007ffff783faff in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=<optimized out>, receiver=0x964ff0, e=0x7fffffffcef0) at kernel/qapplication.cpp:3632
#17 0x00007ffff5d6f13a in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x964ff0, event=0x7fffffffcef0) at kernel/qcoreapplication.cpp:1063
#18 0x00007ffff6417fc4 in QPlatformWindow::deliverUpdateRequest() (this=<optimized out>) at kernel/qplatformwindow.cpp:789
#19 QPlatformWindow::windowEvent(QEvent*) (this=<optimized out>, event=<optimized out>) at kernel/qplatformwindow.cpp:476
#20 0x00007ffff7846be6 in QApplication::notify(QObject*, QEvent*) (this=0x7fffffffd4a0, receiver=0x964ff0, e=0x7fffffffd170) at kernel/qapplication.cpp:2874
#21 0x00007ffff5d6f13a in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x964ff0, event=0x7fffffffd170) at kernel/qcoreapplication.cpp:1063
#22 0x00007ffff5dc60f3 in QTimerInfoList::activateTimers() (this=0x822f20) at kernel/qtimerinfo_unix.cpp:643
#23 0x00007ffff5dc69ac in timerSourceDispatch (source=<optimized out>) at kernel/qeventdispatcher_glib.cpp:183
#24 idleTimerSourceDispatch(GSource*, GSourceFunc, gpointer) (source=source@entry=0x8222c0) at kernel/qeventdispatcher_glib.cpp:230
#25 0x00007ffff525a8b7 in g_main_dispatch (context=0x7fffec005000) at ../glib/gmain.c:3337
#26 g_main_context_dispatch (context=0x7fffec005000) at ../glib/gmain.c:4055
#27 0x00007ffff525ac38 in g_main_context_iterate (context=context@entry=0x7fffec005000, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4131
#28 0x00007ffff525acef in g_main_context_iteration (context=0x7fffec005000, may_block=may_block@entry=1) at ../glib/gmain.c:4196
#29 0x00007ffff5dc6d30 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x822830, flags=...) at kernel/qeventdispatcher_glib.cpp:423
#30 0x00007ffff5d6db7b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7fffffffd3b0, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:69
#31 0x00007ffff5d75db0 in QCoreApplication::exec() () at ../../include/QtCore/../../src/corelib/global/qflags.h:121
#32 0x00007ffff641ca9c in QGuiApplication::exec() () at kernel/qguiapplication.cpp:1867
#33 0x00007ffff783fa75 in QApplication::exec() () at kernel/qapplication.cpp:2824
#34 0x00000000004cdfc1 in main(int, char**) (argc=<optimized out>, argv=<optimized out>) at /home/noah/kde/src/network/neochat/src/main.cpp:221
System/Matrix Information
- Distribution / Platform: openSUSE Tumbleweed 20210429
- Qt Version: 5.15.2
- NeoChat version: git master (as of 2021-05-02), commit 32c21b7b
- Quotient version: 0.6.6
- Matrix server: kde.org
Edited by Noah Davis