Bug 515956

Summary: Rooms scroll back in history repeatedly when Neochat is open for a while. Scrolling forward eventually causes a crash.
Product: [Applications] NeoChat Reporter: TraceyC <kdedev>
Component: GeneralAssignee: Tobias Fella <fella>
Status: REPORTED ---    
Severity: crash CC: carl, josh
Priority: NOR    
Version First Reported In: 25.12.2   
Target Milestone: ---   
Platform: Solus   
OS: Linux   
See Also: https://bugs.kde.org/show_bug.cgi?id=456647
Latest Commit: Version Fixed/Implemented In:
Sentry Crash Report:

Description TraceyC 2026-02-13 17:21:41 UTC
SUMMARY
After Neochat has been open for a while, when viewing certain rooms the chat is scrolled back in history rather than showing the newest messages. Scrolling up and down in the room caused a crash.

STEPS TO REPRODUCE
1. Have Neochat open for a few hours (probably long enough for server events to accumulate)
2. Switch rooms a few times

OBSERVED RESULT
The history of some rooms is scrolled up to past messages / events

EXPECTED RESULT
The history is scrolled to the last seen message / event

SOFTWARE/OS VERSIONS
Linux/KDE Plasma: 
KDE Plasma Version: 6.5.5
KDE Frameworks Version: 6.22.0
Qt Version: 6.10.2

ADDITIONAL INFORMATION
I noticed this with a a few rooms on kde.org in particular
Restarting Neochat temporarily makes room history scroll properly
The crash looks like it's all in Qt
Unfortunately, I'm not able to build Neochat on Plasma git-master (my distro doesn't have Qthttpserver and I haven't been successful building it)


warning: 44     pthread_kill.c: No such file or directory
[Current thread is 1 (Thread 0x7f792df2db80 (LWP 691490))]
(gdb) bt
#0  __pthread_kill_implementation (threadid=<optimized out>, signo=11, no_tid=0)
    at pthread_kill.c:44
#1  __pthread_kill_internal (threadid=<optimized out>, signo=11) at pthread_kill.c:89
#2  __GI___pthread_kill (threadid=<optimized out>, signo=signo@entry=11)
    at pthread_kill.c:100
#3  0x00007f7933e47646 in __GI_raise (sig=11) at ../sysdeps/posix/raise.c:26
#4  0x00007f7937abc084 in KCrash::defaultCrashHandler (sig=11)
    at /home/build/YPKG/root/kf6-kcrash/build/kcrash-6.22.0/src/kcrash.cpp:605
#5  0x00007f7933e47780 in <signal handler called> ()
    at /usr/lib/glibc-hwcaps/x86-64-v3/libc.so.6
#6  0x00007f7937261aa5 in QQuickListViewPrivate::layoutVisibleItems
    (this=0x5598413623c0, fromModelIndex=0)
    at /home/build/YPKG/root/qt6-declarative/build/qtdeclarative-everywhere-src-6.10.2/src/quick/items/qquicklistview.cpp:907
#7  0x00007f793724b764 in QQuickItemViewPrivate::layout (this=0x5598413623c0)
    at /home/build/YPKG/root/qt6-declarative/build/qtdeclarative-everywhere-src-6.10.2/src/quick/items/qquickitemview.cpp:2060
#8  0x00007f7936fc6b39 in QQuickWindowPrivate::polishItems (this=0x5598380a00c0)
    at /home/build/YPKG/root/qt6-declarative/build/qtdeclarative-everywhere-src-6.10.2/src/quick/items/qquickwindow.cpp:345
#9  0x00007f7937214b6e in QSGThreadedRenderLoop::polishAndSync
    (this=0x5598380a0af0, w=<optimized out>, inExpose=false)
    at /home/build/YPKG/root/qt6-declarative/build/qtdeclarative-everywhere-src-6.10.2/src/quick/scenegraph/qsgthreadedrenderloop.cpp:1656
#10 0x00007f793721564b in QSGThreadedRenderLoop::handleUpdateRequest
    (this=0x5598380a0af0, window=0x5598385eb6e0)
    at /home/build/YPKG/root/qt6-declarative/build/qtdeclarative-everywhere-src-6.10.2/src/quick/scenegraph/qsgthreadedrenderloop.cpp:1427
#11 0x00007f7936fcd19c in QQuickWindow::event (this=0x5598385eb6e0, event=0x7fff69ee6830)
    at /home/build/YPKG/root/qt6-declarative/build/qtdeclarative-everywhere-src-6.10.2/src/quick/items/qquickwindow.cpp:1633
