Bug 1421167 - plasma-workspace crash after logging.
Summary: plasma-workspace crash after logging.
Keywords:
Status: CLOSED UPSTREAM
Alias: None
Product: Fedora
Classification: Fedora
Component: plasma-workspace
Version: 26
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: KDE SIG
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2017-02-10 14:17 UTC by eddy02
Modified: 2017-03-07 12:06 UTC (History)
8 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2017-03-07 12:06:25 UTC
Type: Bug


Attachments (Terms of Use)


Links
System ID Priority Status Summary Last Updated
KDE Software Compilation 376508 None None None 2017-03-07 12:06:24 UTC

Description eddy02 2017-02-10 14:17:14 UTC
Plasma-workspace crash after logging since  kf5 framework update to 5.31 

Dmesg output:

17.825019] ksplashqml[1270]: segfault at 7fffaff98fc0 ip 00007f7f12430a0b sp 00007fffaff98fc0 error 6 in libc-2.24.90.so[7f7f123a9000+1c3000]


Rebuilding  plasma-workspace and plasma-desktop with the new framework not solves the issue.

Comment 1 Rex Dieter 2017-02-12 14:14:44 UTC
Any chance of a full backtrace?

Otherwise, on the surface, the immediate crash is happening in glibc

Comment 2 eddy02 2017-02-13 14:52:25 UTC
Same issue when rebuilding all plasma packages to 5.9.1.

Seem's to be a kf5 framework issue.
I will try to downgrade every package one by one  to find the problem.

 
Another backtrace

Thread 1 "ksplashqml" received signal SIGSEGV, Segmentation fault.
0x00007ffff59d61f2 in QJsonPrivate::Parser::parseObject() () from /lib64/libQt5Core.so.5
(gdb) bt
#0  0x00007ffff59d61f2 in QJsonPrivate::Parser::parseObject() () from /lib64/libQt5Core.so.5
#1  0x00007ffff59d6897 in QJsonPrivate::Parser::parseValue(QJsonPrivate::Value*, int) () from /lib64/libQt5Core.so.5
#2  0x00007ffff59d6d35 in QJsonPrivate::Parser::parseArray() () from /lib64/libQt5Core.so.5
#3  0x00007ffff59d6953 in QJsonPrivate::Parser::parseValue(QJsonPrivate::Value*, int) () from /lib64/libQt5Core.so.5
#4  0x00007ffff59d6bc0 in QJsonPrivate::Parser::parseMember(int) () from /lib64/libQt5Core.so.5
#5  0x00007ffff59d6352 in QJsonPrivate::Parser::parseObject() () from /lib64/libQt5Core.so.5
#6  0x00007ffff59d6897 in QJsonPrivate::Parser::parseValue(QJsonPrivate::Value*, int) () from /lib64/libQt5Core.so.5
#7  0x00007ffff59d6bc0 in QJsonPrivate::Parser::parseMember(int) () from /lib64/libQt5Core.so.5
#8  0x00007ffff59d6352 in QJsonPrivate::Parser::parseObject() () from /lib64/libQt5Core.so.5
#9  0x00007ffff59d74f4 in QJsonPrivate::Parser::parse(QJsonParseError*) () from /lib64/libQt5Core.so.5
#10 0x00007ffff59ccc1e in QJsonDocument::fromJson(QByteArray const&, QJsonParseError*) () from /lib64/libQt5Core.so.5
#11 0x00007ffff69df0ff in KPluginMetaData::KPluginMetaData(QString const&) () from /lib64/libKF5CoreAddons.so.5
#12 0x00007ffff730b3c0 in KPackage::PackagePrivate::createPackageMetadata(QString const&) () from /lib64/libKF5Package.so.5
#13 0x00007ffff730d6c5 in KPackage::Package::metadata() const () from /lib64/libKF5Package.so.5
#14 0x00007ffff730eada in KPackage::Package::setPath(QString const&) () from /lib64/libKF5Package.so.5
#15 0x00007fffdc5d3bc8 in LookAndFeelPackage::initPackage (this=<optimized out>, package=0x7fffff7ff810)
    at /home/edmond/rpmbuild/BUILD/plasma-workspace-5.9.1/shell/packageplugins/lookandfeel/lookandfeel.cpp:84
