Bug 376055 - Plasma crashes when switching activities after unpinning a launcher specific to an activity
Summary: Plasma crashes when switching activities after unpinning a launcher specific ...
Status: RESOLVED FIXED
Alias: None
Product: plasmashell
Classification: Plasma
Component: Task Manager and Icons-Only Task Manager (show other bugs)
Version: 5.9.0
Platform: Neon Linux
: NOR crash
Target Milestone: 1.0
Assignee: Eike Hein
URL:
Keywords:
: 376255 (view as bug list)
Depends on:
Blocks:
 
Reported: 2017-02-05 15:05 UTC by AGui
Modified: 2017-06-21 13:20 UTC (History)
4 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments
plasmashell output (9.02 KB, text/plain)
2017-02-07 13:14 UTC, AGui
Details
gdb plasmashell output (14.17 KB, text/plain)
2017-02-13 21:07 UTC, AGui
Details
Backtrace in KCrash (4.84 KB, text/plain)
2017-02-13 21:07 UTC, AGui
Details

Note You need to log in before you can comment on or make changes to this bug.
Description AGui 2017-02-05 15:05:17 UTC
I am using KDE 5.9.0 on KDE Neon User Edition. I started using the new feature of having different launchers in the task manager in different activities, but it made plasma crashing. The bug is not triggered every time, but I think I found a way to reproduce it.

Steps to reproduce :
1. Setup two activities (Activity1 and Activity2), with no launchers in the task manager.
2. Go to Activity1, launch Dolphin, right click on its icon in the task manager and select 'Pin > On current activity'.
3. Close Dolphin and switch to Activity2 (I am using Meta + Tab)
4. Launch Konsole, , right click on its icon in the task manager and select 'Pin > On current activity'.
5. Close Konsole and swith to Activity1 (Meta + Tab)
6. Launch Dolphin through the launcher, right click on its icon and click on "Pin > Activity1" to unpin it. Leave Dolphin running, do not close it.
7. Use Meta + Tab to switch to Activity2. There should be 2 Konsole launchers in the Task manager instead of only one.
8. Switching again to Activity1 with Meta + Tab makes Plasma crash.
Comment 1 Eike Hein 2017-02-07 11:13:36 UTC
Backtrace?
Comment 2 AGui 2017-02-07 13:14:54 UTC
Created attachment 103881 [details]
plasmashell output

I don't get any dialog when plasmashell crashes, just a black screen. I have to start it again through KRunner. I killed plasma manually, started it from Konsole and did the steps described below. Here is the complete output.
Comment 3 AGui 2017-02-07 13:17:20 UTC
Comment on attachment 103881 [details]
plasmashell output

kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/agui/.local/share", "/usr/share/usr/share/xsessions/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/agui/.local/share", "/usr/share/usr/share/xsessions/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
org.kde.kcoreaddons: Expected JSON property "X-Plasma-ContainmentCategories" to be a string list. Treating it as a list with a single entry: "panel" org.kde.plasma.desktop.emptyPanel
org.kde.kcoreaddons: Expected JSON property "X-Plasma-ContainmentCategories" to be a string list. Treating it as a list with a single entry: "panel" org.kde.plasma.desktop.appmenubar
org.kde.kcoreaddons: Expected JSON property "X-Plasma-ContainmentCategories" to be a string list. Treating it as a list with a single entry: "panel" org.kde.plasma.desktop.defaultPanel
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/agui/.local/share", "/usr/share/usr/share/xsessions/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/agui/.local/share", "/usr/share/usr/share/xsessions/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
No metadata file in the package, expected it at: "/home/agui/Images/"
No metadata file in the package, expected it at: "/home/agui/Images/"
No metadata file in the package, expected it at: "/home/agui/Images/"
Connecting to deprecated signal QDBusConnectionInterface::serviceOwnerChanged(QString,QString,QString)
file:///usr/share/plasma/plasmoids/org.kde.plasma.taskmanager/contents/ui/main.qml:112:20: Unable to assign [undefined] to int
Trying to use rootObject before initialization is completed, whilst using setInitializationDelayed. Forcing completion
file:///usr/share/plasma/plasmoids/org.kde.plasma.digitalclock/contents/ui/main.qml:78:27: Unable to assign [undefined] to QStringList
file:///usr/share/plasma/plasmoids/org.kde.plasma.digitalclock/contents/ui/main.qml:37: TypeError: Cannot read property 'DateTime' of undefined
Both point size and pixel size set. Using pixel size.
Both point size and pixel size set. Using pixel size.
Both point size and pixel size set. Using pixel size.
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/agui/.local/share", "/usr/share/usr/share/xsessions/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/agui/.local/share", "/usr/share/usr/share/xsessions/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/agui/.local/share", "/usr/share/usr/share/xsessions/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/agui/.local/share", "/usr/share/usr/share/xsessions/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
libkcups: Create-Printer-Subscriptions last error: 0 successful-ok
libkcups: Get-Jobs last error: 0 successful-ok
libkcups: Get-Jobs last error: 0 successful-ok
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/agui/.local/share", "/usr/share/usr/share/xsessions/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/agui/.local/share", "/usr/share/usr/share/xsessions/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/agui/.local/share", "/usr/share/usr/share/xsessions/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/agui/.local/share", "/usr/share/usr/share/xsessions/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/agui/.local/share", "/usr/share/usr/share/xsessions/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/agui/.local/share", "/usr/share/usr/share/xsessions/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/agui/.local/share", "/usr/share/usr/share/xsessions/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/agui/.local/share", "/usr/share/usr/share/xsessions/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/agui/.local/share", "/usr/share/usr/share/xsessions/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/agui/.local/share", "/usr/share/usr/share/xsessions/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
Trying to use rootObject before initialization is completed, whilst using setInitializationDelayed. Forcing completion
Notifications service registered
file:///usr/lib/x86_64-linux-gnu/qt5/qml/QtQuick/Controls/Button.qml:99: TypeError: Cannot read property of null
file:///usr/share/plasma/plasmoids/org.kde.plasma.clipboard/contents/ui/clipboard.qml:32: TypeError: Cannot read property 'empty' of undefined
file:///usr/share/plasma/plasmoids/org.kde.plasma.clipboard/contents/ui/clipboard.qml:34: TypeError: Cannot read property 'empty' of undefined
file:///usr/lib/x86_64-linux-gnu/qt5/qml/QtQuick/Controls/Button.qml:99: TypeError: Cannot read property of null
file:///usr/lib/x86_64-linux-gnu/qt5/qml/QtQuick/Controls/Button.qml:99: TypeError: Cannot read property of null
Plasma Shell startup completed
libkcups: 0
libkcups: 0
libkcups: Get-Jobs last error: 0 successful-ok
libkcups: Get-Jobs last error: 0 successful-ok
Both point size and pixel size set. Using pixel size.
networkmanager-qt: void NetworkManager::NetworkManagerPrivate::propertiesChanged(const QVariantMap&) Unhandled property "AllDevices"
networkmanager-qt: void NetworkManager::NetworkManagerPrivate::propertiesChanged(const QVariantMap&) Unhandled property "Devices"
networkmanager-qt: void NetworkManager::NetworkManagerPrivate::propertiesChanged(const QVariantMap&) Unhandled property "GlobalDnsConfiguration"
networkmanager-qt: virtual void NetworkManager::DevicePrivate::propertyChanged(const QString&, const QVariant&) Unhandled property "LldpNeighbors"
networkmanager-qt: virtual void NetworkManager::DevicePrivate::propertyChanged(const QString&, const QVariant&) Unhandled property "Real"
networkmanager-qt: virtual void NetworkManager::DevicePrivate::propertyChanged(const QString&, const QVariant&) Unhandled property "LldpNeighbors"
networkmanager-qt: virtual void NetworkManager::DevicePrivate::propertyChanged(const QString&, const QVariant&) Unhandled property "Real"
networkmanager-qt: virtual void NetworkManager::DevicePrivate::propertyChanged(const QString&, const QVariant&) Unhandled property "S390Subchannels"
networkmanager-qt: virtual void NetworkManager::DevicePrivate::propertyChanged(const QString&, const QVariant&) Unhandled property "LldpNeighbors"
networkmanager-qt: virtual void NetworkManager::DevicePrivate::propertyChanged(const QString&, const QVariant&) Unhandled property "Real"
networkmanager-qt: virtual void NetworkManager::DevicePrivate::propertyChanged(const QString&, const QVariant&) Unhandled property "LldpNeighbors"
networkmanager-qt: virtual void NetworkManager::DevicePrivate::propertyChanged(const QString&, const QVariant&) Unhandled property "Real"
libkcups: 0
libkcups: 0
QXcbConnection: XCB error: 2 (BadValue), sequence: 1529, resource id: 65011740, major code: 142 (Unknown), minor code: 3
trying to show an empty dialog
file:///usr/lib/x86_64-linux-gnu/qt5/qml/QtQuick/Controls/Button.qml:99: TypeError: Cannot read property of null
file:///usr/lib/x86_64-linux-gnu/qt5/qml/QtQuick/Controls/Button.qml:99: TypeError: Cannot read property of null
Cannot creat accessible child interface for object:  PlacesView(0x2789960)  index:  18
kf5.kio.core: KSambaShare: Could not find smb.conf!
QXcbConnection: XCB error: 2 (BadValue), sequence: 2913, resource id: 6291496, major code: 142 (Unknown), minor code: 3
KActivities: Database connection:  "kactivities_db_resources_140363698260160_readonly" 
    query_only:          QVariant(qlonglong, 1) 
    journal_mode:        QVariant(QString, "wal") 
    wal_autocheckpoint:  QVariant(qlonglong, 100) 
    synchronous:         QVariant(qlonglong, 0)
