SUMMARY KAlarm crash when trying to create a display alarm. I suspect this has something to do with spell checking enabled because - It doesn't happen if the display alarm message is empty - A few months ago I also report a bug with Okular keep crashing when trying to save a note, which turned out to be caused by spell checking enabled. I have included the backtrace with debug symbols below. STEPS TO REPRODUCE 1. Launch KAlarm 2. Create a new Display Alarm 3. Make sure to write something for the display alarm message 4. Save OBSERVED RESULT KAlarm immediately crash. KAlarm does successfully save the new display alarm, as evident by the fact that when relaunching KAlarm the newly created display alarm is there. EXPECTED RESULT KAlarm successfully save the new alarm and didn't crash SOFTWARE/OS VERSIONS Linux/KDE Plasma: (available in About System) KDE Plasma Version: 6.0.5 KDE Frameworks Version: 6.2.0 Qt Version: 6.7.0 ADDITIONAL INFORMATION KDE Neon 6.0 Graphics Platform: Wayland BACKTRACE WITH DEBUG SYMBOLS Application: KAlarm (kalarm), signal: Aborted [KCrash Handler] #4 __pthread_kill_implementation (no_tid=0, signo=6, threadid=124025212784576) at ./nptl/pthread_kill.c:44 #5 __pthread_kill_internal (signo=6, threadid=124025212784576) at ./nptl/pthread_kill.c:78 #6 __GI___pthread_kill (threadid=124025212784576, signo=signo@entry=6) at ./nptl/pthread_kill.c:89 #7 0x000070cce4a42476 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26 #8 0x000070cce4a287f3 in __GI_abort () at ./stdlib/abort.c:79 #9 0x000070cce56fdb6e in qAbort () at ./src/corelib/global/qglobal.cpp:161 #10 0x000070cce56f820a in qt_message_fatal<QString&> (message=..., context=...) at ./src/corelib/global/qlogging.cpp:2025 #11 qt_message(QtMsgType, const QMessageLogContext &, const char *, typedef __va_list_tag __va_list_tag *) (msgType=msgType@entry=QtFatalMsg, context=..., msg=<optimized out>, ap=ap@entry=0x7ffdd2ab6d10) at ./src/corelib/global/qlogging.cpp:374 #12 0x000070cce56fe511 in QMessageLogger::fatal (this=<optimized out>, msg=<optimized out>) at ./src/corelib/global/qlogging.cpp:889 #13 0x000070cce56c2b22 in qt_assert_x (where=<optimized out>, what=what@entry=0x645204636048 "Called object is not of the correct type (class destructor may have already run)", file=file@entry=0x645204636008 "/usr/include/x86_64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h", line=line@entry=129) at ./src/corelib/global/qassert.cpp:77 #14 0x000064520452094d in QtPrivate::assertObjectType<EditAlarmDlg> (o=<optimized out>) at /usr/include/x86_64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:129 #15 0x0000645204520be6 in QtPrivate::assertObjectType<EditAlarmDlg> (o=0x64520731f1c0) at /usr/include/x86_64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:559 #16 QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, void (EditAlarmDlg::*)()>::call(void (EditAlarmDlg::*)(), EditAlarmDlg*, void**) (arg=<optimized out>, o=0x64520731f1c0, f=(void (EditAlarmDlg::*)(EditAlarmDlg * const)) 0x64520451f5e0 <EditAlarmDlg::contentsChanged()>) at /usr/include/x86_64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:144 #17 QtPrivate::FunctionPointer<void (EditAlarmDlg::*)()>::call<QtPrivate::List<>, void>(void (EditAlarmDlg::*)(), EditAlarmDlg*, void**) (arg=<optimized out>, o=0x64520731f1c0, f=(void (EditAlarmDlg::*)(EditAlarmDlg * const)) 0x64520451f5e0 <EditAlarmDlg::contentsChanged()>) at /usr/include/x86_64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:182 #18 QtPrivate::QCallableObject<void (EditAlarmDlg::*)(), QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (which=<optimized out>, this_=<optimized out>, r=0x64520731f1c0, a=<optimized out>, ret=<optimized out>) at /usr/include/x86_64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:553 #19 0x000070cce566355e in QtPrivate::QSlotObjectBase::call (a=<optimized out>, r=<optimized out>, this=<optimized out>, this=<optimized out>, r=<optimized out>, a=<optimized out>) at ./src/corelib/kernel/qobjectdefs_impl.h:469 #20 doActivate<false> (sender=0x6452073364b0, signal_index=7, argv=0x7ffdd2ab6ed8) at ./src/corelib/kernel/qobject.cpp:4078 #21 0x000070cce566355e in QtPrivate::QSlotObjectBase::call (a=<optimized out>, r=<optimized out>, this=<optimized out>, this=<optimized out>, r=<optimized out>, a=<optimized out>) at ./src/corelib/kernel/qobjectdefs_impl.h:469 #22 doActivate<false> (sender=0x645206d6d450, signal_index=3, argv=0x7ffdd2ab6fa8) at ./src/corelib/kernel/qobject.cpp:4078 #23 0x000070cce681f7e8 in QWidgetTextControl::qt_metacall (this=0x645206d6d450, _c=QMetaObject::InvokeMetaMethod, _id=0, _a=0x7ffdd2ab70a8) at ./obj-x86_64-linux-gnu/src/widgets/Widgets_autogen/include/moc_qwidgettextcontrol_p.cpp:552 #24 0x000070cce5663648 in doActivate<false> (sender=0x645206d6d470, signal_index=4, argv=0x7ffdd2ab70a8) at ./src/corelib/kernel/qobject.cpp:4104 #25 0x000070cce5d4e0cc in QTextDocumentPrivate::finishEdit (this=0x645207235230) at ./src/gui/text/qtextdocument_p.cpp:1218 #26 0x000070cce5d2d881 in QSyntaxHighlighter::setDocument (this=this@entry=0x645207313120, doc=doc@entry=0x0) at ./src/gui/text/qsyntaxhighlighter.cpp:302 #27 0x000070cce5d2dcdd in QSyntaxHighlighter::~QSyntaxHighlighter (this=<optimized out>, this=<optimized out>) at ./src/gui/text/qsyntaxhighlighter.cpp:284 #28 0x000070cce6b94fdd in Sonnet::Highlighter::~Highlighter (this=<optimized out>, this=<optimized out>) at ./src/ui/highlighter.cpp:168 #29 0x000070cce55f8b1a in QObjectPrivate::deleteChildren (this=this@entry=0x645206d28540) at ./src/corelib/kernel/qobject.cpp:2216 #30 0x000070cce55ff9e8 in QObject::~QObject (this=<optimized out>, this=<optimized out>) at ./src/corelib/kernel/qobject.cpp:1168 #31 0x000070cce6b954d3 in Sonnet::SpellCheckDecorator::~SpellCheckDecorator (this=<optimized out>, this=<optimized out>) at ./src/ui/spellcheckdecorator.cpp:234 #32 0x000070cce7cd6667 in KTextDecorator::~KTextDecorator (this=<optimized out>, this=<optimized out>) at ./src/widgets/ktextedit.cpp:32 #33 KTextDecorator::~KTextDecorator (this=<optimized out>, this=<optimized out>) at ./src/widgets/ktextedit.cpp:32 #34 0x000070cce7ccd8f6 in KTextEditPrivate::~KTextEditPrivate (this=<optimized out>, this=<optimized out>) at ./src/widgets/ktextedit_p.h:47 #35 0x000070cce7ccda2d in KTextEditPrivate::~KTextEditPrivate (this=<optimized out>, this=<optimized out>) at ./src/widgets/ktextedit_p.h:56 #36 0x000070cce7cd586f in std::default_delete<KTextEditPrivate>::operator() (__ptr=<optimized out>, this=<optimized out>) at /usr/include/c++/11/bits/unique_ptr.h:85 #37 std::unique_ptr<KTextEditPrivate, std::default_delete<KTextEditPrivate> >::~unique_ptr (this=<optimized out>, this=<optimized out>) at /usr/include/c++/11/bits/unique_ptr.h:361 #38 KTextEdit::~KTextEdit (this=<optimized out>, this=<optimized out>) at ./src/widgets/ktextedit.cpp:258 #39 0x0000645204520801 in TextEdit::~TextEdit (this=<optimized out>, this=<optimized out>) at ./src/editdlg_p.h:32 #40 TextEdit::~TextEdit (this=<optimized out>, this=<optimized out>) at ./src/editdlg_p.h:32 #41 0x000070cce55f8b1a in QObjectPrivate::deleteChildren (this=this@entry=0x645206707290) at ./src/corelib/kernel/qobject.cpp:2216 #42 0x000070cce6a31cd8 in QWidget::~QWidget (this=<optimized out>, this=<optimized out>) at ./src/widgets/kernel/qwidget.cpp:1559 #43 0x000070cce69e566d in QGroupBox::~QGroupBox (this=<optimized out>, this=<optimized out>) at ./src/widgets/widgets/qgroupbox.cpp:170 #44 0x000070cce55f8b1a in QObjectPrivate::deleteChildren (this=this@entry=0x6452071d7880) at ./src/corelib/kernel/qobject.cpp:2216 #45 0x000070cce6a31cd8 in QWidget::~QWidget (this=<optimized out>, this=<optimized out>) at ./src/widgets/kernel/qwidget.cpp:1559 #46 0x00006452045208a1 in PageFrame::~PageFrame (this=<optimized out>, this=<optimized out>) at ./src/editdlg_p.h:19 #47 PageFrame::~PageFrame (this=<optimized out>, this=<optimized out>) at ./src/editdlg_p.h:19 #48 0x000070cce55f8b1a in QObjectPrivate::deleteChildren (this=this@entry=0x645206d9f420) at ./src/corelib/kernel/qobject.cpp:2216 #49 0x000070cce6a31cd8 in QWidget::~QWidget (this=<optimized out>, this=<optimized out>) at ./src/widgets/kernel/qwidget.cpp:1559 #50 0x000070cce6a31d1d in QWidget::~QWidget (this=<optimized out>, this=<optimized out>) at ./src/widgets/kernel/qwidget.cpp:1585 #51 0x000070cce55f8b1a in QObjectPrivate::deleteChildren (this=this@entry=0x645206cf25e0) at ./src/corelib/kernel/qobject.cpp:2216 #52 0x000070cce6a31cd8 in QWidget::~QWidget (this=<optimized out>, this=<optimized out>) at ./src/widgets/kernel/qwidget.cpp:1559 #53 0x00006452044d0ed1 in StackedScrollWidget::~StackedScrollWidget (this=<optimized out>, this=<optimized out>) at ./src/lib/stackedwidgets.h:123 #54 StackedScrollWidget::~StackedScrollWidget (this=<optimized out>, this=<optimized out>) at ./src/lib/stackedwidgets.h:123 #55 0x000070cce55f8b1a in QObjectPrivate::deleteChildren (this=this@entry=0x6452071c9000) at ./src/corelib/kernel/qobject.cpp:2216 #56 0x000070cce6a31cd8 in QWidget::~QWidget (this=<optimized out>, this=<optimized out>) at ./src/widgets/kernel/qwidget.cpp:1559 #57 0x000070cce693a57d in QStackedWidget::~QStackedWidget (this=<optimized out>, this=<optimized out>) at ./src/widgets/widgets/qstackedwidget.cpp:112 #58 0x000070cce55f8b1a in QObjectPrivate::deleteChildren (this=this@entry=0x64520730c640) at ./src/corelib/kernel/qobject.cpp:2216 #59 0x000070cce6a31cd8 in QWidget::~QWidget (this=<optimized out>, this=<optimized out>) at ./src/widgets/kernel/qwidget.cpp:1559 #60 0x000070cce67fa8fd in QTabWidget::~QTabWidget (this=<optimized out>, this=<optimized out>) at ./src/widgets/widgets/qtabwidget.cpp:338 #61 0x000070cce55f8b1a in QObjectPrivate::deleteChildren (this=this@entry=0x6452068d2200) at ./src/corelib/kernel/qobject.cpp:2216 #62 0x000070cce6a31cd8 in QWidget::~QWidget (this=<optimized out>, this=<optimized out>) at ./src/widgets/kernel/qwidget.cpp:1559 #63 0x00006452045355e6 in EditDisplayAlarmDlg::~EditDisplayAlarmDlg (this=<optimized out>, this=<optimized out>) at ./src/editdlgtypes.h:37 #64 EditDisplayAlarmDlg::~EditDisplayAlarmDlg (this=<optimized out>, this=<optimized out>) at ./src/editdlgtypes.h:37 #65 0x000070cce55fa023 in QObject::event (this=0x64520731f1c0, e=0x645206bdcac0) at ./src/corelib/kernel/qobject.cpp:1433 #66 0x000070cce6a0992b in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x64520731f1c0, e=0x645206bdcac0) at ./src/widgets/kernel/qapplication.cpp:3287 #67 0x000070cce56a1c38 in QCoreApplication::notifyInternal2 (receiver=0x64520731f1c0, event=event@entry=0x645206bdcac0) at ./src/corelib/kernel/qcoreapplication.cpp:1134 #68 0x000070cce56a1c7d in QCoreApplication::sendEvent (receiver=<optimized out>, event=event@entry=0x645206bdcac0) at ./src/corelib/kernel/qcoreapplication.cpp:1575 #69 0x000070cce56a23e0 in QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x645206529850) at ./src/corelib/kernel/qcoreapplication.cpp:1932 #70 0x000070cce5478277 in postEventSourceDispatch (s=0x64520659e080) at ./src/corelib/kernel/qeventdispatcher_glib.cpp:244 #71 0x000070cce402dd3b in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #72 0x000070cce40832b8 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #73 0x000070cce402b3e3 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #74 0x000070cce5476570 in QEventDispatcherGlib::processEvents (this=0x64520655cd90, flags=...) at ./src/corelib/kernel/qeventdispatcher_glib.cpp:394 #75 0x000070cce56a3e3b in QEventLoop::exec (this=this@entry=0x7ffdd2ab7ca0, flags=..., flags@entry=...) at ./src/corelib/global/qflags.h:34 #76 0x000070cce56a5a6c in QCoreApplication::exec () at ./src/corelib/global/qflags.h:74 #77 0x000070cce5ae4330 in QGuiApplication::exec () at ./src/gui/kernel/qguiapplication.cpp:1926 #78 0x000070cce6a078d9 in QApplication::exec () at ./src/widgets/kernel/qapplication.cpp:2555 #79 0x00006452044b8693 in main (argc=<optimized out>, argv=<optimized out>) at ./src/main.cpp:71 [Inferior 1 (process 8019) detached]
As you say, this crash seems to be the same as that in okular (https://bugs.kde.org/show_bug.cgi?id=483904). I've applied a similar fix. Unfortunately, when I tried enabling spell checking, KAlarm without the fix didn't crash, so I can't test whether the fix definitely works. It would be good if you could test it when you have the new version of KAlarm, and report back. Fixed in KAlarm version 3.8.2 in KDE Gear 24.05.2 (commit 9354fe3a484e169451042da5c05e9833776c64f8).
Sorry for the late reply, I can confirm it is fixed! Thank you so much <3