This is an automatically generated e-mail. To reply, visit: http://git.reviewboard.kde.org/r/105507/

Ship it!

Could you please add a FIXME in the comment? Just so that it becomes more obvious.

- Vishesh


On July 10th, 2012, 3:57 p.m., David Faure wrote:

Review request for Nepomuk and Release Team.
By David Faure.

Updated July 10, 2012, 3:57 p.m.

Description

Fix crash due to other threads using the model at the time it gets deleted. No proper solution found though, with the current API.

Testing

Running nepomukqueryservice in valgrind gave this:

"/d/kde/inst/kde4.9/bin/nepomukservicestub(19732)" Soprano: "Timeout (5)": "Command timed out."
==19732== Thread 3:
==19732== Invalid read of size 8
==19732==    at 0xC5AB6DA: QPointer<Soprano::Client::ClientConnection>::operator->() const (qpointer.h:74)
==19732==    by 0xC5AA70A: Soprano::Client::ClientModel::executeQuery(QString const&, Soprano::Query::QueryLanguage, QString const&) const (clientmodel.cpp:106)
==19732==    by 0x68E9319: Nepomuk2::MainModel::executeQuery(QString const&, Soprano::Query::QueryLanguage, QString const&) const (nepomukmainmodel.cpp:182)
==19732==    by 0x12BDDEED: Nepomuk2::Query::SearchRunnable::run() (searchrunnable.cpp:89)
==19732==    by 0x4ECA2FC: QThreadPoolThread::run() (qthreadpool.cpp:107)
==19732==    by 0x4EDAF27: QThreadPrivate::start(void*) (qthread_unix.cpp:307)
==19732==    by 0x53CCF04: start_thread (in /lib64/libpthread-2.14.1.so)
==19732==    by 0x86CD10C: clone (in /lib64/libc-2.14.1.so)
==19732==  Address 0x117af938 is 72 bytes inside a block of size 80 free'd
==19732==    at 0x4C28706: operator delete(void*) (vg_replace_malloc.c:457)
==19732==    by 0xC5AA2ED: Soprano::Client::ClientModel::~ClientModel() (clientmodel.cpp:58)
==19732==    by 0x68E8BAB: (anonymous namespace)::GlobalModelContainer::init(bool) (nepomukmainmodel.cpp:82)
==19732==    by 0x68E8E58: (anonymous namespace)::GlobalModelContainer::model() (nepomukmainmodel.cpp:100)
==19732==    by 0x68E932D: Nepomuk2::MainModel::executeQuery(QString const&, Soprano::Query::QueryLanguage, QString const&) const (nepomukmainmodel.cpp:183)
==19732==    by 0x12BDDEED: Nepomuk2::Query::SearchRunnable::run() (searchrunnable.cpp:89)
==19732==    by 0x4ECA2FC: QThreadPoolThread::run() (qthreadpool.cpp:107)
==19732==    by 0x4EDAF27: QThreadPrivate::start(void*) (qthread_unix.cpp:307)
==19732==    by 0x53CCF04: start_thread (in /lib64/libpthread-2.14.1.so)
==19732==    by 0x86CD10C: clone (in /lib64/libc-2.14.1.so)
==19732== 

No crash anymore after this "fix"...

Diffs

  • libnepomukcore/resource/nepomukmainmodel.cpp (ba2626f)

View Diff