#16 0x00007ffff730a5cd in KPackage::Package::Package(KPackage::PackageStructure*) () from /lib64/libKF5Package.so.5
#17 0x00007ffff7315bef in KPackage::PackageLoader::loadPackage(QString const&, QString const&) () from /lib64/libKF5Package.so.5
#18 0x00007fffdc5d47af in LookAndFeelPackage::pathChanged (this=<optimized out>, package=0x7fffff7ffac0)
    at /home/edmond/rpmbuild/BUILD/plasma-workspace-5.9.1/shell/packageplugins/lookandfeel/lookandfeel.cpp:96
#19 0x00007ffff730e9f8 in KPackage::Package::setPath(QString const&) () from /lib64/libKF5Package.so.5
#20 0x00007fffdc5d3bc8 in LookAndFeelPackage::initPackage (this=<optimized out>, package=0x7fffff7ffac0)
    at /home/edmond/rpmbuild/BUILD/plasma-workspace-5.9.1/shell/packageplugins/lookandfeel/lookandfeel.cpp:84
#21 0x00007ffff730a5cd in KPackage::Package::Package(KPackage::PackageStructure*) () from /lib64/libKF5Package.so.5
#22 0x00007ffff7315bef in KPackage::PackageLoader::loadPackage(QString const&, QString const&) () from /lib64/libKF5Package.so.5
#23 0x00007fffdc5d47af in LookAndFeelPackage::pathChanged (this=<optimized out>, package=0x7fffff7ffd70)
    at /home/edmond/rpmbuild/BUILD/plasma-workspace-5.9.1/shell/packageplugins/lookandfeel/lookandfeel.cpp:96
#24 0x00007ffff730e9f8 in KPackage::Package::setPath(QString const&) () from /lib64/libKF5Package.so.5
#25 0x00007fffdc5d3bc8 in LookAndFeelPackage::initPackage (this=<optimized out>, package=0x7fffff7ffd70)
    at /home/edmond/rpmbuild/BUILD/plasma-workspace-5.9.1/shell/packageplugins/lookandfeel/lookandfeel.cpp:84
#26 0x00007ffff730a5cd in KPackage::Package::Package(KPackage::PackageStructure*) () from /lib64/libKF5Package.so.5
#27 0x00007ffff7315bef in KPackage::PackageLoader::loadPackage(QString const&, QString const&) () from /lib64/libKF5Package.so.5
#28 0x00007fffdc5d47af in LookAndFeelPackage::pathChanged (this=<optimized out>, package=0x7fffff800020)
    at /home/edmond/rpmbuild/BUILD/plasma-workspace-5.9.1/shell/packageplugins/lookandfeel/lookandfeel.cpp:96
#29 0x00007ffff730e9f8 in KPackage::Package::setPath(QString const&) () from /lib64/libKF5Package.so.5
#30 0x00007fffdc5d3bc8 in LookAndFeelPackage::initPackage (this=<optimized out>, package=0x7fffff800020)
    at /home/edmond/rpmbuild/BUILD/plasma-workspace-5.9.1/shell/packageplugins/lookandfeel/lookandfeel.cpp:84
#31 0x00007ffff730a5cd in KPackage::Package::Package(KPackage::PackageStructure*) () from /lib64/libKF5Package.so.5
#32 0x00007ffff7315bef in KPackage::PackageLoader::loadPackage(QString const&, QString const&) () from /lib64/libKF5Package.so.5
#33 0x00007fffdc5d47af in LookAndFeelPackage::pathChanged (this=<optimized out>, package=0x7fffff8002d0)
    at /home/edmond/rpmbuild/BUILD/plasma-workspace-5.9.1/shell/packageplugins/lookandfeel/lookandfeel.cpp:96
#34 0x00007ffff730e9f8 in KPackage::Package::setPath(QString const&) () from /lib64/libKF5Package.so.5
#35 0x00007fffdc5d3bc8 in LookAndFeelPackage::initPackage (this=<optimized out>, package=0x7fffff8002d0)
    at /home/edmond/rpmbuild/BUILD/plasma-workspace-5.9.1/shell/packageplugins/lookandfeel/lookandfeel.cpp:84
