https://bugs.kde.org/show_bug.cgi?id=524843
findhhq <[email protected]> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |[email protected] --- Comment #2 from findhhq <[email protected]> --- I can reproduce this deterministically on the *stable* release (not only git master). STEPS TO REPRODUCE 1. System Settings → Fonts → set the General font to "Noto Sans 12pt" or larger (11pt and below work fine). 2. Launch plasma-discover (default view, i.e. the Explore page). 3. Within 15–20 seconds the window freezes; the main thread is pinned at 100% CPU. It never recovers. ADDITIONAL OBSERVATIONS - Reproduces on every launch, not only on resize. Possibly the same root cause as bug 521665 (freeze reported there on resize with a Chinese locale; my system is also zh_CN.UTF-8). - Independent of pending updates: I had zero pending updates when it froze. - Independent of the Flatpak backend: still freezes with `plasma-discover --backends packagekit`. - `plasma-discover --mode update` and `--mode installed` stay responsive; only the default (Explore) view triggers the loop. - Font size threshold on my system: 10pt and 11pt → fine; 12pt, 13pt, 14pt → freeze. Screen scaling is 1 (no fractional scaling). ENVIRONMENT - Fedora 44 - plasma-discover 6.7.4 (rpm: plasma-discover-6.7.4-1.fc44) - Qt 6.11.1 (qt6-qtbase-6.11.1-1.fc44, qt6-qtdeclarative-6.11.1-3.fc44) - Plasma 6.7.4, Wayland session, locale zh_CN.UTF-8 - General font: Noto Sans (14pt when frozen) ANALYSIS The Qt main thread spins forever in a QML layout ↔ text-relayout cycle. All other threads are idle. Three gdb samples of thread 1, taken seconds apart while frozen: Sample 1: #0 QRecursiveMutex::tryLock(QDeadlineTimer) (Qt6Core) #1 QFontPrivate::engineForScript(int) const (Qt6Gui) #2 QTextEngine::fontEngine(QScriptItem const&, QFixed*, QFixed*, QFixed*) const #3 QTextEngine::shapeText(int) const #4 QTextLine::layout_helper(int) #5 QQuickTextPrivate::setLineGeometry(QTextLine&, double, double&) #6 QQuickTextPrivate::setupTextLayout(double*) #7 QQuickTextPrivate::updateSize() #8 QQuickText::geometryChange(QRectF const&, QRectF const&) #9 QQuickLabel::geometryChange(QRectF const&, QRectF const&) (Qt6QuickTemplates2) #10 QQuickItem::setSize(QSizeF const&) #11 QQuickGridLayoutItem::setGeometry(QRectF const&) (Qt6QuickLayouts) #12 QGridLayoutEngine::setGeometries(QRectF const&, QAbstractLayoutStyleInfo const*) #13 QQuickGridLayoutBase::rearrange(QSizeF const&) #14 QQuickLayout::geometryChange(QRectF const&, QRectF const&) #15 QQuickItem::setPosition(QPointF const&) #16 QQuickGridLayoutItem::setGeometry(QRectF const&) #17 QGridLayoutEngine::setGeometries(QRectF const&, QAbstractLayoutStyleInfo const*) #18 QQuickGridLayoutBase::rearrange(QSizeF const&) Sample 2 (3 seconds later, same cycle seen from the binding side): #0 QMetaObject::activate(QObject*, QMetaObject const*, int, void**) #1 QQuickFlickable::setContentHeight(double) #2 GenericBinding<6>::write(QV4::Value const&, bool, QFlags<QQmlPropertyData::WriteFlag>) #3 QQmlBinding::doUpdate(...) #4 QQmlBinding::update(...) #5 QQmlNotifier::emitNotify(QQmlNotifierEndpoint*, void**) #6 doActivate<false>(QObject*, int, void**) #7 QQuickItem::setImplicitHeight(double) #8 GenericBinding<6>::write(...) #9 QQmlBinding::doUpdate(...) Sample 3 (again, seconds later): #0 QChar::direction(char32_t) #1 QTextEngine::itemize() const #2 QTextLayout::beginLayout() So a GridLayout item's geometry change resizes a Label, whose text layout changes its implicit size, which triggers another GridLayout pass — endlessly, on the GUI thread. Happy to provide more samples or test patches if useful. -- You are receiving this mail because: You are watching all bug changes.