#12 0x00007f7936fe0bec in QQuickWindowQmlImpl::event
    (this=0x5598385eb6e0, event=0x7fff69ee5538)
    at /home/build/YPKG/root/qt6-declarative/build/qtdeclarative-everywhere-src-6.10.2/src/quick/items/qquickwindowmodule.cpp:153
#13 0x00007f7935a411c0 in QApplicationPrivate::notify_helper
    (this=<optimized out>, receiver=0x5598385eb6e0, e=0x7fff69ee6830)
    at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.10.2/src/widgets/kernel/qapplication.cpp:3305
#14 0x00007f7935a42553 in QApplication::notify
    (this=<optimized out>, receiver=0x5598385eb6e0, e=0x7fff69ee6830)
    at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.10.2/src/widgets/kernel/qapplication.cpp:2700
#15 0x00007f79348e30e4 in QCoreApplication::notifyInternal2
    (receiver=0x5598385eb6e0, event=0x7fff69ee6830)
    at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.10.2/src/corelib/kernel/qcoreapplication.cpp:1109
#16 QCoreApplication::sendEvent (receiver=0x5598385eb6e0, event=0x7fff69ee6830)
    at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.10.2/src/corelib/kernel/qcoreapplication.cpp:1549
#17 0x00007f79351054f1 in QPlatformWindow::deliverUpdateRequest (this=<optimized out>)
    at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.10.2/src/gui/kernel/qplatformwindow.cpp:831
#18 0x00007f792ed5c6ac in QtWaylandClient::QWaylandWindow::deliverUpdateRequest
    (this=<optimized out>)
    at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.10.2/src/plugins/platforms/wayland/qwaylandwindow.cpp:1838
#19 0x00007f793493f6b9 in QObject::event (this=0x559838b3e990, e=0x7f791c025590) at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.10.2/src/corelib/kernel/qobject.cpp:1413
#20 0x00007f7935a411c0 in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x559838b3e990, e=0x7f791c025590)
    at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.10.2/src/widgets/kernel/qapplication.cpp:3305
#21 0x00007f7935a42553 in QApplication::notify (this=<optimized out>, receiver=0x559838b3e990, e=0x7f791c025590)
    at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.10.2/src/widgets/kernel/qapplication.cpp:2700
#22 0x00007f79348e3a52 in QCoreApplication::notifyInternal2 (receiver=0x559838b3e990, event=<optimized out>)
    at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.10.2/src/corelib/kernel/qcoreapplication.cpp:1109
#23 QCoreApplication::sendEvent (receiver=0x559838b3e990, event=<optimized out>)
    at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.10.2/src/corelib/kernel/qcoreapplication.cpp:1549
#24 QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x5598380abc50)
    at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.10.2/src/corelib/kernel/qcoreapplication.cpp:1904
#25 0x00007f7934c1344f in QCoreApplication::sendPostedEvents (receiver=0x0, event_type=0)
    at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.10.2/src/corelib/kernel/qcoreapplication.cpp:1757
#26 postEventSourceDispatch (s=0x559838125d60) at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.10.2/src/corelib/kernel/qeventdispatcher_glib.cpp:246
#27 0x00007f7934cdfb9e in g_main_dispatch (context=0x7f7920000f60) at ../glib/gmain.c:3565
#28 0x00007f7934ce0c08 in g_main_context_dispatch_unlocked (context=0x7f7920000f60) at ../glib/gmain.c:4425
#29 g_main_context_iterate_unlocked (context=context@entry=0x7f7920000f60, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4490
#30 0x00007f7934ce0cf8 in g_main_context_iteration (context=0x7f7920000f60, may_block=1) at ../glib/gmain.c:4556
#31 0x00007f7934c12bbe in QEventDispatcherGlib::processEvents (this=0x55983812ac90, flags=...)
    at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.10.2/src/corelib/kernel/qeventdispatcher_glib.cpp:399
#32 0x00007f79348ee646 in QEventLoop::processEvents (this=0x7fff69ee6e40, flags=...)
    at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.10.2/src/corelib/kernel/qeventloop.cpp:104
#33 QEventLoop::exec (this=0x7fff69ee6e40, flags=...) at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.10.2/src/corelib/kernel/qeventloop.cpp:186
#34 0x00007f79348e2c99 in QCoreApplication::exec () at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.10.2/src/corelib/kernel/qcoreapplication.cpp:1452
#35 0x00005598171f1760 in main (argc=1, argv=<optimized out>) at /home/build/YPKG/root/neochat/build/neochat-25.12.2/src/app/main.cpp:300
(gdb)