Summary: | "Mimetype tree is not a DAG!" errors + crashes when using SMI 0.91 | ||
---|---|---|---|
Product: | [Frameworks and Libraries] Akonadi | Reporter: | Alin M Elena <alinm.elena> |
Component: | libakonadi | Assignee: | kdepim bugs <kdepim-bugs> |
Status: | VERIFIED FIXED | ||
Severity: | crash | CC: | a, balcaen.john, bjo, bruno, daniel, faure, jhunt, nedrigaylov.arz, nzlbob2332, robert, scarpino, v.krivotulov, vkrause, wstephenson |
Priority: | NOR | ||
Version: | unspecified | ||
Target Milestone: | --- | ||
Platform: | Compiled Sources | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | 4.7.3 |
Description
Alin M Elena
2011-10-08 18:05:39 UTC
Seems to be an OpenSuse regression in their 12.1 release. The origin isn't identified yet. ok, the cause was found by Andrea Scarpino. Downgrading shared-mime-info from 0.91 to 0.90 fixes the bug immediately. Adding David. *** Bug 283436 has been marked as a duplicate of this bug. *** *** Bug 283828 has been marked as a duplicate of this bug. *** I reported this upstream https://bugs.freedesktop.org/show_bug.cgi?id=41701 After bisecting the SMI repo, this commit is the one causing this bug: b465cec3db4056f6871ce3d5ab97d987c3f7799f is the first bad commit commit b465cec3db4056f6871ce3d5ab97d987c3f7799f Author: Ville Skyttä <ville.skytta@iki.fi> Date: Sat Jun 18 22:20:00 2011 +0300 Use text/vcard instead of deprecated text/directory for vCards. :100644 100644 4802c8fcbda96994b5ac8747e88db5e5757ff085 92d5c6c187caeffc2a62b96ffc090c9a75fb2c6d M freedesktop.org.xml.in :040000 040000 1788265ab6e0a09da25eaf2dcd8646dc8469551e 5a9a63836b373be9606fd72bdd8c754760f3f791 M tests So is the aliasing of text/vcard to text/directory in KMimeType failing? Christophe, do you know if the not a DAG results from some type that we are looking for being disconnected from text/vcard? I couldn't find any mimetypes that directly inherit text/directory in the kde mimetype xml in /usr/share/mime. renamed text/directory, added alias: http://cgit.freedesktop.org/xdg/shared-mime-info/commit/?id=b465cec3db4056f6871ce3d5ab97d987c3f7799f failing function: http://lxr.kde.org/source/kde/kdepimlibs/akonadi/typepluginloader.cpp#289 *** Bug 283833 has been marked as a duplicate of this bug. *** Found the workaround for 0.91: kaddressbook(10595)/libkdepim Akonadi::PluginLoader::scan: registering Desktop file "/kde/inst/kdepim-runtime/share/apps/akonadi/plugins/serializer/akonadi_serializer_addressee.desktop" for ("text/vcard", "text/directory") @ ("legacy", "default", "KABC::Addressee") removing text/directory from the types declared in this desktop file fixes the issue with SMI 0.91 but obviously breaks with 0.90 (in kdepim-runtime) diff --git a/plugins/akonadi_serializer_addressee.desktop b/plugins/akonadi_serializer_addressee.desktop index 1e4205a..7b8a5a4 100644 --- a/plugins/akonadi_serializer_addressee.desktop +++ b/plugins/akonadi_serializer_addressee.desktop @@ -89,7 +89,7 @@ Comment[zh_CN]=对收信人对象进行序列转换的 Akonadi 插件 Comment[zh_TW]=地址物件的 Akonadi 序列器外掛程式 [Plugin] -Type=text/vcard,text/directory +Type=text/vcard X-Akonadi-Class=legacy;default;KABC::Addressee; X-KDE-Library=akonadi_serializer_addressee X-KDE-ClassName=Akonadi::SerializerPluginAddressee (In reply to comment #9) > removing text/directory from the types declared in this desktop file fixes the > issue with SMI 0.91 but obviously breaks with 0.90 Confirmed. Great! Can we apply this patch in our packages? Not sure. Looks like removing text/vcard gives better results with both versions. Please test with all kinds of resources providing contacts (vcard, contacts directory, akonadi-google * 2, kolab, dav, akonadi-facebook...) Debug output from TypePluginLoader's findBestMatchImpl () function: (on saving a new contact in kaddressbook): kaddressbook(10184)/kdecore (KSycoca) KSycocaPrivate::openDatabase: Trying to open ksycoca from "/var/tmp/kdecache-testuser/ksycoca4" kaddressbook(10184)/libkdepim Akonadi::PluginLoader::scan: registering Desktop file "/home/space/kde/installs/48/share/apps/akonadi/plugins/serializer/akonadi_serializer_kalarm.desktop" for ("application/x-vnd.kde.alarm", "application/x-vnd.kde.alarm.active", "application/x-vnd.kde.alarm.archived", "application/x-vnd.kde.alarm.template") @ ("default", "KAEvent") kaddressbook(10184)/libkdepim Akonadi::PluginLoader::scan: registering Desktop file "/home/space/kde/installs/48/share/apps/akonadi/plugins/serializer/akonadi_serializer_bookmark.desktop" for ("application/x-xbel") @ ("legacy", "default", "KBookmark") kaddressbook(10184)/libkdepim Akonadi::PluginLoader::scan: registering Desktop file "/home/space/kde/installs/48/share/apps/akonadi/plugins/serializer/akonadi_serializer_addressee.desktop" for ("text/vcard", "text/directory") @ ("legacy", "default", "KABC::Addressee") kaddressbook(10184)/libkdepim Akonadi::PluginLoader::scan: registering Desktop file "/home/space/kde/installs/48/share/apps/akonadi/plugins/serializer/akonadi_serializer_kcalcore.desktop" for ("text/calendar", "application/x-vnd.akonadi.note", "application/x-vnd.kde.notes") @ ("default", "KCalCore::Incidence*") kaddressbook(10184)/libkdepim Akonadi::PluginLoader::scan: registering Desktop file "/home/space/kde/installs/48/share/apps/akonadi/plugins/serializer/akonadi_serializer_microblog.desktop" for ("application/x-vnd.kde.microblog") @ ("legacy", "default", "Microblog::StatusItem") kaddressbook(10184)/libkdepim Akonadi::PluginLoader::scan: registering Desktop file "/home/space/kde/installs/48/share/apps/akonadi/plugins/serializer/akonadi_serializer_contactgroup.desktop" for ("application/x-vnd.kde.contactgroup") @ ("legacy", "default", "KABC::ContactGroup") kaddressbook(10184)/libkdepim Akonadi::PluginLoader::scan: registering Desktop file "/home/space/kde/installs/48/share/apps/akonadi/plugins/serializer/akonadi_serializer_kcal.desktop" for ("text/calendar", "application/x-vnd.akonadi.note", "application/x-vnd.kde.notes") @ ("legacy", "KCal::Incidence*") kaddressbook(10184)/libkdepim Akonadi::PluginLoader::scan: registering Desktop file "/home/space/kde/installs/48/share/apps/akonadi/plugins/serializer/akonadi_serializer_mail.desktop" for ("message/rfc822", "message/news", "text/x-vnd.akonadi.note") @ ("legacy", "default", "KMime::Message*") kaddressbook(10184)/libakonadi Akonadi::PluginRegistry::PluginRegistry: ItemSerializerPluginLoader: found 44 plugins. kaddressbook(10184)/libakonadi Akonadi::PluginRegistry::findBestMatchImpl: searching for type plugin for "text/directory" kaddressbook(10184)/libakonadi Akonadi::PluginRegistry::findBestMatchImpl: "text/vcard" matches: "application/octet-stream" kaddressbook(10184)/libakonadi Akonadi::PluginRegistry::findBestMatchImpl: "text/vcard" matches: "text/directory" kaddressbook(10184)/libakonadi Akonadi::PluginRegistry::findBestMatchImpl: "text/vcard" matches: "text/vcard" kaddressbook(10184)/libakonadi Akonadi::PluginRegistry::findBestMatchImpl: adding "text/vcard" to graph kaddressbook(10184)/libakonadi Akonadi::PluginRegistry::findBestMatchImpl: adding "text/vcard" to graph kaddressbook(10184)/libakonadi Akonadi::PluginRegistry::findBestMatchImpl: adding "text/vcard" to graph kaddressbook(10184)/libakonadi Akonadi::PluginRegistry::findBestMatchImpl: adding "text/vcard" to graph kaddressbook(10184)/libakonadi Akonadi::PluginRegistry::findBestMatchImpl: trying topo sort kaddressbook(10184)/libakonadi Akonadi::PluginRegistry::findBestMatchImpl: Mimetype tree is not a DAG! kaddressbook(10184)/libakonadi Akonadi::PluginRegistry::findBestMatchImpl: searching for type plugin for "text/directory" kaddressbook(10184)/libakonadi Akonadi::PluginRegistry::findBestMatchImpl: "text/vcard" matches: "application/octet-stream" kaddressbook(10184)/libakonadi Akonadi::PluginRegistry::findBestMatchImpl: "text/vcard" matches: "text/directory" kaddressbook(10184)/libakonadi Akonadi::PluginRegistry::findBestMatchImpl: "text/vcard" matches: "text/vcard" kaddressbook(10184)/libakonadi Akonadi::PluginRegistry::findBestMatchImpl: adding "text/vcard" to graph kaddressbook(10184)/libakonadi Akonadi::PluginRegistry::findBestMatchImpl: adding "text/vcard" to graph kaddressbook(10184)/libakonadi Akonadi::PluginRegistry::findBestMatchImpl: adding "text/vcard" to graph kaddressbook(10184)/libakonadi Akonadi::PluginRegistry::findBestMatchImpl: adding "text/vcard" to graph kaddressbook(10184)/libakonadi Akonadi::PluginRegistry::findBestMatchImpl: trying topo sort kaddressbook(10184)/libakonadi Akonadi::PluginRegistry::findBestMatchImpl: Mimetype tree is not a DAG! kaddressbook(10184)/libakonadi Akonadi::PluginRegistry::findBestMatchImpl: searching for type plugin for "text/directory" kaddressbook(10184)/libakonadi Akonadi::PluginRegistry::findBestMatchImpl: "text/vcard" matches: "application/octet-stream" kaddressbook(10184)/libakonadi Akonadi::PluginRegistry::findBestMatchImpl: "text/vcard" matches: "text/directory" kaddressbook(10184)/libakonadi Akonadi::PluginRegistry::findBestMatchImpl: "text/vcard" matches: "text/vcard" kaddressbook(10184)/libakonadi Akonadi::PluginRegistry::findBestMatchImpl: adding "text/vcard" to graph kaddressbook(10184)/libakonadi Akonadi::PluginRegistry::findBestMatchImpl: adding "text/vcard" to graph kaddressbook(10184)/libakonadi Akonadi::PluginRegistry::findBestMatchImpl: adding "text/vcard" to graph kaddressbook(10184)/libakonadi Akonadi::PluginRegistry::findBestMatchImpl: adding "text/vcard" to graph kaddressbook(10184)/libakonadi Akonadi::PluginRegistry::findBestMatchImpl: trying topo sort kaddressbook(10184)/libakonadi Akonadi::PluginRegistry::findBestMatchImpl: Mimetype tree is not a DAG! Qt has caught an exception thrown from an event handler. Throwing exceptions from an event handler is not supported in Qt. You must reimplement QApplication::notify() and catch all exceptions there. terminate called after throwing an instance of 'Akonadi::PayloadException' what(): Akonadi::PayloadException: Wrong payload type (requested: sp(0)<QByteArray>; present: sp(0)<KABC::Addressee> KCrash: Application 'kaddressbook' crashing... K you need to re-run kbuildsycoca4 --noincremental after up/downgrading smi or changing the desktop file *** Bug 283876 has been marked as a duplicate of this bug. *** *** Bug 283751 has been marked as a duplicate of this bug. *** Volker, please can you have a look at this soon? Hacking the types in the plugin's desktop file is only postponing the problem. *** Bug 283505 has been marked as a duplicate of this bug. *** That code is resolving aliases everywhere, except in the list of mimetypes that it initially gets from the pluginloader (i.e. from the .desktop file I assume). Does this patch help? http://www.davidfaure.fr/2011/typepluginloader.cpp.diff (can't test it myself, currently setting up my new home computer for kde development) Yes, no crash with your patch and 0.91 Git commit e86bd47521fffd2d28d048c7d8ab6c4e6a4d909a by David Faure. Committed on 16/10/2011 at 17:13. Pushed by dfaure into branch 'master'. Resolve alias read from the desktop file too. Fixes a crash with shared-mime-info 0.91 where text/directory was replaced with text/vcard (which was made an alias). BUG: 283615 FIXED-IN: 4.7.3 M +9 -6 akonadi/typepluginloader.cpp http://commits.kde.org/kdepimlibs/e86bd47521fffd2d28d048c7d8ab6c4e6a4d909a Git commit 70197a817da44ff406e52ea0dd8ba3b2416c3097 by David Faure. Committed on 16/10/2011 at 17:13. Pushed by dfaure into branch 'KDE/4.7'. Resolve alias read from the desktop file too. Fixes a crash with shared-mime-info 0.91 where text/directory was replaced with text/vcard (which was made an alias). BUG: 283615 FIXED-IN: 4.7.3 (cherry picked from commit e86bd47521fffd2d28d048c7d8ab6c4e6a4d909a) M +9 -6 akonadi/typepluginloader.cpp http://commits.kde.org/kdepimlibs/70197a817da44ff406e52ea0dd8ba3b2416c3097 Fixed, have added the patch to openSUSE packages. *** Bug 284453 has been marked as a duplicate of this bug. *** Downstream report: https://bugzilla.novell.com/show_bug.cgi?id=725243 *** Bug 284983 has been marked as a duplicate of this bug. *** *** Bug 285307 has been marked as a duplicate of this bug. *** |