Application: korganizer (5.24.0 (23.08.0)) Qt Version: 5.15.10 Frameworks Version: 5.109.0 Operating System: Linux 6.4.12-arch1-1 x86_64 Windowing System: X11 Distribution: "Arch Linux" DrKonqi: 5.27.7 [KCrashBackend] -- Information about the crash: Since a recent update, I am not able to forward a calendar event. The crash can be reproduced every time. -- Backtrace: Application: KOrganizer (korganizer), signal: Segmentation fault Content of s_kcrashErrorMessage: std::unique_ptr<char []> = {get() = <optimized out>} [KCrash Handler] #6 0x00007f2629aef0b8 in Akonadi::MailClient::queueMessage(MailTransport::Transport const*, MessageComposer::Composer const*, QSharedPointer<KCalendarCore::IncidenceBase> const&, KIdentityManagement::Identity const&, Akonadi::MailClient::MessageData const&, QSharedPointer<KMime::Message> const&) (message=..., msg=..., identity=<optimized out>, incidence=..., composer=<optimized out>, transport=0x561d04ed36f0, this=0x561d03ffcbf0) at /usr/src/debug/akonadi-calendar/akonadi-calendar-23.08.0/src/mailclient_p.cpp:323 #7 operator() (__closure=0x561d04eb5680) at /usr/src/debug/akonadi-calendar/akonadi-calendar-23.08.0/src/mailclient_p.cpp:641 #8 QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, Akonadi::MailClient::send(const KCalendarCore::IncidenceBase::Ptr&, const KIdentityManagement::Identity&, const MessageData&, const QString&)::<lambda()> >::call (arg=<optimized out>, f=...) at /usr/include/qt/QtCore/qobjectdefs_impl.h:146 #9 QtPrivate::Functor<Akonadi::MailClient::send(const KCalendarCore::IncidenceBase::Ptr&, const KIdentityManagement::Identity&, const MessageData&, const QString&)::<lambda()>, 0>::call<QtPrivate::List<>, void> (arg=<optimized out>, f=...) at /usr/include/qt/QtCore/qobjectdefs_impl.h:256 #10 QtPrivate::QFunctorSlotObject<Akonadi::MailClient::send(const KCalendarCore::IncidenceBase::Ptr&, const KIdentityManagement::Identity&, const MessageData&, const QString&)::<lambda()>, 0, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) (which=<optimized out>, this_=0x561d04eb5670, r=<optimized out>, a=<optimized out>, ret=<optimized out>) at /usr/include/qt/QtCore/qobjectdefs_impl.h:443 #11 0x00007f262a2d1637 in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7fff5abc71f0, r=<optimized out>, this=0x561d04eb5670, this=<optimized out>, r=<optimized out>, a=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398 #12 doActivate<false>(QObject*, int, void**) (sender=0x561d04ede3f0, signal_index=6, argv=0x7fff5abc71f0) at kernel/qobject.cpp:3925 #13 0x00007f262b7c30aa in KJob::result(KJob*, KJob::QPrivateSignal) (this=this@entry=0x561d04ede3f0, _t1=<optimized out>, _t1@entry=0x561d04ede3f0, _t2=...) at /usr/src/debug/kcoreaddons/build/src/lib/KF5CoreAddons_autogen/include/moc_kjob.cpp:633 #14 0x00007f262b7c907c in KJob::finishJob(bool) (this=0x561d04ede3f0, emitResult=<optimized out>) at /usr/src/debug/kcoreaddons/kcoreaddons-5.109.0/src/lib/jobs/kjob.cpp:98 #15 0x00007f262a2d1637 in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7fff5abc7320, r=<optimized out>, this=0x561d04f1cbd0, this=<optimized out>, r=<optimized out>, a=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398 #16 doActivate<false>(QObject*, int, void**) (sender=0x561d04ec9270, signal_index=6, argv=0x7fff5abc7320) at kernel/qobject.cpp:3925 #17 0x00007f262b7c30aa in KJob::result(KJob*, KJob::QPrivateSignal) (this=this@entry=0x561d04ec9270, _t1=<optimized out>, _t1@entry=0x561d04ec9270, _t2=...) at /usr/src/debug/kcoreaddons/build/src/lib/KF5CoreAddons_autogen/include/moc_kjob.cpp:633 #18 0x00007f262b7c907c in KJob::finishJob(bool) (this=0x561d04ec9270, emitResult=<optimized out>) at /usr/src/debug/kcoreaddons/kcoreaddons-5.109.0/src/lib/jobs/kjob.cpp:98 #19 0x00007f262b7c9cd2 in KJob::emitResult() (this=<optimized out>) at /usr/src/debug/kcoreaddons/kcoreaddons-5.109.0/src/lib/jobs/kjob.cpp:338 #20 0x00007f2627a3a67a in operator() (auditLogAsHtml=<optimized out>, auditLogError=<optimized out>, signature=..., result=<optimized out>, __closure=0x561d04efe8e0) at /usr/src/debug/messagelib/messagelib-23.08.0/messagecomposer/src/job/signjob.cpp:277 #21 QtPrivate::FunctorCall<QtPrivate::IndexesList<0, 1, 2, 3>, QtPrivate::List<const GpgME::SigningResult&, const QByteArray&, const QString&, const GpgME::Error&>, void, MessageComposer::SignJob::process()::<lambda(const GpgME::SigningResult&, const QByteArray&, const QString&, const GpgME::Error&)> >::call (arg=<optimized out>, f=...) at /usr/include/qt/QtCore/qobjectdefs_impl.h:146 #22 QtPrivate::Functor<MessageComposer::SignJob::process()::<lambda(const GpgME::SigningResult&, const QByteArray&, const QString&, const GpgME::Error&)>, 4>::call<QtPrivate::List<GpgME::SigningResult const&, QByteArray const&, QString const&, GpgME::Error const&>, void> (arg=<optimized out>, f=...) at /usr/include/qt/QtCore/qobjectdefs_impl.h:256 #23 QtPrivate::QFunctorSlotObject<MessageComposer::SignJob::process()::<lambda(const GpgME::SigningResult&, const QByteArray&, const QString&, const GpgME::Error&)>, 4, QtPrivate::List<const GpgME::SigningResult&, const QByteArray&, const QString&, const GpgME::Error&>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) (which=<optimized out>, this_=0x561d04efe8d0, r=<optimized out>, a=<optimized out>, ret=<optimized out>) at /usr/include/qt/QtCore/qobjectdefs_impl.h:443 #24 0x00007f262a2d1637 in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7fff5abc74b0, r=<optimized out>, this=0x561d04efe8d0, this=<optimized out>, r=<optimized out>, a=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398 #25 doActivate<false>(QObject*, int, void**) (sender=0x561d04ec7660, signal_index=7, argv=0x7fff5abc74b0) at kernel/qobject.cpp:3925 #26 0x00007f2626d55806 in QGpgME::SignJob::result(GpgME::SigningResult const&, QByteArray const&, QString const&, GpgME::Error const&) (this=<optimized out>, _t1=<optimized out>, _t2=<optimized out>, _t3=<optimized out>, _t4=<optimized out>) at /usr/src/debug/gpgme/gpgme-1.22.0/lang/qt/src/signjob.moc:144 #27 0x00007f2626d9d8dd in QGpgME::_detail::ThreadedJobMixin<QGpgME::SignJob, std::tuple<GpgME::SigningResult, QByteArray, QString, GpgME::Error> >::doEmitResult<GpgME::SigningResult, QByteArray, QString, GpgME::Error>(std::tuple<GpgME::SigningResult, QByteArray, QString, GpgME::Error> const&) (tuple=std::tuple containing = {...}, this=0x561d04ec7660) at /usr/include/c++/13.2.1/tuple:237 #28 QGpgME::_detail::ThreadedJobMixin<QGpgME::SignJob, std::tuple<GpgME::SigningResult, QByteArray, QString, GpgME::Error> >::slotFinished() (this=0x561d04ec7660) at /usr/src/debug/gpgme/gpgme-1.22.0/lang/qt/src/threadedjobmixin.h:239 #29 0x00007f262a2c4174 in QObject::event(QEvent*) (this=0x561d04ec7660, e=0x7f25c8005a60) at kernel/qobject.cpp:1347 #30 0x00007f262af7893f in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=<optimized out>, receiver=0x561d04ec7660, e=0x7f25c8005a60) at kernel/qapplication.cpp:3640 #31 0x00007f262a29c6f8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x561d04ec7660, event=0x7f25c8005a60) at kernel/qcoreapplication.cpp:1064 #32 0x00007f262a2a165b in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (receiver=0x0, event_type=0, data=0x561d03c4bd10) at kernel/qcoreapplication.cpp:1821 #33 0x00007f262a2e76d8 in postEventSourceDispatch(GSource*, GSourceFunc, gpointer) (s=0x561d03d39430) at kernel/qeventdispatcher_glib.cpp:277 #34 0x00007f2627f10a61 in g_main_dispatch (context=0x7f2604000ee0) at ../glib/glib/gmain.c:3460 #35 g_main_context_dispatch (context=0x7f2604000ee0) at ../glib/glib/gmain.c:4200 #36 0x00007f2627f6dc29 in g_main_context_iterate.isra.0 (context=context@entry=0x7f2604000ee0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/glib/gmain.c:4276 #37 0x00007f2627f0e112 in g_main_context_iteration (context=0x7f2604000ee0, may_block=1) at ../glib/glib/gmain.c:4343 #38 0x00007f262a2eb51c in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x561d03d40700, flags=...) at kernel/qeventdispatcher_glib.cpp:423 #39 0x00007f262a29b404 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7fff5abc79e0, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:69 #40 0x00007f262a29c8a3 in QCoreApplication::exec() () at ../../include/QtCore/../../src/corelib/global/qflags.h:121 #41 0x00007f262a73bef2 in QGuiApplication::exec() () at kernel/qguiapplication.cpp:1870 #42 0x00007f262af76cda in QApplication::exec() () at kernel/qapplication.cpp:2832 #43 0x0000561d037e6db8 in main(int, char**) (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/korganizer/korganizer-23.08.0/src/main.cpp:72 [Inferior 1 (process 1320473) detached] Reported using DrKonqi
Could you please describe how exactly are you trying to forward an event? Thanks
In Korganizer, I do a right-clik on an event and choose "send as iCalendar". Then I choose the recipient, click OK, and it crashes.
A possibly relevant merge request was started @ https://invent.kde.org/pim/korganizer/-/merge_requests/106
Git commit e28baf6ff1290edbc8e5771400fe87c81dbc8fea by Daniel Vrátil. Committed on 17/10/2023 at 21:30. Pushed by dvratil into branch 'release/23.08'. Fix crash when forwarding incidence via context menu The MailClient inside ITIPHandler may work asynchronously, causing the ITIPHandler inside the KOEVentPopupMenu to go out-of-scope and be destroyed before the async operation in the MailClient finishes. Since MailClient relies on a factory object owned by the ITIPHandler, if the ITIPHandler gets destroyed before the MailClient finishes, it will delete the factory object causing use-after-free when the async operation in MailClient is finally done. FIXED-IN: 23.08.3 M +6 -3 src/koeventpopupmenu.cpp https://invent.kde.org/pim/korganizer/-/commit/e28baf6ff1290edbc8e5771400fe87c81dbc8fea