Closing SQL connection:  "kactivities_db_resources_140363698260160_readonly"
QXcbConnection: XCB error: 2 (BadValue), sequence: 3867, resource id: 73400325, major code: 142 (Unknown), minor code: 3
QXcbConnection: XCB error: 2 (BadValue), sequence: 3946, resource id: 65011740, major code: 142 (Unknown), minor code: 3
QXcbConnection: XCB error: 2 (BadValue), sequence: 3977, resource id: 6291496, major code: 142 (Unknown), minor code: 3
KActivities: Database connection:  "kactivities_db_resources_140363698260160_readonly" 
    query_only:          QVariant(qlonglong, 1) 
    journal_mode:        QVariant(QString, "wal") 
    wal_autocheckpoint:  QVariant(qlonglong, 100) 
    synchronous:         QVariant(qlonglong, 0)
Closing SQL connection:  "kactivities_db_resources_140363698260160_readonly"
file:///usr/lib/x86_64-linux-gnu/qt5/qml/QtQuick/Controls/Button.qml:99: TypeError: Cannot read property of null
file:///usr/lib/x86_64-linux-gnu/qt5/qml/QtQuick/Controls/Button.qml:99: TypeError: Cannot read property of null
file:///usr/lib/x86_64-linux-gnu/qt5/qml/QtQuick/Controls/Button.qml:99: TypeError: Cannot read property of null
file:///usr/lib/x86_64-linux-gnu/qt5/qml/QtQuick/Controls/Button.qml:99: TypeError: Cannot read property of null
file:///usr/share/plasma/plasmoids/org.kde.plasma.taskmanager/contents/ui/Task.qml:44:32: Unable to assign [undefined] to int
file:///usr/share/plasma/plasmoids/org.kde.plasma.taskmanager/contents/ui/Task.qml:44:32: Unable to assign [undefined] to int
file:///usr/share/plasma/plasmoids/org.kde.desktopcontainment/contents/ui/FolderView.qml:855:17: QML Connections: Cannot assign to non-existent property "onIconSizesChanged"
file:///usr/lib/x86_64-linux-gnu/qt5/qml/QtQuick/Controls/ScrollView.qml:353: TypeError: Cannot read property 'padding' of null
file:///usr/lib/x86_64-linux-gnu/qt5/qml/QtQuick/Controls/ScrollView.qml:352: TypeError: Cannot read property 'padding' of null
file:///usr/lib/x86_64-linux-gnu/qt5/qml/QtQuick/Controls/ScrollView.qml:351: TypeError: Cannot read property 'padding' of null
file:///usr/lib/x86_64-linux-gnu/qt5/qml/QtQuick/Controls/ScrollView.qml:350: TypeError: Cannot read property 'padding' of null
file:///usr/lib/x86_64-linux-gnu/qt5/qml/QtQuick/Controls/TextArea.qml:905: TypeError: Cannot read property '__selectionHandle' of null
file:///usr/lib/x86_64-linux-gnu/qt5/qml/QtQuick/Controls/TextArea.qml:941: TypeError: Cannot read property '__cursorHandle' of null
kf5.kio.core: KSambaShare: Could not find smb.conf!
KActivities: Database connection:  "kactivities_db_resources_140363698260160_readonly" 
    query_only:          QVariant(qlonglong, 1) 
    journal_mode:        QVariant(QString, "wal") 
    wal_autocheckpoint:  QVariant(qlonglong, 100) 
    synchronous:         QVariant(qlonglong, 0)
