Bug 506829 - Crash when switching from a loading space and back to it
Summary: Crash when switching from a loading space and back to it
Status: CONFIRMED
Alias: None
Product: NeoChat
Classification: Applications
Component: General (other bugs)
Version First Reported In: 25.04.3
Platform: NixOS Linux
: NOR crash
Target Milestone: ---
Assignee: Tobias Fella
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2025-07-09 22:06 UTC by Elias Probst
Modified: 2025-09-09 08:51 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed/Implemented In:
Sentry Crash Report:


Attachments
GDB backtrace of crashed NeoChat (122.79 KB, text/x-log)
2025-07-09 22:06 UTC, Elias Probst
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Elias Probst 2025-07-09 22:06:31 UTC
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