https://bugs.kde.org/show_bug.cgi?id=524947

Seb Burrell <[email protected]> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |[email protected]

--- Comment #1 from Seb Burrell <[email protected]> ---
Created attachment 197015
  --> https://bugs.kde.org/attachment.cgi?id=197015&action=edit
524947-plasmashell-after-deadlock-DaysModel-reset

Confirming on a much smaller setup: a single Google account. The deadlock is
the same as described.

Setup: Fedora 44, Plasma 6.7.5, KF 6.30.0, Qt 6.11.2, akonadi-server 26.08.1,
Wayland, NVIDIA 615.71.09. One akonadi_google_resource plus the default
KMail-era agents, 13 agent processes in total (archivemail, followupreminder,
indexing, maildir, maildispatcher, mailfilter, mailmerge, migration,
newmailnotifier, sendlater, unifiedmailbox, google). The digital clock has
pimevents enabled.

On login, and reproducibly with `akonadictl restart`, plasmashell freezes for 2
x 25 s. akonadi_control logs one "org.freedesktop.DBus.Error.NoReply" about 50
s after "Akonadi server is now operational".

Main-thread stacks taken with eu-stack while the deadlock was in progress:
- akonadi_control: AgentManager::serviceOwnerChanged ->
AgentInstance::obtainAgentInterface() ->
QDBusPendingCallPrivate::waitForFinished()
- akonadi_google_resource, akonadi_unifiedmailbox_agent:
Akonadi::AgentManagerPrivate::readAgentTypes() -> waitForFinished()
- every other agent: blocking QDBusPendingReply<QStringList> ->
waitForFinished()
- plasmashell: PimEventsPlugin -> AkonadiPimDataSource::onSettingsChanged ->
EventModel::addCalendar -> CollectionFetchJob -> Session::defaultSession ->
ServerManager::state -> AgentManager::self ->
AgentManagerPrivate::readAgentTypes() (then readAgentInstances() on the second
round) -> waitForFinished()

So the cycle is the one in the description: akonadi_control blocks on an agent
while the agents (and plasmashell) block on akonadi_control. Nothing in the
agent setup is broken. The wallet was already unlocked during the restart
reproduction, so this isn't a KWallet wait.

A second effect, possibly worth its own bug: right after the deadlock clears,
plasmashell stays frozen (CPU-bound, not blocked) for at least another 25 s per
burst. Six such stalls happened within 3 minutes of one akonadictl restart.
Main thread: DaysModel::onEventRemoved -> QAbstractItemModel::modelReset ->
QQmlDelegateModel::handleModelReset -> delegate incubation -> Kirigami
PlatformTheme::qmlAttachedProperties -> PlasmaTheme::PlasmaTheme ->
PlasmaTheme::syncWindow -> QObject::connectImpl. Each event removed or added
while the calendar re-syncs resets the whole days model, and every rebuilt
delegate creates a new PlasmaTheme. This looks related to bug 510886.

Attached: plasmashell stacks for the deadlock wait and for the post-deadlock
DaysModel reset churn.

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to