Application: akonadi_ews_resource (5.19.40 (22.03.40)) (Compiled from sources) Qt Version: 5.15.2 Frameworks Version: 5.88.0 Operating System: Linux 5.15.0-gentoo-x86_64 x86_64 Windowing System: X11 Distribution: "Gentoo Base System release 2.8" DrKonqi: 5.23.80 [KCrashBackend] -- Information about the crash: - What I was doing when the application crashed: Just browsing the web, this happens after it's been running a while, usually hours after login. The reporter is unsure if this crash is reproducible. -- Backtrace: Application: Omicron (akonadi_ews_resource), signal: Segmentation fault Content of s_kcrashErrorMessage: std::unique_ptr<char []> = {get() = {<No data fields>}} [KCrash Handler] #6 0x000055ad2996c7d0 in QString::QString(QString const&) (other=<optimized out>, this=<optimized out>) at /usr/include/qt5/QtCore/qstring.h:1093 #7 EwsSettingsBase::eventSubscriptionId() const (this=<optimized out>) at /usr/src/debug/kde-apps/kdepim-runtime-9999/kdepim-runtime-9999_build/resources/ews/ewssettingsbase.h:626 #8 EwsSubscriptionManager::start() (this=0x0) at /usr/src/debug/kde-apps/kdepim-runtime-9999/kdepim-runtime-9999/resources/ews/ewssubscriptionmanager.cpp:48 #9 0x000055ad2995da3b in EwsResource::rootFolderFetchFinished(KJob*) (this=<optimized out>, job=<optimized out>) at /usr/include/qt5/QtCore/qscopedpointer.h:116 #10 0x00007f8eadc3d84e in () at /usr/lib64/libQt5Core.so.5 #11 0x00007f8eb6b52033 in KJob::result(KJob*, KJob::QPrivateSignal) (this=this@entry=0x55ad2d01ed50, _t1=<optimized out>, _t1@entry=0x55ad2d01ed50, _t2=...) at /usr/src/debug/kde-frameworks/kcoreaddons-9999/kcoreaddons-9999_build/src/lib/KF5CoreAddons_autogen/include/moc_kjob.cpp:633 #12 0x00007f8eb6b5352b in KJob::finishJob(bool) (this=0x55ad2d01ed50, emitResult=<optimized out>) at /usr/src/debug/kde-frameworks/kcoreaddons-9999/kcoreaddons-9999/src/lib/jobs/kjob.cpp:98 #13 0x00007f8eadc3d84e in () at /usr/lib64/libQt5Core.so.5 #14 0x00007f8eb6b52033 in KJob::result(KJob*, KJob::QPrivateSignal) (this=this@entry=0x55ad2cf8b520, _t1=<optimized out>, _t1@entry=0x55ad2cf8b520, _t2=...) at /usr/src/debug/kde-frameworks/kcoreaddons-9999/kcoreaddons-9999_build/src/lib/KF5CoreAddons_autogen/include/moc_kjob.cpp:633 #15 0x00007f8eb6b5352b in KJob::finishJob(bool) (this=0x55ad2cf8b520, emitResult=<optimized out>) at /usr/src/debug/kde-frameworks/kcoreaddons-9999/kcoreaddons-9999/src/lib/jobs/kjob.cpp:98 #16 0x00007f8eadc3d84e in () at /usr/lib64/libQt5Core.so.5 #17 0x00007f8eb6f6cc06 in KIO::SlaveInterface::dispatch(int, QByteArray const&) (this=0x55ad2b068960, _cmd=<optimized out>, rawdata=...) at /usr/src/debug/kde-frameworks/kio-9999/kio-9999/src/core/slaveinterface.cpp:149 #18 0x00007f8eb6f6b259 in KIO::SlaveInterface::dispatch() (this=0x55ad2b068960) at /usr/src/debug/kde-frameworks/kio-9999/kio-9999/src/core/slaveinterface.cpp:78 #19 0x00007f8eb6f6f91a in KIO::Slave::gotInput() (this=0x55ad2b068960) at /usr/src/debug/kde-frameworks/kio-9999/kio-9999/src/core/slave.cpp:336 #20 0x00007f8eadc3d84e in () at /usr/lib64/libQt5Core.so.5 #21 0x00007f8eadc358ee in QObject::event(QEvent*) () at /usr/lib64/libQt5Core.so.5 #22 0x00007f8eae7b764f in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib64/libQt5Widgets.so.5 #23 0x00007f8eadc0a548 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib64/libQt5Core.so.5 #24 0x00007f8eadc0d9ea in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () at /usr/lib64/libQt5Core.so.5 #25 0x00007f8eadc5daf3 in () at /usr/lib64/libQt5Core.so.5 #26 0x00007f8ea902fc8b in g_main_context_dispatch () at /usr/lib64/libglib-2.0.so.0 #27 0x00007f8ea902ff38 in () at /usr/lib64/libglib-2.0.so.0 #28 0x00007f8ea902ffef in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0 #29 0x00007f8eadc5d5aa in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5 #30 0x00007f8eadc08ff3 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5 #31 0x00007f8eb6b547ce in KJob::exec() (this=this@entry=0x55ad2d126a10) at /usr/include/qt5/QtCore/qflags.h:121 #32 0x000055ad2996c438 in EwsSubscriptionManager::cancelSubscription() (this=0x55ad2d101000) at /usr/src/debug/kde-apps/kdepim-runtime-9999/kdepim-runtime-9999/resources/ews/ewssubscriptionmanager.cpp:66 #33 0x000055ad2996e087 in EwsSubscriptionManager::~EwsSubscriptionManager() (this=0x55ad2d101000, __in_chrg=<optimized out>) at /usr/src/debug/kde-apps/kdepim-runtime-9999/kdepim-runtime-9999/resources/ews/ewssubscriptionmanager.cpp:42 #34 0x000055ad2996e159 in EwsSubscriptionManager::~EwsSubscriptionManager() (this=0x55ad2d101000, __in_chrg=<optimized out>) at /usr/src/debug/kde-apps/kdepim-runtime-9999/kdepim-runtime-9999/resources/ews/ewssubscriptionmanager.cpp:43 #35 0x00007f8eb7713be1 in Akonadi::AgentBase::setOnlineInternal(bool) (this=0x7ffe155b27d0, state=<optimized out>) at /usr/src/debug/kde-apps/akonadi-9999/akonadi-9999/src/agentbase/agentbase.cpp:1044 #36 0x00007f8eb7714371 in Akonadi::AgentBase::setTemporaryOffline(int) (this=<optimized out>, makeOnlineInSeconds=15) at /usr/src/debug/kde-apps/akonadi-9999/akonadi-9999/src/agentbase/agentbase.cpp:1013 #37 0x00007f8eadc358ee in QObject::event(QEvent*) () at /usr/lib64/libQt5Core.so.5 #38 0x00007f8eae7b764f in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib64/libQt5Widgets.so.5 #39 0x00007f8eadc0a548 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib64/libQt5Core.so.5 #40 0x00007f8eadc0d9ea in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () at /usr/lib64/libQt5Core.so.5 #41 0x00007f8eadc5daf3 in () at /usr/lib64/libQt5Core.so.5 #42 0x00007f8ea902fc8b in g_main_context_dispatch () at /usr/lib64/libglib-2.0.so.0 #43 0x00007f8ea902ff38 in () at /usr/lib64/libglib-2.0.so.0 #44 0x00007f8ea902ffef in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0 #45 0x00007f8eadc5d5aa in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5 #46 0x00007f8eadc08ff3 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5 #47 0x00007f8eb6b547ce in KJob::exec() (this=this@entry=0x55ad2d136590) at /usr/include/qt5/QtCore/qflags.h:121 #48 0x000055ad2996c438 in EwsSubscriptionManager::cancelSubscription() (this=0x55ad2d134230) at /usr/src/debug/kde-apps/kdepim-runtime-9999/kdepim-runtime-9999/resources/ews/ewssubscriptionmanager.cpp:66 #49 0x000055ad2996e087 in EwsSubscriptionManager::~EwsSubscriptionManager() (this=0x55ad2d134230, __in_chrg=<optimized out>) at /usr/src/debug/kde-apps/kdepim-runtime-9999/kdepim-runtime-9999/resources/ews/ewssubscriptionmanager.cpp:42 #50 0x000055ad2996e159 in EwsSubscriptionManager::~EwsSubscriptionManager() (this=0x55ad2d134230, __in_chrg=<optimized out>) at /usr/src/debug/kde-apps/kdepim-runtime-9999/kdepim-runtime-9999/resources/ews/ewssubscriptionmanager.cpp:43 #51 0x00007f8eb7713be1 in Akonadi::AgentBase::setOnlineInternal(bool) (this=0x7ffe155b27d0, state=<optimized out>) at /usr/src/debug/kde-apps/akonadi-9999/akonadi-9999/src/agentbase/agentbase.cpp:1044 #52 0x00007f8eb7714371 in Akonadi::AgentBase::setTemporaryOffline(int) (this=<optimized out>, makeOnlineInSeconds=15) at /usr/src/debug/kde-apps/akonadi-9999/akonadi-9999/src/agentbase/agentbase.cpp:1013 #53 0x00007f8eadc358ee in QObject::event(QEvent*) () at /usr/lib64/libQt5Core.so.5 #54 0x00007f8eae7b764f in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib64/libQt5Widgets.so.5 #55 0x00007f8eadc0a548 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib64/libQt5Core.so.5 #56 0x00007f8eadc0d9ea in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () at /usr/lib64/libQt5Core.so.5 #57 0x00007f8eadc5daf3 in () at /usr/lib64/libQt5Core.so.5 #58 0x00007f8ea902fc8b in g_main_context_dispatch () at /usr/lib64/libglib-2.0.so.0 #59 0x00007f8ea902ff38 in () at /usr/lib64/libglib-2.0.so.0 #60 0x00007f8ea902ffef in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0 #61 0x00007f8eadc5d5aa in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5 #62 0x00007f8eadc08ff3 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5 #63 0x00007f8eb6b547ce in KJob::exec() (this=this@entry=0x55ad2b61db10) at /usr/include/qt5/QtCore/qflags.h:121 #64 0x000055ad2996c438 in EwsSubscriptionManager::cancelSubscription() (this=0x55ad2d065d50) at /usr/src/debug/kde-apps/kdepim-runtime-9999/kdepim-runtime-9999/resources/ews/ewssubscriptionmanager.cpp:66 #65 0x000055ad2996e087 in EwsSubscriptionManager::~EwsSubscriptionManager() (this=0x55ad2d065d50, __in_chrg=<optimized out>) at /usr/src/debug/kde-apps/kdepim-runtime-9999/kdepim-runtime-9999/resources/ews/ewssubscriptionmanager.cpp:42 #66 0x000055ad2996e159 in EwsSubscriptionManager::~EwsSubscriptionManager() (this=0x55ad2d065d50, __in_chrg=<optimized out>) at /usr/src/debug/kde-apps/kdepim-runtime-9999/kdepim-runtime-9999/resources/ews/ewssubscriptionmanager.cpp:43 #67 0x00007f8eb7713be1 in Akonadi::AgentBase::setOnlineInternal(bool) (this=0x7ffe155b27d0, state=<optimized out>) at /usr/src/debug/kde-apps/akonadi-9999/akonadi-9999/src/agentbase/agentbase.cpp:1044 #68 0x00007f8eb7714371 in Akonadi::AgentBase::setTemporaryOffline(int) (this=<optimized out>, makeOnlineInSeconds=15) at /usr/src/debug/kde-apps/akonadi-9999/akonadi-9999/src/agentbase/agentbase.cpp:1013 #69 0x00007f8eadc358ee in QObject::event(QEvent*) () at /usr/lib64/libQt5Core.so.5 #70 0x00007f8eae7b764f in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib64/libQt5Widgets.so.5 #71 0x00007f8eadc0a548 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib64/libQt5Core.so.5 #72 0x00007f8eadc0d9ea in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () at /usr/lib64/libQt5Core.so.5 #73 0x00007f8eadc5daf3 in () at /usr/lib64/libQt5Core.so.5 #74 0x00007f8ea902fc8b in g_main_context_dispatch () at /usr/lib64/libglib-2.0.so.0 #75 0x00007f8ea902ff38 in () at /usr/lib64/libglib-2.0.so.0 #76 0x00007f8ea902ffef in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0 #77 0x00007f8eadc5d5aa in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5 #78 0x00007f8eadc08ff3 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5 #79 0x00007f8eadc11270 in QCoreApplication::exec() () at /usr/lib64/libQt5Core.so.5 #80 0x000055ad299652c2 in Akonadi::ResourceBase::init<EwsResource>(int, char**) (argc=<optimized out>, argv=0x7ffe155b27d0) at /usr/include/KF5/AkonadiAgentBase/akonadi/resourcebase.h:183 #81 0x00007f8ead5bc7fd in __libc_start_main () at /lib64/libc.so.6 #82 0x000055ad29908aca in _start () [Inferior 1 (process 2218167) detached] Reported using DrKonqi This report was filed against 'kde' because the product 'akonadi_ews_resource' could not be located in Bugzilla. Add it to drkonqi's mappings file!
This looks like a race condition when accessing EwsResource::mSubManager pointer. This pointer is set to a newly created EwsSubscriptionManager instance inside EwsResource::rootFolderFetchFinished(), but it looks like after creation the pointer is cleared, which causes the subsequent lines to see a NULL pointer there. Two functions are able to reset this pointer to NULL: EwsResource::reloadConfig() and EwsResource::doSetOnline(). In theory this should not happen, as all the event processing is done in a single thread, but it looks like one of these functions gets a call from a different thread and the race is on.
*** Bug 487367 has been marked as a duplicate of this bug. ***
I have put extra debug prints around EwsResource::reloadConfig() and EwsResource::doSetOnline() with the thread id in order to catch the problem. Unfortunately however I was not able to reproduce this for a long time. Meanwhile the EWS code has been migrated to Qt6/KF6 and with it the request code has been migrated away from KIO into QNetworkRequest/Reply. This has changed the event flow around issuing EWS server requests and could have removed the possibility of this problem to be triggered. Closing this one, unless the problem is reproduced with a newer Qt6/KF6 version.