Closing SQL connection:  "kactivities_db_resources_140363698260160_readonly"
file:///usr/lib/x86_64-linux-gnu/qt5/qml/QtQuick/Controls/Button.qml:99: TypeError: Cannot read property of null
file:///usr/lib/x86_64-linux-gnu/qt5/qml/QtQuick/Controls/Button.qml:99: TypeError: Cannot read property of null
file:///usr/lib/x86_64-linux-gnu/qt5/qml/QtQuick/Controls/Button.qml:99: TypeError: Cannot read property of null
file:///usr/lib/x86_64-linux-gnu/qt5/qml/QtQuick/Controls/Button.qml:99: TypeError: Cannot read property of null
file:///usr/lib/x86_64-linux-gnu/qt5/qml/QtQuick/Controls/Button.qml:99: TypeError: Cannot read property of null
file:///usr/share/plasma/plasmoids/org.kde.plasma.taskmanager/contents/ui/Task.qml:44:32: Unable to assign [undefined] to int
file:///usr/share/plasma/plasmoids/org.kde.plasma.taskmanager/contents/ui/Task.qml:327: Unable to assign [undefined] to QString
file:///usr/share/plasma/plasmoids/org.kde.plasma.taskmanager/contents/ui/Task.qml:303: Unable to assign [undefined] to int
file:///usr/share/plasma/plasmoids/org.kde.plasma.taskmanager/contents/ui/Task.qml:44:32: Unable to assign [undefined] to int
file:///usr/share/plasma/shells/org.kde.plasma.desktop/contents/views/Desktop.qml:166: TypeError: Cannot read property 'showingDialog' of null
KActivities: Database connection:  "kactivities_db_resources_140363698260160_readonly" 
    query_only:          QVariant(qlonglong, 1) 
    journal_mode:        QVariant(QString, "wal") 
    wal_autocheckpoint:  QVariant(qlonglong, 100) 
    synchronous:         QVariant(qlonglong, 0)