#36 0x00007ffff730a5cd in KPackage::Package::Package(KPackage::PackageStructure*) () from /lib64/libKF5Package.so.5
#37 0x00007ffff7315bef in KPackage::PackageLoader::loadPackage(QString const&, QString const&) () from /lib64/libKF5Package.so.5
#38 0x00007fffdc5d47af in LookAndFeelPackage::pathChanged (this=<optimized out>, package=0x7fffff800580)
    at /home/edmond/rpmbuild/BUILD/plasma-workspace-5.9.1/shell/packageplugins/lookandfeel/lookandfeel.cpp:96
#39 0x00007ffff730e9f8 in KPackage::Package::setPath(QString const&) () from /lib64/libKF5Package.so.5
#40 0x00007fffdc5d3bc8 in LookAndFeelPackage::initPackage (this=<optimized out>, package=0x7fffff800580)
    at /home/edmond/rpmbuild/BUILD/plasma-workspace-5.9.1/shell/packageplugins/lookandfeel/lookandfeel.cpp:84
#41 0x00007ffff730a5cd in KPackage::Package::Package(KPackage::PackageStructure*) () from /lib64/libKF5Package.so.5
#42 0x00007ffff7315bef in KPackage::PackageLoader::loadPackage(QString const&, QString const&) () from /lib64/libKF5Package.so.5
#43 0x00007fffdc5d47af in LookAndFeelPackage::pathChanged (this=<optimized out>, package=0x7fffff800830)
    at /home/edmond/rpmbuild/BUILD/plasma-workspace-5.9.1/shell/packageplugins/lookandfeel/lookandfeel.cpp:96
#44 0x00007ffff730e9f8 in KPackage::Package::setPath(QString const&) () from /lib64/libKF5Package.so.5
#45 0x00007fffdc5d3bc8 in LookAndFeelPackage::initPackage (this=<optimized out>, package=0x7fffff800830)
    at /home/edmond/rpmbuild/BUILD/plasma-workspace-5.9.1/shell/packageplugins/lookandfeel/lookandfeel.cpp:84
-

Comment 3 Rex Dieter 2017-02-13 14:56:30 UTC
possible too that plasma-5.9 changed how theming/looknfeel works in some non-backward-compatible way.

Comment 4 eddy02 2017-02-13 17:23:58 UTC
Downgrading kf5-kpackage and its depencies (kf5-kcoreaddons kf5-ki18n) solves the crash.

Plasma starts now,I'll try to find another debugging mode.
Thanks for your help.

Comment 5 eddy02 2017-02-14 09:42:00 UTC
Found the reason of the crash.

A kf5-kpackage upstream patch:


From e6d72cb9df6f55b3f463a5acfcad6a7bafe4bd81 Mon Sep 17 00:00:00 2001
From: Aleix Pol <aleixpol@kde.org>
Date: Thu, 29 Dec 2016 01:12:23 +0100
Subject: Improve installation process of KPackage bundles

When parsing the desktop files, pass together the kpackage-generic.desktop
service type, so that the parser knows its intrinsic types (most especially
 X-KPackage-Dependencies which is in fact added now). This is important
because otherwise we get warnings when we extract the value when the
package is a desktop file.

This would be much less of a problem if desktop service types could be
extended, but it's not the case at the moment.

REVIEW: 129716
---
 .../data/servicetypes/kpackage-generic.desktop        |  2 ++
 src/kpackage/package.cpp                              | 19 ++++++++++++++-----
 src/kpackage/private/packagejobthread.cpp             |  8 +++++---
 3 files changed, 21 insertions(+), 8 deletions(-)

diff --git a/src/kpackage/data/servicetypes/kpackage-generic.desktop b/src/kpackage/data/servicetypes/kpackage-generic.desktop
index 879d3b2..73e9077 100644
--- a/src/kpackage/data/servicetypes/kpackage-generic.desktop
+++ b/src/kpackage/data/servicetypes/kpackage-generic.desktop
@@ -8,3 +8,5 @@ Type=QString
 [PropertyDef::X-Plasma-MainScript]
 Type=QString
 
