Created attachment 183107 [details] GDB backtrace of crashed NeoChat SUMMARY When switching away from a space while it is loading and then immediately back to it, NeoChat will crash. STEPS TO REPRODUCE 1. Have a few spaces with some rooms that might take a bit to load 2. Switch to such a space 3. Become impatient while it is loading, switch to another space 4. Switch immediately back to the previous space OBSERVED RESULT NeoChat will crash (full BT is attached): #0 0x00000000009498cc in Quotient::Room::isEventNotable(Quotient::TimelineItem const&) const () #1 0x00000000009afd12 in Quotient::EventStats::fromRange(Quotient::Room const*, std::reverse_iterator<std::_Deque_iterator<Quotient::TimelineItem, Quotient::TimelineItem const&, Quotient::TimelineItem const*> > const&, std::reverse_iterator<std::_Deque_iterator<Quotient::TimelineItem, Quotient::TimelineItem const&, Quotient::TimelineItem const*> > const&, Quotient::EventStats const&) () #2 0x00000000009b04fc in Quotient::EventStats::updateOnMarkerMove(Quotient::Room const*, std::reverse_iterator<std::_Deque_iterator<Quotient::TimelineItem, Quotient::TimelineItem const&, Quotient::TimelineItem const*> > const&, std::reverse_iterator<std::_Deque_iterator<Quotient::TimelineItem, Quotient::TimelineItem const&, Quotient::TimelineItem const*> > const&) () #3 0x00000000009599d1 in Quotient::Room::Private::setLocalLastReadReceipt(std::reverse_iterator<std::_Deque_iterator<Quotient::TimelineItem, Quotient::TimelineItem const&, Quotient::TimelineItem const*> > const&, Quotient::ReadReceipt, bool) () #4 0x0000000000959c1d in Quotient::Room::Private::setFullyReadMarker(QString const&) () #5 0x000000000095a9b1 in Quotient::Room::Private::updateStats(std::reverse_iterator<std::_Deque_iterator<Quotient::TimelineItem, Quotient::TimelineItem const&, Quotient::TimelineItem const*> > const&, std::reverse_iterator<std::_Deque_iterator<Quotient::TimelineItem, Quotient::TimelineItem const&, Quotient::TimelineItem const*> > const&) () #6 0x00000000009694c7 in QtPrivate::QCallableObject<Quotient::Room::Private::getPreviousContent(int, QString const&)::{lambda()#1}, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) () #7 0x00007ffff34207ee in void doActivate<false>(QObject*, int, void**) () at /nix/store/l9kvcx3wna1bla7xpy1629hawjqmna4y-qtbase-6.9.0/lib/libQt6Core.so.6 #8 0x00000000008bcec0 in Quotient::BaseJob::success(Quotient::BaseJob*) () #9 0x00000000009e3145 in Quotient::BaseJob::finishJob() () EXPECTED RESULT NeoChat doesn't crash when switching back and forth between spaces that are still loading SOFTWARE/OS VERSIONS Operating System: NixOS 25.11 KDE Plasma Version: 6.4.2 KDE Frameworks Version: 6.15.0 Qt Version: 6.9.0 Kernel Version: 6.15.4 (64-bit) Graphics Platform: Wayland Processors: 12 × AMD Ryzen AI 5 340 w/ Radeon 840M Memory: 32 GiB of RAM (30.6 GiB usable) Graphics Processor: AMD Radeon Graphics ADDITIONAL INFORMATION