Bug 516108

Summary: Freezes in QChar::category /harfbuzz library when loading chat history while a link preview is loading and rich text bar is open
Product: [Applications] NeoChat Reporter: Nate Graham <nate>
Component: GeneralAssignee: Tobias Fella <fella>
Status: CONFIRMED ---    
Severity: normal CC: carl, josh, nicolas.fella
Priority: NOR Keywords: regression
Version First Reported In: git master   
Target Milestone: ---   
Platform: Other   
OS: Linux   
Latest Commit: Version Fixed/Implemented In:
Sentry Crash Report:
Attachments: What it looks like the moment it freezes

Description Nate Graham 2026-02-16 17:29:25 UTC
Created attachment 189668 [details]
What it looks like the moment it freezes

Current git master via the KDE nightly Flatpak repo.

Ever since the rich text bar was merged, I've been encountering freezes when there are two progress indicators on the screen at once: the intederminate bar for loading message history as well as the indeterminate gear spinner for loading messages or link previews.


STEPS TO REPRODUCE
1. Open the rich text bar
2. Wait for someone to paste a link or quote some text
3. While it's still loading (and showing the gear spinner) scroll up to load previous messages. See attached screenshot for what this looks like.


OBSERVED RESULT
App freezes. Backtrace:

#0  0x00007f3f50ab205b in QChar::category(char32_t) ()
    at /usr/lib/x86_64-linux-gnu/libQt6Core.so.6
#1  0x00007f3f51efc15f in ??? () at /usr/lib/x86_64-linux-gnu/libQt6Gui.so.6
#2  0x00007f3f4e81abfa in _hb_glyph_info_set_unicode_props(hb_glyph_info_t*, hb_buffer_t*) [clone .lto_priv.1] [clone .lto_priv.0] () at /usr/lib/x86_64-linux-gnu/libharfbuzz.so.0
#3  0x00007f3f4e826c5e in hb_ot_shape_internal(hb_ot_shape_context_t*) [clone .lto_priv.0] ()
    at /usr/lib/x86_64-linux-gnu/libharfbuzz.so.0
#4  0x00007f3f4e831423 in hb_shape_plan_execute () at /usr/lib/x86_64-linux-gnu/libharfbuzz.so.0
#5  0x00007f3f4e833ba8 in hb_shape_full () at /usr/lib/x86_64-linux-gnu/libharfbuzz.so.0
#6  0x00007f3f51db00da in QTextEngine::shapeTextWithHarfbuzzNG(QScriptItem const&, unsigned short const*, int, int, int, QFontEngine*, QSpan<unsigned int, 18446744073709551615ul>, bool, bool, QMap<QFont::Tag, unsigned int> const&) const () at /usr/lib/x86_64-linux-gnu/libQt6Gui.so.6
#7  0x00007f3f51db1659 in QTextEngine::shapeText(int) const ()
    at /usr/lib/x86_64-linux-gnu/libQt6Gui.so.6
#8  0x00007f3f51ddb35f in QTextLine::layout_helper(int) ()
    at /usr/lib/x86_64-linux-gnu/libQt6Gui.so.6
#9  0x00007f3f51d8931d in ??? () at /usr/lib/x86_64-linux-gnu/libQt6Gui.so.6
#10 0x00007f3f51d919f9 in ??? () at /usr/lib/x86_64-linux-gnu/libQt6Gui.so.6
#11 0x00007f3f51d8f8d8 in ??? () at /usr/lib/x86_64-linux-gnu/libQt6Gui.so.6
#12 0x00007f3f51d9001d in ??? () at /usr/lib/x86_64-linux-gnu/libQt6Gui.so.6
#13 0x00007f3f51d967ab in QTextDocumentLayout::doLayout(int, int, int) ()
    at /usr/lib/x86_64-linux-gnu/libQt6Gui.so.6
#14 0x00007f3f51d98201 in QTextDocumentLayout::documentChanged(int, int, int) ()
    at /usr/lib/x86_64-linux-gnu/libQt6Gui.so.6
#15 0x00007f3f51d4e113 in QTextDocument::setTextWidth(double) ()
    at /usr/lib/x86_64-linux-gnu/libQt6Gui.so.6
#16 0x00007f3f540ba588 in QQuickTextEdit::updateSize() ()
    at /usr/lib/x86_64-linux-gnu/libQt6Quick.so.6
#17 0x00007f3f540bee60 in QQuickTextEdit::geometryChange(QRectF const&, QRectF const&) ()
    at /usr/lib/x86_64-linux-gnu/libQt6Quick.so.6
#18 0x00007f3f4ffa6496 in QQuickTextArea::geometryChange(QRectF const&, QRectF const&) ()
    at /usr/lib/x86_64-linux-gnu/libQt6QuickTemplates2.so.6
#19 0x00007f3f5402acad in QQuickItem::setSize(QSizeF const&) ()
    at /usr/lib/x86_64-linux-gnu/libQt6Quick.so.6
#20 0x00007f3f2d9748a2 in ??? () at /usr/lib/x86_64-linux-gnu/libQt6QuickLayouts.so.6
#21 0x00007f3f51e06f91 in QGridLayoutEngine::setGeometries(QRectF const&, QAbstractLayoutStyleInfo const*) () at /usr/lib/x86_64-linux-gnu/libQt6Gui.so.6
#22 0x00007f3f2d972595 in QQuickGridLayoutBase::rearrange(QSizeF const&) ()
    at /usr/lib/x86_64-linux-gnu/libQt6QuickLayouts.so.6