+[PropertyDef::X-KPackage-Dependencies]
+Type=QStringList
diff --git a/src/kpackage/package.cpp b/src/kpackage/package.cpp
index c032e6e..adc2a6e 100644
--- a/src/kpackage/package.cpp
+++ b/src/kpackage/package.cpp
@@ -921,17 +921,26 @@ void PackagePrivate::updateHash(const QString &basePath, const QString &subPath,
 
 void PackagePrivate::createPackageMetadata(const QString &path)
 {
+    static QString kpackageGenericService = QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral("kservicetypes5/kpackage-generic.desktop"));
     delete metadata;
 
     const bool isDir = QFileInfo(path).isDir();
-    if (isDir && QFile::exists(path + "/metadata.desktop")) {
-        metadata = new KPluginMetaData(path + "/metadata.desktop");
-    } else if (isDir && QFile::exists(path + "/metadata.json")) {
+
+    if (isDir && QFile::exists(path + "/metadata.json")) {
         metadata = new KPluginMetaData(path + "/metadata.json");
+    } else if (isDir && QFile::exists(path + "/metadata.desktop")) {
+        Q_ASSERT(!kpackageGenericService.isEmpty());
+        auto md = KPluginMetaData::fromDesktopFile(path + "/metadata.desktop", {kpackageGenericService});
+        metadata = new KPluginMetaData(md);
     } else {
-        if (isDir)
+        if (isDir) {
             qWarning() << "No metadata file in the package, expected it at:" << path;
-        metadata = new KPluginMetaData(path);
+        } else if (path.endsWith(".desktop")) {
+            auto md = KPluginMetaData::fromDesktopFile(path, {kpackageGenericService});
+            metadata = new KPluginMetaData(md);
+        } else {
+            metadata = new KPluginMetaData(path);
+        }
     }
 }
 
diff --git a/src/kpackage/private/packagejobthread.cpp b/src/kpackage/private/packagejobthread.cpp
index 8697341..fe187f0 100644
--- a/src/kpackage/private/packagejobthread.cpp
+++ b/src/kpackage/private/packagejobthread.cpp
@@ -40,6 +40,7 @@
 #include <qtemporarydir.h>
 #include <QProcess>
 #include <QUrl>
+#include <QStandardPaths>
 #include <QDebug>
 
 namespace KPackage
@@ -292,9 +293,10 @@ bool PackageJobThread::installPackage(const QString &src, const QString &dest, O
     KPluginMetaData meta;
     if (!entries.isEmpty()) {
         const QString metadataFilePath = entries.first().filePath();
-        if (metadataFilePath.endsWith(QLatin1String(".desktop")))
-            meta = KPluginMetaData(metadataFilePath);
-        else {
+        if (metadataFilePath.endsWith(QLatin1String(".desktop"))) {
+            static QString kpackageGenericService = QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral("kservicetypes5/kpackage-generic.desktop"));
+            meta = KPluginMetaData::fromDesktopFile(metadataFilePath, {kpackageGenericService});
+        } else {
             QFile f(metadataFilePath);
             if(!f.open(QIODevice::ReadOnly)){
                 qWarning() << "Couldn't open metadata file" << src << path;
-- 
cgit v0.11.2



Reverting the patch solves the issue.

Comment 6 Rex Dieter 2017-02-14 12:55:48 UTC
Mind reporting it upstream so they have a chance to fix it?

Comment 7 Fedora End Of Life 2017-02-28 11:14:52 UTC
This bug appears to have been reported against 'rawhide' during the Fedora 26 development cycle.
Changing version to '26'.

Comment 8 Juha Nikkanen 2017-03-07 09:32:52 UTC
I have this exact same problem with my Fedora 24 installation, after updating kf5 to version 5.31. Shall I write a new bug or clone this one for Fedora 24?

Comment 9 Rex Dieter 2017-03-07 12:06:25 UTC
This issue should be fixed with plasma-5.8.6, f24 builds are:
https://bodhi.fedoraproject.org/updates/FEDORA-2017-c262a33752

We can close this one and track upstream,
http://bugs.kde.org/376508


Note You need to log in before you can comment on or make changes to this bug.