[arch-commits] Commit in akonadi/trunk (PKGBUILD fix-slow-kde-logout.patch)

Andrea Scarpino andrea at archlinux.org
Mon Sep 12 16:07:17 UTC 2011


    Date: Monday, September 12, 2011 @ 12:07:17
  Author: andrea
Revision: 137926

upgpkg: akonadi 1.6.0-3

Fix slow KDE logout

Added:
  akonadi/trunk/fix-slow-kde-logout.patch
Modified:
  akonadi/trunk/PKGBUILD

---------------------------+
 PKGBUILD                  |   12 ++++++--
 fix-slow-kde-logout.patch |   64 ++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 73 insertions(+), 3 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2011-09-12 15:53:17 UTC (rev 137925)
+++ PKGBUILD	2011-09-12 16:07:17 UTC (rev 137926)
@@ -4,7 +4,7 @@
 
 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 @@
 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

Added: fix-slow-kde-logout.patch
===================================================================
--- fix-slow-kde-logout.patch	                        (rev 0)
+++ fix-slow-kde-logout.patch	2011-09-12 16:07:17 UTC (rev 137926)
@@ -0,0 +1,64 @@
+commit c8e45b10c32679bf070af5b7ad9a22b91eb9a02c
+Author: Sergio Martins <iamsergio at gmail.com>
+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<QFontCache*>::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<QFontCache>(QThreadStorageData&, QFontCache**)
+    (qthreadstorage.h:92)
+    ==18802==    by 0x53165BA:
+    QThreadStorage<QFontCache*>::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<QString, QPluginLoader*>::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();
+ 




More information about the arch-commits mailing list