#23 0x00007f3f2d96eb49 in QQuickLayout::geometryChange(QRectF const&, QRectF const&) ()
    at /usr/lib/x86_64-linux-gnu/libQt6QuickLayouts.so.6
#24 0x00007f3f5402acad in QQuickItem::setSize(QSizeF const&) ()
    at /usr/lib/x86_64-linux-gnu/libQt6Quick.so.6
#25 0x00007f3f2d9748a2 in ??? () at /usr/lib/x86_64-linux-gnu/libQt6QuickLayouts.so.6
#26 0x00007f3f51e06f91 in QGridLayoutEngine::setGeometries(QRectF const&, QAbstractLayoutStyleInfo const*) () at /usr/lib/x86_64-linux-gnu/libQt6Gui.so.6
#27 0x00007f3f2d972595 in QQuickGridLayoutBase::rearrange(QSizeF const&) ()
    at /usr/lib/x86_64-linux-gnu/libQt6QuickLayouts.so.6
#28 0x00007f3f2d96eb49 in QQuickLayout::geometryChange(QRectF const&, QRectF const&) ()
    at /usr/lib/x86_64-linux-gnu/libQt6QuickLayouts.so.6
#29 0x00007f3f5402acad in QQuickItem::setSize(QSizeF const&) ()
    at /usr/lib/x86_64-linux-gnu/libQt6Quick.so.6
#30 0x00007f3f4ff1db76 in QQuickControlPrivate::resizeContent() ()
    at /usr/lib/x86_64-linux-gnu/libQt6QuickTemplates2.so.6
#31 0x00007f3f4ff2171b in QQuickControl::geometryChange(QRectF const&, QRectF const&) ()
    at /usr/lib/x86_64-linux-gnu/libQt6QuickTemplates2.so.6
#32 0x00007f3f5402acad in QQuickItem::setSize(QSizeF const&) ()
    at /usr/lib/x86_64-linux-gnu/libQt6Quick.so.6
#33 0x000055b7c59b5bcf in ??? ()
#34 0x00007f3f540fcb17 in QQuickWindowPrivate::polishItems() ()
    at /usr/lib/x86_64-linux-gnu/libQt6Quick.so.6
#35 0x00007f3f5434ca86 in ??? () at /usr/lib/x86_64-linux-gnu/libQt6Quick.so.6
--Type <RET> for more, q to quit, c to continue without paging--c
#36 0x00007f3f540ff501 in QQuickWindow::event(QEvent*) ()
    at /usr/lib/x86_64-linux-gnu/libQt6Quick.so.6
#37 0x00007f3f525a6fdf in QApplicationPrivate::notify_helper(QObject*, QEvent*) ()
    at /usr/lib/x86_64-linux-gnu/libQt6Widgets.so.6
#38 0x00007f3f509adde8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) ()
    at /usr/lib/x86_64-linux-gnu/libQt6Core.so.6
#39 0x00007f3f51a53045 in QPlatformWindow::deliverUpdateRequest() ()
    at /usr/lib/x86_64-linux-gnu/libQt6Gui.so.6
#40 0x00007f3f50a0afbc in QObject::event(QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt6Core.so.6
#41 0x00007f3f525a6fdf in QApplicationPrivate::notify_helper(QObject*, QEvent*) ()
    at /usr/lib/x86_64-linux-gnu/libQt6Widgets.so.6
#42 0x00007f3f509adde8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) ()
    at /usr/lib/x86_64-linux-gnu/libQt6Core.so.6
#43 0x00007f3f509b19d9 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*)
    () at /usr/lib/x86_64-linux-gnu/libQt6Core.so.6
#44 0x00007f3f50ce70ef in ??? () at /usr/lib/x86_64-linux-gnu/libQt6Core.so.6
#45 0x00007f3f5070e18e in g_main_dispatch () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#46 0x00007f3f5070f1bf in g_main_context_iterate_unlocked.isra ()
    at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#47 0x00007f3f5070f323 in g_main_context_iteration ()
    at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#48 0x00007f3f50ce692d in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/x86_64-linux-gnu/libQt6Core.so.6
#49 0x00007f3f509bade3 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) ()
    at /usr/lib/x86_64-linux-gnu/libQt6Core.so.6
#50 0x00007f3f509b66a9 in QCoreApplication::exec() () at /usr/lib/x86_64-linux-gnu/libQt6Core.so.6
#51 0x000055b7c573a117 in ??? ()
#52 0x00007f3f5022c975 in __libc_start_call_main () at /usr/lib/x86_64-linux-gnu/libc.so.6
#53 0x00007f3f5022ca28 in __libc_start_main () at /usr/lib/x86_64-linux-gnu/libc.so.6
#54 0x000055b7c588bda5 in ??? ()


EXPECTED RESULT
App does not freeze
Comment 1 Tobias Fella 2026-02-16 21:34:26 UTC
I'm trying to understand this; disabling link previews should work around it for now.
Comment 2 Tobias Fella 2026-02-16 21:34:57 UTC
*** Bug 516120 has been marked as a duplicate of this bug. ***