#0 0x0000703395ea149c in ?? () from /usr/lib/libc.so.6 #1 0x0000703395e51958 in raise () from /usr/lib/libc.so.6 #2 0x00007033996b7af5 in KCrash::defaultCrashHandler (sig=11) at /home/eric/kde/src/kcrash/src/kcrash.cpp:633 #3 <signal handler called> #4 0x0000703396c31b26 in QTextBlock::setUserData(QTextBlockUserData*) () from /usr/lib/libQt5Gui.so.5 #5 0x000070339957e09d in DiffSyntaxHighlighter::highlightBlock (this=0x623870e46aa0, text="@@ 1692,7 public:") at /home/eric/kde/src/kate/apps/lib/diff/diffeditor.cpp:46 #6 0x0000703396c974d7 in ?? () from /usr/lib/libQt5Gui.so.5 #7 0x0000703396c98532 in QSyntaxHighlighter::rehighlight() () from /usr/lib/libQt5Gui.so.5 #8 0x000070339806f7a3 in KSyntaxHighlighting::SyntaxHighlighter::setDefinition (this=0x623870e46aa0, def=...) at /home/eric/kde/src/syntax-highlighting/src/lib/syntaxhighlighter.cpp:74 #9 0x0000703399570ffd in DiffWidget::parseAndShowDiff (this=0x62386fc41880, raw="diff --git a/addons/lspclient/lspclientpluginview.cpp b/addons/lspclient/lspclientpluginview.cpp\nindex fadd869f3..4425c162f 100644\n--- a/addons/lspclient/lspclientpluginview.cpp\n+++ b/addons/lspclient"... = {...}) at /home/eric/kde/src/kate/apps/lib/diff/diffwidget.cpp:599 #10 0x000070339956dd6c in DiffWidget::openDiff (this=0x62386fc41880, raw="diff --git a/addons/lspclient/lspclientpluginview.cpp b/addons/lspclient/lspclientpluginview.cpp\nindex fadd869f3..4425c162f 100644\n--- a/addons/lspclient/lspclientpluginview.cpp\n+++ b/addons/lspclient"... = {...}) at /home/eric/kde/src/kate/apps/lib/diff/diffwidget.cpp:771 #11 0x00007033994dfe30 in KateMainWindow::showDiff (this=0x62386f8adec0, wordDiff="diff --git a/addons/lspclient/lspclientpluginview.cpp b/addons/lspclient/lspclientpluginview.cpp\nindex fadd869f3..4425c162f 100644\n--- a/addons/lspclient/lspclientpluginview.cpp\n+++ b/addons/lspclient"... = {...}, params=...) at /home/eric/kde/src/kate/apps/lib/katemainwindow.cpp:1356 #12 0x000070339956b9b5 in Utils::showDiff ( diff="diff --git a/addons/lspclient/lspclientpluginview.cpp b/addons/lspclient/lspclientpluginview.cpp\nindex fadd869f3..4425c162f 100644\n--- a/addons/lspclient/lspclientpluginview.cpp\n+++ b/addons/lspclient"... = {...}, params=..., mainWindow=0x62386f8a8b50) at /home/eric/kde/src/kate/apps/lib/ktexteditor_utils.cpp:164 #13 0x0000703368393b17 in GitWidget::showDiff(QString const&, bool)::$_59::operator()(int, QProcess::ExitStatus) const (this=0x62386fc41740, exitCode=0, es=QProcess::NormalExit) at /home/eric/kde/src/kate/addons/project/gitwidget.cpp:653 #14 0x0000703368393876 in QtPrivate::FunctorCall<QtPrivate::IndexesList<0, 1>, QtPrivate::List<int, QProcess::ExitStatus>, void, GitWidget::showDiff(QString const&, bool)::$_59>::call(GitWidget::showDiff(QString const&, bool)::$_59&, void**) (f=..., arg=0x7ffe28d0df00) at /usr/include/qt/QtCore/qobjectdefs_impl.h:146 #15 0x0000703368393831 in QtPrivate::Functor<GitWidget::showDiff(QString const&, bool)::$_59, 2>::call<QtPrivate::List<int, QProcess::ExitStatus>, void>(GitWidget::showDiff(QString const&, bool)::$_59&, void*, void**) (f=..., arg=0x7ffe28d0df00) at /usr/include/qt/QtCore/qobjectdefs_impl.h:256 #16 0x00007033683937c1 in QtPrivate::QFunctorSlotObject<GitWidget::showDiff(QString const&, bool)::$_59, 2, QtPrivate::List<int, QProcess::ExitStatus>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (which=1, this_=0x62386fc41730, r=0x62386fc22970, a=0x7ffe28d0df00, ret=0x0) at /usr/include/qt/QtCore/qobjectdefs_impl.h:443 #17 0x00007033966bd381 in ?? () from /usr/lib/libQt5Core.so.5 #18 0x000070339661810d in QProcess::finished(int, QProcess::ExitStatus) () from /usr/lib/libQt5Core.so.5 #19 0x0000703396614912 in ?? () from /usr/lib/libQt5Core.so.5 #20 0x000070339661899e in ?? () from /usr/lib/libQt5Core.so.5 #21 0x00007033966bd530 in ?? () from /usr/lib/libQt5Core.so.5 #22 0x00007033966bf234 in QSocketNotifier::activated(QSocketDescriptor, QSocketNotifier::Type, QSocketNotifier::QPrivateSignal) () from /usr/lib/libQt5Core.so.5 #23 0x00007033966bf378 in QSocketNotifier::event(QEvent*) () from /usr/lib/libQt5Core.so.5 #24 0x0000703397378b1c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5 #25 0x000070339668cb88 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/libQt5Core.so.5 #26 0x00007033966d6366 in ?? () from /usr/lib/libQt5Core.so.5 #27 0x000070339491ab2b in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0 #28 0x0000703394970e79 in ?? () from /usr/lib/libglib-2.0.so.0 #29 0x0000703394918252 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0 #30 0x00007033966d750c in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5 STEPS TO REPRODUCE 1. I think this crash happened when opening a diff view 2. So far only happened once and I have been using the new view extensively in the last days :) OBSERVED RESULT EXPECTED RESULT SOFTWARE/OS VERSIONS Windows: macOS: Linux/KDE Plasma: (available in About System) KDE Plasma Version: KDE Frameworks Version: Qt Version: ADDITIONAL INFORMATION
Git commit 20c8b60eaab7d666eb079363111a93f0c252ff1c by Christoph Cullmann. Committed on 22/09/2022 at 19:09. Pushed by cullmann into branch 'master'. avoid to use previous block that is not there same logic as in the KSyntaxHighting highligher M +2 -1 apps/lib/diff/diffeditor.cpp https://invent.kde.org/utilities/kate/commit/20c8b60eaab7d666eb079363111a93f0c252ff1c
Can't reproduce, but perhaps my change helps.
My fix was not sufficient, but I missed to get a backtrace for my crash today.
You can still retrieve it using the Crashed Process Viewer (or coredumpctl list + debug), but I guess it's on your work machine.
Good hint! But just the same backtrace: But ok, I see.... Program terminated with signal SIGSEGV, Segmentation fault. #0 0x00007f7cfe89ffa8 in QTextBlock::setUserData(QTextBlockUserData*) () from /nix/store/634m9rf1xclq7vdcpgqfqaiahgwdjkfy-qtbase-5.15.5/lib/libQt5Gui.so.5 [Current thread is 1 (Thread 0x7f7cf9d5b8c0 (LWP 341887))] (gdb) bt #0 0x00007f7cfe89ffa8 in QTextBlock::setUserData(QTextBlockUserData*) () from /nix/store/634m9rf1xclq7vdcpgqfqaiahgwdjkfy-qtbase-5.15.5/lib/libQt5Gui.so.5 #1 0x00007f7d009466c9 in DiffSyntaxHighlighter::highlightBlock (this=0x5a11ad0, text=...) at /home/cullmann/projects/kde/src/kate/apps/lib/diff/diffeditor.cpp:47 #2 0x00007f7cfe905544 in ?? () from /nix/store/634m9rf1xclq7vdcpgqfqaiahgwdjkfy-qtbase-5.15.5/lib/libQt5Gui.so.5 #3 0x00007f7cfe9056f7 in ?? () from /nix/store/634m9rf1xclq7vdcpgqfqaiahgwdjkfy-qtbase-5.15.5/lib/libQt5Gui.so.5 #4 0x00007f7cfe905aa9 in QSyntaxHighlighter::rehighlight() () from /nix/store/634m9rf1xclq7vdcpgqfqaiahgwdjkfy-qtbase-5.15.5/lib/libQt5Gui.so.5 #5 0x00007f7d0093e096 in DiffWidget::parseAndShowDiff (this=0x5a34110, raw=...) at /home/cullmann/projects/kde/src/kate/apps/lib/diff/diffwidget.cpp:599 #6 0x00007f7d00940b15 in DiffWidget::openDiff (this=0x5a34110, raw=...) at /home/cullmann/projects/kde/src/kate/apps/lib/diff/diffwidget.cpp:771 #7 0x00007f7d008ec7d1 in KateMainWindow::showDiff (this=<optimized out>, wordDiff=..., params=...) at /home/cullmann/projects/kde/src/kate/apps/lib/katemainwindow.cpp:1356 #8 0x00007f7d0093873e in Utils::showDiff (diff=..., params=..., mainWindow=<optimized out>) at /home/cullmann/projects/kde/src/kate/apps/lib/ktexteditor_utils.cpp:164 #9 0x00007f7ce98b580d in operator() (es=<optimized out>, exitCode=<optimized out>, __closure=0x5a470f0) at /home/cullmann/projects/kde/src/kate/addons/project/gitwidget.cpp:653 #10 QtPrivate::FunctorCall<QtPrivate::IndexesList<0, 1>, QtPrivate::List<int, QProcess::ExitStatus>, void, GitWidget::showDiff(const QString&, bool)::<lambda(int, QProcess::ExitStatus)> >::call ( arg=<optimized out>, f=...) at /nix/store/hxwyg9v3xhxr8xvrgmd7na58xsh3q5ix-qtbase-5.15.5-dev/include/QtCore/qobjectdefs_impl.h:146 #11 QtPrivate::Functor<GitWidget::showDiff(const QString&, bool)::<lambda(int, QProcess::ExitStatus)>, 2>::call<QtPrivate::List<int, QProcess::ExitStatus>, void> (arg=<optimized out>, f=...) at /nix/store/hxwyg9v3xhxr8xvrgmd7na58xsh3q5ix-qtbase-5.15.5-dev/include/QtCore/qobjectdefs_impl.h:256 #12 QtPrivate::QFunctorSlotObject<GitWidget::showDiff(const QString&, bool)::<lambda(int, QProcess::ExitStatus)>, 2, QtPrivate::List<int, QProcess::ExitStatus>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) (which=<optimized out>, this_=0x5a470e0, r=<optimized out>, a=<optimized out>, ret=<optimized out>) at /nix/store/hxwyg9v3xhxr8xvrgmd7na58xsh3q5ix-qtbase-5.15.5-dev/include/QtCore/qobjectdefs_impl.h:443 #13 0x00007f7cfe200f73 in ?? () from /nix/store/634m9rf1xclq7vdcpgqfqaiahgwdjkfy-qtbase-5.15.5/lib/libQt5Core.so.5 #14 0x00007f7cfe135248 in QProcess::finished(int, QProcess::ExitStatus) () from /nix/store/634m9rf1xclq7vdcpgqfqaiahgwdjkfy-qtbase-5.15.5/lib/libQt5Core.so.5 #15 0x00007f7cfe13acb3 in ?? () from /nix/store/634m9rf1xclq7vdcpgqfqaiahgwdjkfy-qtbase-5.15.5/lib/libQt5Core.so.5 #16 0x00007f7cfe13adde in ?? () from /nix/store/634m9rf1xclq7vdcpgqfqaiahgwdjkfy-qtbase-5.15.5/lib/libQt5Core.so.5 #17 0x00007f7cfe200fa8 in ?? () from /nix/store/634m9rf1xclq7vdcpgqfqaiahgwdjkfy-qtbase-5.15.5/lib/libQt5Core.so.5 #18 0x00007f7cfe20434f in QSocketNotifier::activated(QSocketDescriptor, QSocketNotifier::Type, QSocketNotifier::QPrivateSignal) ()
Git commit c277ed7d96facba3a58e797023ab613e564d8f3a by Christoph Cullmann. Committed on 23/09/2022 at 20:35. Pushed by cullmann into branch 'master'. avoid double delete M +2 -4 apps/lib/diff/diffeditor.cpp https://invent.kde.org/utilities/kate/commit/c277ed7d96facba3a58e797023ab613e564d8f3a
void QTextBlock::setUserData(QTextBlockUserData *data) { if (!p || !n) return; const QTextBlockData *b = p->blockMap().fragment(n); if (data != b->userData) delete b->userData; b->userData = data; } => we did a double delete