Closing SQL connection:  "kactivities_db_resources_140363698260160_readonly"
file:///usr/lib/x86_64-linux-gnu/qt5/qml/QtQuick/Controls/Button.qml:99: TypeError: Cannot read property of null
file:///usr/lib/x86_64-linux-gnu/qt5/qml/QtQuick/Controls/Button.qml:99: TypeError: Cannot read property of null
file:///usr/lib/x86_64-linux-gnu/qt5/qml/QtQuick/Controls/Button.qml:99: TypeError: Cannot read property of null
file:///usr/lib/x86_64-linux-gnu/qt5/qml/QtQuick/Controls/Button.qml:99: TypeError: Cannot read property of null
file:///usr/lib/x86_64-linux-gnu/qt5/qml/QtQuick/Controls/Button.qml:99: TypeError: Cannot read property of null
file:///usr/share/plasma/plasmoids/org.kde.plasma.taskmanager/contents/ui/Task.qml:44:32: Unable to assign [undefined] to int
file:///usr/share/plasma/plasmoids/org.kde.plasma.taskmanager/contents/ui/Task.qml:303: Unable to assign [undefined] to int
file:///usr/share/plasma/shells/org.kde.plasma.desktop/contents/views/Desktop.qml:166: TypeError: Cannot read property 'showingDialog' of null
file:///usr/share/plasma/plasmoids/org.kde.plasma.taskmanager/contents/ui/Task.qml:44:32: Unable to assign [undefined] to int
file:///usr/lib/x86_64-linux-gnu/qt5/qml/QtQuick/Controls/Button.qml:99: TypeError: Cannot read property of null
file:///usr/lib/x86_64-linux-gnu/qt5/qml/QtQuick/Controls/Button.qml:99: TypeError: Cannot read property of null
file:///usr/lib/x86_64-linux-gnu/qt5/qml/QtQuick/Controls/Button.qml:99: TypeError: Cannot read property of null
file:///usr/lib/x86_64-linux-gnu/qt5/qml/QtQuick/Controls/Button.qml:99: TypeError: Cannot read property of null
file:///usr/lib/x86_64-linux-gnu/qt5/qml/QtQuick/Controls/Button.qml:99: TypeError: Cannot read property of null
file:///usr/share/plasma/shells/org.kde.plasma.desktop/contents/views/Desktop.qml:166: TypeError: Cannot read property 'showingDialog' of null
file:///usr/share/plasma/plasmoids/org.kde.plasma.taskmanager/contents/ui/Task.qml:44:32: Unable to assign [undefined] to int
file:///usr/share/plasma/plasmoids/org.kde.plasma.taskmanager/contents/ui/Task.qml:44:32: Unable to assign [undefined] to int
KCrash: crashing... crashRecursionCounter = 2
KCrash: Application Name = plasmashell path = /usr/bin pid = 2485
KCrash: Arguments: /usr/bin/plasmashell 
Erreur de segmentation
Comment 4 Eike Hein 2017-02-09 07:56:59 UTC
Thank you! But unfortunately shell output isn't a backtrace ... the shell output indicates that the crash handler is starting, are you sure you don't get a tray icon for it after restarting plasmashell? You can click on the tray icon to get the crash dialog and the backtrace.
Comment 5 AGui 2017-02-09 08:57:52 UTC
No, nothing in the systray. Should any specific packages be installed for it to work ? Isn't there a log file somewhere that I can send you ?
Comment 6 Ivan Čukić 2017-02-13 08:20:25 UTC
If the crash dialogue does not appear, nor the crash icon in the tray, you could try using gdb directly:

    gdb plasmashell

It will load the plasmashell binary and give you an output. Just type

    run

and it will start plasma.

When it crashes, just type

    where

and copy the output you got here.
Comment 7 AGui 2017-02-13 21:07:14 UTC
Created attachment 104020 [details]
gdb plasmashell output
Comment 8 AGui 2017-02-13 21:07:45 UTC
Created attachment 104021 [details]
Backtrace in KCrash
Comment 9 AGui 2017-02-13 21:10:14 UTC
Ok, good news. I have got a KCrash icon in the systray today after starting again plasmashell. I attached both the backtrace from KCrash (which says it is not very useful...) and the output of gdb plasmashell, which seems to give a different information. Hope this helps.
Comment 10 Ivan Čukić 2017-02-14 22:28:39 UTC
You'll need to install the packages which contain the debugging information.

This is unfortunately not helpful:

[KCrash Handler]
#6  0x00007f0d790a2336 in ?? ()
#7  0x0000000002befb90 in ?? ()
#8  0x00007f0e2ad6af1c in QQmlData::signalEmitted(QAbstractDeclarativeData*, QObject*, int, void**) () from /usr/lib/x86_64-linux-gnu/libQt5Qml.so.5
Comment 11 AGui 2017-02-15 11:25:07 UTC
Ah sorry for that. I installed libqt5qml5-dbgsym, libkf5plasma5-dbgsym, plasma-framework-dbgsym, libkf5plasma5-dbgsym. Are any other needed ?

