SUMMARY If I use the Ctrl + [mouse wheel] to zoom out of a document beyond ~7%, then the application freezes and does not appear to recover, but it does not crash. STEPS TO REPRODUCE 1. Open a new instance of Kate 2. Select 'New File' 3. Enter some content for the file, such as 'asd' 4. Use [Ctrl] + [Mouse wheel] to zoom out as much as possible OBSERVED RESULT The application freezes once the zoom level gets below ~7%, and does not appear to recover. EXPECTED RESULT The application should not freeze. SOFTWARE/OS VERSIONS Operating System: CachyOS Linux KDE Plasma Version: 6.3.1 KDE Frameworks Version: 6.11.0 Qt Version: 6.8.2 ADDITIONAL INFORMATION This only seems to occur if the editor has content, if I try this with an empty editor it appears to freeze temporarily the very first time zoom gets below a certain level, recover after a few seconds, and not exhibit any freezing behaviour on zoom level change again until content is added (at which point the main freeze issue kicks in when zooming out). Nothing was noted in the system log when this freezing occurs.
can't reproduce locally, zoom doesn't go beyond 9% here Can you try to break using gdb to see where its getting stuck? first install gdb, then: $ gdb kate -b once kate shows up, make it freeze, then return to the terminal and hit Ctrl-C. $ Ctrl-C $ bt paste the backtrace (output from the last command)
(In reply to Waqar Ahmed from comment #1) > can't reproduce locally, zoom doesn't go beyond 9% here > > Can you try to break using gdb to see where its getting stuck? > > first install gdb, then: > $ gdb kate -b > once kate shows up, make it freeze, then return to the terminal and hit > Ctrl-C. > $ Ctrl-C > $ bt > > paste the backtrace (output from the last command) Hi Waqar, I didn't have any luck with 'gdb' on 'kate', it seemed to branch off and not follow the newly created thread, even with 'set detach-on-fork off' set. '-b' seems to relate to a serial baud rate setting, I'm not sure whether there's parameter mismatch on different versions or something similar. I had some luck with 'gdb kwrite' however, which - in my testing - suffers from the same issue. I've included the 'bt' output from 'gdb kwrite' below. #0 0x00007ffff6e76667 in QFontDatabasePrivate::match(int, QFontDef const&, QString const&, QString const&, QtFontDesc*, QList<int> const&, unsigned int*) () from /usr/lib/libQt6Gui.so.6 #1 0x00007ffff6e85d1b in QFontDatabasePrivate::findFont(QFontDef const&, int, bool) () from /usr/lib/libQt6Gui.so.6 #2 0x00007ffff6e92d6c in QFontEngineMulti::loadEngine(int) () from /usr/lib/libQt6Gui.so.6 #3 0x00007ffff6e8ee2e in QFontEngineMulti::ensureEngineAt(int) () from /usr/lib/libQt6Gui.so.6 #4 0x00007ffff6e8f37a in QFontEngineMulti::stringToCMap(QChar const*, int, QGlyphLayout*, int*, QFlags<QFontEngine::ShaperFlag>) const () from /usr/lib/libQt6Gui.so.6 #5 0x00007ffff6f262e5 in QTextEngine::shapeText(int) const () from /usr/lib/libQt6Gui.so.6 #6 0x00007ffff6f4d7f6 in QTextLine::layout_helper(int) () from /usr/lib/libQt6Gui.so.6 #7 0x00007ffff5b7e33a in ?? () from /usr/lib/libKF6TextEditor.so.6 #8 0x00007ffff5d1d1ed in ?? () from /usr/lib/libKF6TextEditor.so.6 #9 0x00007ffff5b7f7df in ?? () from /usr/lib/libKF6TextEditor.so.6 #10 0x00007ffff5bfe2be in ?? () from /usr/lib/libKF6TextEditor.so.6 #11 0x00007ffff5bd50b4 in KTextEditor::ViewPrivate::updateRendererConfig() () from /usr/lib/libKF6TextEditor.so.6 #12 0x00007ffff5b6be4c in ?? () from /usr/lib/libKF6TextEditor.so.6 #13 0x00007ffff5c0a28c in ?? () from /usr/lib/libKF6TextEditor.so.6 #14 0x00007ffff7551908 in QWidget::event(QEvent*) () from /usr/lib/libQt6Widgets.so.6 #15 0x00007ffff74ff5b7 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQt6Widgets.so.6 #16 0x00007ffff7505725 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQt6Widgets.so.6 #17 0x00007ffff635fbd8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/libQt6Core.so.6 #18 0x00007ffff756c82e in ?? () from /usr/lib/libQt6Widgets.so.6 #19 0x00007ffff74ff5b7 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQt6Widgets.so.6 #20 0x00007ffff635fbd8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/libQt6Core.so.6 #21 0x00007ffff6b941a3 in QGuiApplicationPrivate::processWheelEvent(QWindowSystemInterfacePrivate::WheelEvent*) () from /usr/lib/libQt6Gui.so.6 #22 0x00007ffff6c0bc3b in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt6Gui.so.6 #23 0x00007ffff7101d14 in ?? () from /usr/lib/libQt6Gui.so.6 #24 0x00007ffff4b96c17 in ?? () from /usr/lib/libglib-2.0.so.0 #25 0x00007ffff4c0c698 in ?? () from /usr/lib/libglib-2.0.so.0 #26 0x00007ffff4b98892 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0 #27 0x00007ffff65e6ccb in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt6Core.so.6 #28 0x00007ffff636a976 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt6Core.so.6 #29 0x00007ffff6362b7c in QCoreApplication::exec() () from /usr/lib/libQt6Core.so.6 #30 0x0000555555556da4 in ?? () #31 0x00007ffff603388e in ?? () from /usr/lib/libc.so.6 #32 0x00007ffff603394a in __libc_start_main () from /usr/lib/libc.so.6 #33 0x0000555555556de5 in ?? () -- On a sidenote, I tried turning down the sensitivity of the scroll wheel and I'm able to get to 3-4% reliably before it freezes, so if there's supposed to be some kind of limit on the zoom level above 4%, it doesn't appear to be kicking in for me.
> I didn't have any luck with 'gdb' on 'kate', it seemed to branch off Yeah. Sorry about that. Kwrite backtrace is good enough. For completeness, the command should have been: $ gdb --args kate -b Can you run it again and additionally set the following env var before running gdb so that debug info can be downloaded: export DEBUGINFOD_URLS=https://debuginfod.archlinux.org The url might be different for your distro.
No problem, and thanks for being so patient. I'm a little green on the Linux desktop side, so keen to learn new things about it. I set the export as you suggested, ran gdb against kate (with --args), and the backtrace output appears to me the same as with kwrite. I wasn't sure if debuginfod was working, so I cleared its cache and restarted gdb, it downloaded some debug info and returned the same result, so ... I suspect it's working, to some extent. I've included the kate backtrace below just in case it contains something useful. -- #0 0x00007ffff6e76667 in QFontDatabasePrivate::match(int, QFontDef const&, QString const&, QString const&, QtFontDesc*, QList<int> const&, unsigned int*) () from /usr/lib/libQt6Gui.so.6 #1 0x00007ffff6e85d1b in QFontDatabasePrivate::findFont(QFontDef const&, int, bool) () from /usr/lib/libQt6Gui.so.6 #2 0x00007ffff6e92d6c in QFontEngineMulti::loadEngine(int) () from /usr/lib/libQt6Gui.so.6 #3 0x00007ffff6e8ee2e in QFontEngineMulti::ensureEngineAt(int) () from /usr/lib/libQt6Gui.so.6 #4 0x00007ffff6e8f37a in QFontEngineMulti::stringToCMap(QChar const*, int, QGlyphLayout*, int*, QFlags<QFontEngine::ShaperFlag>) const () from /usr/lib/libQt6Gui.so.6 #5 0x00007ffff6f262e5 in QTextEngine::shapeText(int) const () from /usr/lib/libQt6Gui.so.6 #6 0x00007ffff6f4d7f6 in QTextLine::layout_helper(int) () from /usr/lib/libQt6Gui.so.6 #7 0x00007ffff577e33a in ?? () from /usr/lib/libKF6TextEditor.so.6 #8 0x00007ffff591d1ed in ?? () from /usr/lib/libKF6TextEditor.so.6 #9 0x00007ffff577f7df in ?? () from /usr/lib/libKF6TextEditor.so.6 #10 0x00007ffff57fe2be in ?? () from /usr/lib/libKF6TextEditor.so.6 #11 0x00007ffff57d50b4 in KTextEditor::ViewPrivate::updateRendererConfig() () from /usr/lib/libKF6TextEditor.so.6 #12 0x00007ffff576be4c in ?? () from /usr/lib/libKF6TextEditor.so.6 #13 0x00007ffff580a28c in ?? () from /usr/lib/libKF6TextEditor.so.6 #14 0x00007ffff7551908 in QWidget::event(QEvent*) () from /usr/lib/libQt6Widgets.so.6 #15 0x00007ffff74ff5b7 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQt6Widgets.so.6 #16 0x00007ffff7505725 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQt6Widgets.so.6 #17 0x00007ffff635fbd8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/libQt6Core.so.6 #18 0x00007ffff756c82e in ?? () from /usr/lib/libQt6Widgets.so.6 #19 0x00007ffff74ff5b7 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQt6Widgets.so.6 #20 0x00007ffff635fbd8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/libQt6Core.so.6 #21 0x00007ffff6b941a3 in QGuiApplicationPrivate::processWheelEvent(QWindowSystemInterfacePrivate::WheelEvent*) () from /usr/lib/libQt6Gui.so.6 #22 0x00007ffff6c0bc3b in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt6Gui.so.6 #23 0x00007ffff7101d14 in ?? () from /usr/lib/libQt6Gui.so.6 #24 0x00007ffff4bbfc17 in ?? () from /usr/lib/libglib-2.0.so.0 #25 0x00007ffff4c35698 in ?? () from /usr/lib/libglib-2.0.so.0 #26 0x00007ffff4bc1892 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0 #27 0x00007ffff65e6ccb in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt6Core.so.6 #28 0x00007ffff636a976 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt6Core.so.6 #29 0x00007ffff6362b7c in QCoreApplication::exec() () from /usr/lib/libQt6Core.so.6 #30 0x000055555555a788 in ?? () #31 0x00007ffff5c3388e in ?? () from /usr/lib/libc.so.6 #32 0x00007ffff5c3394a in __libc_start_main () from /usr/lib/libc.so.6 #33 0x000055555555d5e5 in ?? ()
🐛🧹 ⚠️ This bug has been in NEEDSINFO status with no change for at least 15 days. Please provide the requested information, then set the bug status to REPORTED. If there is no change for at least 30 days, it will be automatically closed as RESOLVED WORKSFORME. For more information about our bug triaging procedures, please read https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging. Thank you for helping us make KDE software even better for everyone!
This seems like a Qt bug to me: #0 0x00007ffff6e76667 in QFontDatabasePrivate::match(int, QFontDef const&, QString const&, QString const&, QtFontDesc*, QList<int> const&, unsigned int*) () from /usr/lib/libQt6Gui.so.6
A possibly relevant merge request was started @ https://invent.kde.org/frameworks/ktexteditor/-/merge_requests/796
Git commit b694dee0be5151302cdfac788c57720be5bf94cf by Christoph Cullmann. Committed on 14/03/2025 at 18:37. Pushed by cullmann into branch 'master'. ensure we don't run into corner cases in Qt for font sizes M +6 -12 src/render/katerenderer.cpp M +1 -2 src/render/katerenderer.h M +2 -2 src/view/kateviewinternal.cpp https://invent.kde.org/frameworks/ktexteditor/-/commit/b694dee0be5151302cdfac788c57720be5bf94cf