Bug 226218 - Soprano lockups (freezes) in trunk, e.g. with Konqueror
Summary: Soprano lockups (freezes) in trunk, e.g. with Konqueror
Status: RESOLVED FIXED
Alias: None
Product: nepomuk
Classification: Miscellaneous
Component: general (show other bugs)
Version: unspecified
Platform: Compiled Sources Unspecified
: NOR normal
Target Milestone: ---
Assignee: Sebastian Trueg
URL:
Keywords:
: 226154 (view as bug list)
Depends on:
Blocks:
 
Reported: 2010-02-10 23:42 UTC by Christoph Feck
Modified: 2010-10-26 14:01 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Christoph Feck 2010-02-10 23:42:32 UTC
Version:            (using Devel)
Installed from:    Compiled sources

Since commit r1087828 I get regular lockups inside Konqueror, for example when starting it, but also while browsing. Nepomuk is disabled in systemsettings. I have full trunk installed, that includes playground stuff.

Backtrace while Konqueror freezes on startup (I have yet to find out how to create a backtrace with all threads included):

#0  0xffffe424 in __kernel_vsyscall ()
#1  0xb687a899 in __lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S:142
#2  0xb68783e6 in pthread_cond_signal@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S:174
#3  0xb68ed33c in QMutexPrivate::wakeUp (this=0x85624b0) at thread/qmutex_unix.cpp:111
#4  0xb68e87e5 in QMutex::unlock (this=0x856229c) at thread/qmutex.cpp:384
#5  0xb3d12ad9 in QMutexLocker::unlock() () from /local/kde4/lib/libqca.so.2
#6  0xb3d12a8f in QMutexLocker::~QMutexLocker() () from /local/kde4/lib/libqca.so.2
#7  0xaf744668 in Soprano::Client::ClientConnection::~ClientConnection() () from /local/kde4/lib/libsopranoclient.so.1
#8  0xaf742ec6 in Soprano::Client::LocalSocketClientConnection::~LocalSocketClientConnection() () from /local/kde4/lib/libsopranoclient.so.1
#9  0xaf743802 in Soprano::Client::LocalSocketClient::disconnect() () from /local/kde4/lib/libsopranoclient.so.1
#10 0xaf743729 in Soprano::Client::LocalSocketClient::connect(QString const&) () from /local/kde4/lib/libsopranoclient.so.1
#11 0xaf954fac in (anonymous namespace)::GlobalModelContainer::init (this=0x855b870, forced=true) at /local/svn/kde/trunk/KDE/kdelibs/nepomuk/core/nepomukmainmodel.cpp:101
#12 0xaf9558d2 in Nepomuk::MainModel::init (this=0x854d248) at /local/svn/kde/trunk/KDE/kdelibs/nepomuk/core/nepomukmainmodel.cpp:188
#13 0xaf94ff12 in Nepomuk::ResourceManager::init (this=0x8551a28) at /local/svn/kde/trunk/KDE/kdelibs/nepomuk/core/resourcemanager.cpp:297
#14 0xaf580685 in Nepomuk::KonquerorTaskPlugin::KonquerorTaskPlugin (this=0x854efc8, parent=0x845c4c0, __in_chrg=<value optimized out>, __vtt_parm=<value optimized out>)
    at /local/svn/kde/trunk/playground/base/nepomuk-kde/konqueror/taskplugin/konquerortaskplugin.cpp:85
#15 0xaf58247f in KPluginFactory::createInstance<Nepomuk::KonquerorTaskPlugin, QObject> (parentWidget=0x0, parent=0x845c4c0, args=...) at /local/kde4/include/KDE/../kpluginfactory.h:461
#16 0xb77ad310 in KPluginFactory::create (this=0x853d268, iface=0xb75af69c "KParts::Plugin", parentWidget=0x0, parent=0x845c4c0, args=..., keyword=...)
    at /local/svn/kde/trunk/KDE/kdelibs/kdecore/util/kpluginfactory.cpp:191
#17 0xb7596d9c in KPluginFactory::create<KParts::Plugin> (this=0x853d268, keyword=..., parent=0x845c4c0, args=...) at /local/svn/kde/trunk/KDE/kdelibs/kdecore/util/kpluginfactory.h:503
#18 0xb759670f in KLibLoader::createInstance<KParts::Plugin> (keyword=..., libname=..., parent=0x845c4c0, args=..., error=0x0) at /local/svn/kde/trunk/KDE/kdelibs/kdecore/util/klibloader.h:219
#19 0xb7595c07 in KLibLoader::createInstance<KParts::Plugin> (libname=..., parent=0x845c4c0, args=..., error=0x0) at /local/svn/kde/trunk/KDE/kdelibs/kdecore/util/klibloader.h:250
#20 0xb7594218 in KParts::Plugin::loadPlugin (parent=0x845c4c0, libname=...) at /local/svn/kde/trunk/KDE/kdelibs/kparts/plugin.cpp:190
#21 0xb7594ca6 in KParts::Plugin::loadPlugins (parent=0x845c4c0, parentGUIClient=0x845c4d4, componentData=..., enableNewPluginsByDefault=true, interfaceVersionRequired=0)
---Type <return> to continue, or q <return> to quit---q
Comment 1 Christoph Feck 2010-02-10 23:52:02 UTC
I can confirm that using Soprano r1082162 fixes the lockups again (with the rest of the system current trunk).
Comment 2 Sebastian Trueg 2010-02-11 10:25:48 UTC
SVN commit 1088551 by trueg:

unlock the mutex before deleting it.

BUG: 226218


 M  +2 -1      clientconnection.cpp  


WebSVN link: http://websvn.kde.org/?view=rev&revision=1088551
Comment 3 Sebastian Trueg 2010-02-11 13:34:24 UTC
*** Bug 226154 has been marked as a duplicate of this bug. ***
Comment 4 Sebastian Trueg 2010-10-26 14:01:53 UTC
commit bebb50871961ec19431ceb250e349b42be8e4aea
branch 2.5
Author: Sebastian Trueg <sebastian@trueg.de>
Date:   Thu Feb 11 09:25:44 2010 +0000

    unlock the mutex before deleting it.
    
    BUG: 226218
    
    svn path=/trunk/kdesupport/soprano/; revision=1088551

diff --git a/client/clientconnection.cpp b/client/clientconnection.cpp
index e75e70b..2d2fed8 100644
--- a/client/clientconnection.cpp
+++ b/client/clientconnection.cpp
@@ -71,12 +71,13 @@ Soprano::Client::ClientConnection::ClientConnection( QObject* parent )
 
 Soprano::Client::ClientConnection::~ClientConnection()
 {
-    QMutexLocker lock( &d->socketMutex );
+    d->socketMutex.lock();
     // the sockets need to be deleted in their respective threads.
     // this is what d->socketStorage does. We only close them here.
     foreach( QIODevice* socket, d->sockets ) {
         socket->close();
     }
+    d->socketMutex.unlock();
     delete d;
 }