I updated to Plasma 5.9.2 today. The bug is still there, but unfortunately, I haven't manage to get a KCrash window again... I noticed that gdb has a "backtrace" command, I can provide its output if needed.

Also, I am surprised that you can't reproduce the bug with the steps I included in my first report. I tried it on the KDE Neon User Edition Live CD (20170209) in a virtual machine and the bugs is triggered by following exactly these steps, so it doesn't seem to be related to my setup.
Comment 12 Eike Hein 2017-02-15 13:43:37 UTC
I can sort of reproduce it now, including the "double Konsole launcher" thing. Here's a backtrace from one of my crashes, not quite the steps from the report, but in that ballpark:

#0  0x00007ffff0bdf7ef in __memmove_avx_unaligned_erms () at /lib64/libc.so.6
#1  0x00007ffff1945dd0 in QVector<int>::erase(int*, int*) (aend=<optimized out>, abegin=<optimized out>, this=0xedee30)
    at ../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qvector.h:766
#2  0x00007ffff1945dd0 in QVector<int>::remove(int, int) (n=<optimized out>, i=5, this=0xedee30) at ../../include/QtCore/../../../../qt5/qtbase/src/corelib/tools/qvector.h:450
#3  0x00007ffff1945dd0 in QSortFilterProxyModelPrivate::remove_proxy_interval(QVector<int>&, QVector<int>&, int, int, QModelIndex const&, Qt::Orientation, bool) (emit_signal=true, orient=Qt::Vertical, proxy_parent=..., proxy_end=<optimized out>, proxy_start=5, proxy_to_source=..., source_to_proxy=..., this=0xeec670)
    at /home/eike/devel/src/qt5/qtbase/src/corelib/itemmodels/qsortfilterproxymodel.cpp:592
#4  0x00007ffff1945dd0 in QSortFilterProxyModelPrivate::remove_source_items(QVector<int>&, QVector<int>&, QVector<int> const&, QModelIndex const&, Qt::Orientation, bool) (this=this@entry=0xeec670, source_to_proxy=..., proxy_to_source=..., source_items=..., source_parent=..., orient=orient@entry=Qt::Vertical, emit_signal=true)
    at /home/eike/devel/src/qt5/qtbase/src/corelib/itemmodels/qsortfilterproxymodel.cpp:568
#5  0x00007ffff1947474 in QSortFilterProxyModelPrivate::handle_filter_changed(QVector<int>&, QVector<int>&, QModelIndex const&, Qt::Orientation) (orient=Qt::Vertical, source_parent=..., proxy_to_source=..., source_to_proxy=..., this=0xeec670) at /home/eike/devel/src/qt5/qtbase/src/corelib/itemmodels/qsortfilterproxymodel.cpp:1152
#6  0x00007ffff1947474 in QSortFilterProxyModelPrivate::filter_changed(QModelIndex const&) (this=0xeec670, source_parent=...)
    at /home/eike/devel/src/qt5/qtbase/src/corelib/itemmodels/qsortfilterproxymodel.cpp:1084
#7  0x00007ffff1947cd1 in QSortFilterProxyModel::invalidateFilter() (this=<optimized out>) at /home/eike/devel/src/qt5/qtbase/src/corelib/itemmodels/qsortfilterproxymodel.cpp:2591
#8  0x00007fff2ee73dd8 in TaskManager::TaskFilterProxyModel::setActivity(QString const&) (this=0xeebb80, activity=...)
    at /home/eike/devel/src/kde/workspace/plasma-workspace/libtaskmanager/taskfilterproxymodel.cpp:118
#9  0x00007fff2ee84b29 in TaskManager::TasksModel::setActivity(QString const&) (this=0xed39f0, activity=...)
    at /home/eike/devel/src/kde/workspace/plasma-workspace/libtaskmanager/tasksmodel.cpp:919
#10 0x00007fff2eeb13d1 in TaskManager::TasksModel::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (_o=0xed39f0, _c=QMetaObject::WriteProperty, _id=6, _a=0x7fffffffa390)
    at /home/eike/devel/build/kde/workspace/plasma-workspace/libtaskmanager/moc_tasksmodel.cpp:613
