From a712dc92423a31a4d3ab34fe660df550feebf442 Mon Sep 17 00:00:00 2001 From: root Date: Tue, 13 Sep 2011 23:14:39 +0000 Subject: Tue Sep 13 23:14:39 UTC 2011 --- extra/akonadi/PKGBUILD | 14 +++++--- extra/akonadi/fix-slow-kde-logout.patch | 64 +++++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+), 4 deletions(-) create mode 100644 extra/akonadi/fix-slow-kde-logout.patch (limited to 'extra/akonadi') diff --git a/extra/akonadi/PKGBUILD b/extra/akonadi/PKGBUILD index 96798a34d..cb61420ae 100644 --- a/extra/akonadi/PKGBUILD +++ b/extra/akonadi/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 132788 2011-07-26 07:38:52Z andrea $ +# $Id: PKGBUILD 137927 2011-09-12 16:08:18Z andrea $ # Maintainer: Andrea Scarpino # Contributor: Pierre Schmitz pkgname=akonadi pkgver=1.6.0 -pkgrel=2 +pkgrel=3 pkgdesc="PIM layer, which provides an asynchronous API to access all kind of PIM data" arch=('i686' 'x86_64') url='http://pim.kde.org/akonadi' @@ -12,10 +12,16 @@ license=('LGPL') depends=('shared-mime-info' 'boost-libs' 'mysql' 'soprano') makedepends=('pkgconfig' 'cmake' 'automoc4' 'boost') install="${pkgname}.install" -source=("http://download.kde.org/stable/${pkgname}/src/${pkgname}-${pkgver}.tar.bz2") -md5sums=('16bc40e022d06f287f18c71faaeb2e42') +source=("http://download.kde.org/stable/${pkgname}/src/${pkgname}-${pkgver}.tar.bz2" + 'fix-slow-kde-logout.patch') +md5sums=('16bc40e022d06f287f18c71faaeb2e42' + 'cdf0c3bd5741303e4f98ea435c39f09d') build() { + # Already fixed upstream + cd "${srcdir}"/${pkgname}-${pkgver} + patch -p1 -i "${srcdir}"/fix-slow-kde-logout.patch + cd "${srcdir}" mkdir build cd build diff --git a/extra/akonadi/fix-slow-kde-logout.patch b/extra/akonadi/fix-slow-kde-logout.patch new file mode 100644 index 000000000..49228ef8b --- /dev/null +++ b/extra/akonadi/fix-slow-kde-logout.patch @@ -0,0 +1,64 @@ +commit c8e45b10c32679bf070af5b7ad9a22b91eb9a02c +Author: Sergio Martins +Date: Mon Sep 12 13:48:33 2011 +0100 + + Fix crash on agent_launcher exit. + + Don't unload plugins here. They will be unloaded on application exit, + so it's redundant. + + Seems they are being unloaded too early, before QThreadStorage + cleanup occurs: + + ==18802== Invalid read of size 8 + ==18802== at 0x53178AE: QThreadStorage::deleteData(void*) (in + /data/installation/qt/qt-4.7/lib/libQtGui.so.4.7.1) + ==18802== by 0x5E8F8CF: QThreadStorageData::set(void*) + (qthreadstorage.cpp:165) + ==18802== by 0x5317940: void + qThreadStorage_setLocalData(QThreadStorageData&, QFontCache**) + (qthreadstorage.h:92) + ==18802== by 0x53165BA: + QThreadStorage::setLocalData(QFontCache*) (qthreadstorage.h:148) + ==18802== by 0x531407A: QFontCache::cleanup() (qfont.cpp:2632) + ==18802== by 0x5406536: QFont::cleanup() (qfont_x11.cpp:182) + ==18802== by 0x5104E35: qt_cleanup() (qapplication_x11.cpp:2647) + ==18802== by 0x50603B2: QApplication::~QApplication() + (qapplication.cpp:1172) + ==18802== by 0x41B1F6: main (agentlauncher.cpp:28) + ==18802== Address 0x11a090b0 is not stack'd, malloc'd or (recently) free'd + + CCBUG: 261788 + +diff --git a/agentserver/agentpluginloader.cpp b/agentserver/agentpluginloader.cpp +index 2d62d3b..456a124 100644 +--- a/agentserver/agentpluginloader.cpp ++++ b/agentserver/agentpluginloader.cpp +@@ -25,13 +25,8 @@ using namespace Akonadi; + + AgentPluginLoader::~AgentPluginLoader() + { +- QHash::iterator it = m_pluginLoaders.begin(); +- while ( it != m_pluginLoaders.end() ) { +- it.value()->unload(); +- ++it; +- } +- + qDeleteAll( m_pluginLoaders ); ++ m_pluginLoaders.clear(); + } + + QPluginLoader *AgentPluginLoader::load( const QString &pluginName ) +diff --git a/agentserver/agentpluginloader.h b/agentserver/agentpluginloader.h +index 77f5de9..c8c815f 100644 +--- a/agentserver/agentpluginloader.h ++++ b/agentserver/agentpluginloader.h +@@ -26,7 +26,7 @@ class AgentPluginLoader + { + public: + /** +- Unloads and deletes all instantiated QPluginLoaders. ++ Deletes all instantiated QPluginLoaders. + */ + ~AgentPluginLoader(); + -- cgit v1.2.3-54-g00ecf