https://bugs.kde.org/show_bug.cgi?id=526222
Louis Liu <[email protected]> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |[email protected] --- Comment #3 from Louis Liu <[email protected]> --- Additional data point, on Plasma 6.8.0 / Qt 6.12.0 / Wayland. Same crash signature as reported here, but the innermost frame differs slightly. On Qt 6.11.2 the crash lands in QSortFilterProxyModelPrivate::proxy_to_source(); on Qt 6.12 the faulting pointer is d->model in QAbstractProxyModel::canFetchMore(), i.e. bool QAbstractProxyModel::canFetchMore(const QModelIndex &parent) const { Q_D(const QAbstractProxyModel); return d->model->canFetchMore(mapToSource(parent)); // d->model is null } (src/corelib/itemmodels/qabstractproxymodel.cpp:422 in qtbase 6.12.0-3) Backtrace from coredumpctl (plasmashell 6.8.0-1, Arch, Wayland, kernel 7.2.11): #6 QQmlDelegateModel::setRootIndex(const QVariant&) #5 QSortFilterProxyModel::canFetchMore(const QModelIndex&) #4 (libQt6Core, QAbstractProxyModel::canFetchMore) ... QQuickLoader::setActive -> QQmlComponent::create -> QQmlBinding::doUpdate ... QQuickDeliveryAgentPrivate::sendHoverEvent Trigger: hovering (or dragging) a task button in the **Icons-Only Task Manager** (org.kde.plasma.icontasks). In 6.8 that applet reuses the new task manager QML module via "X-Plasma-RootPath": "org.kde.plasma.taskmanager", so it hits the same code path as Icons-and-Text. The object that crashes is the DelegateModel inside the *group* tooltip, in plasma-desktop 6.8 applets/taskmanager/qml/ToolTipDelegate.qml: Loader { sourceComponent: isGroup ? groupToolTip : singleTooltip } Component { id: groupToolTip ... DelegateModel { id: delegateModel model: tasksModel rootIndex: toolTipDelegate.rootIndex } } isGroup comes from model.IsGroupParent (Task.qml:365), so that DelegateModel only exists for a *group parent* task. Hence a reliable workaround: set the applet's "Group:" to "Do not group" (groupingStrategy=0). No group parent => no DelegateModel => this code path is never entered. That is what I run locally now. Where the null source model comes from: the proxy chain built by TaskManager::TasksModel in plasma-workspace 6.8 libtaskmanager is TasksModel(QSortFilterProxyModel) -> TaskGroupingProxyModel -> TaskFilterProxyModel (QSortFilterProxyModel) -> ConcatenateTasksProxyModel, and two paths can leave it without a source model: 1. TasksModel::setGroupMode() explicitly nulls one: libtaskmanager/tasksmodel.cpp:1297 d->flattenGroupsProxyModel->setSourceModel(nullptr); 2. Qt's QAbstractProxyModel::_q_sourceModelDestroyed() nulls d->model when a source model is destroyed out from under the chain. Checked upstream: neither plasma-workspace nor plasma-desktop 6.8.1 contains any libtaskmanager / task manager change (compared v6.8.0..v6.8.1 in both repos), so the 6.8.1 point release does not fix this. On my host it is a low-frequency event (1 crash in the last 30 days), so it looks like a race that needs the source model to be reset/destroyed while the tooltip delegate is being loaded. Low frequency and reproducibility note: I could not produce a deterministic repro; my crash happened while dragging a task button, which matches the original report here. -- You are receiving this mail because: You are watching all bug changes.