#11 0x00007ffff4c736ef in QQmlPropertyData::writeProperty(QObject*, void*, QFlags<QQmlPropertyData::WriteFlag>) const (flags=..., value=0x7fffffffa360, target=<optimized out>, this=0x7fffc4448478) at /home/eike/devel/src/qt5-build/qtbase/include/QtQml/5.8.1/QtQml/private/../../../../../../../qt5/qtdeclarative/src/qml/qml/qqmlpropertycache_p.h:320
#12 0x00007ffff4c736ef in GenericBinding<10>::doStore<QString>(QString, QQmlPropertyData const*, QFlags<QQmlPropertyData::WriteFlag>) const (flags=..., pd=0x7fffc4448478, value=..., this=0xee8400) at /home/eike/devel/src/qt5/qtdeclarative/src/qml/qml/qqmlbinding.cpp:295
#13 0x00007ffff4c736ef in GenericBinding<10>::write(QV4::Value const&, bool, QFlags<QQmlPropertyData::WriteFlag>) (this=0xee8400, result=..., isUndefined=<optimized out>, flags=...)
    at /home/eike/devel/src/qt5/qtdeclarative/src/qml/qml/qqmlbinding.cpp:276
#14 0x00007ffff4c74110 in QQmlNonbindingBinding::doUpdate(QQmlJavaScriptExpression::DeleteWatcher const&, QFlags<QQmlPropertyData::WriteFlag>, QV4::Scope&) (this=0xee8400, watcher=..., flags=..., scope=...) at /home/eike/devel/src/qt5/qtdeclarative/src/qml/qml/qqmlbinding.cpp:210
#15 0x00007ffff4c713eb in QQmlBinding::update(QFlags<QQmlPropertyData::WriteFlag>) (this=0xee8400, flags=..., flags@entry=...)
    at /home/eike/devel/src/qt5/qtdeclarative/src/qml/qml/qqmlbinding.cpp:167
#16 0x00007ffff4c7163e in QQmlBinding::refresh() (this=<optimized out>) at /home/eike/devel/src/qt5/qtdeclarative/src/qml/qml/qqmlbinding.cpp:439
Comment 13 Eike Hein 2017-02-15 13:50:16 UTC
I think I roughly know what's happening, fix could be a bit tricky, we'll see.
Comment 14 Eike Hein 2017-02-16 12:55:41 UTC
Patch under review: https://phabricator.kde.org/D4631
Comment 15 Eike Hein 2017-02-16 12:57:45 UTC
Git commit 05826bd5ba25f6ed7be94ff8d760d6c8372f148c by Eike Hein.
Committed on 16/02/2017 at 12:57.
Pushed by hein into branch 'Plasma/5.8'.

Fix crash when switching activities.

Summary:
What happens:
* Activity switch calls invalidateFilter on TaskFilterProxyModel,
  which may remove rows in response.
* Up the proxy chain, TasksModel may ask LauncherTasksModel to
  emit dataChanged for its contents in response to the row removal,
  to cause its own filtering to re-evaluate the launchers for the
  life cycle logic.
* This can cause TFPM to do more filtering before invalidateFilter
  has actually returned, causing trip-ups such as duplicated rows
  in the proxy.
* Eventually the corrupted maps cause a memory corruption crash.

This patch changes step 2 to "find the launchers in the TFPM (the
direct source model) and ask for a dataChanged for each". This
costs us a loop and accesses to IsLauncher, but on the other hand
fixes the crash and avoids a lot of filtering and mapping work
between LTM and up to and including TFPM. It's also just better
code to ask for the dataChanged only from the model we need it
from.

Reviewers: #plasma, davidedmundson

Subscribers: plasma-devel

Tags: #plasma

Differential Revision: https://phabricator.kde.org/D4631

M  +7    -3    libtaskmanager/tasksmodel.cpp

https://commits.kde.org/plasma-workspace/05826bd5ba25f6ed7be94ff8d760d6c8372f148c
Comment 16 Marco Martin 2017-03-06 18:19:23 UTC
*** Bug 376255 has been marked as a duplicate of this bug. ***