[Kde-pim] [Nepomuk] nepomukqueryservice crash
Vishesh Handa
me at vhanda.in
Tue Jul 10 13:00:47 BST 2012
On Mon, Jul 9, 2012 at 7:18 PM, David Faure <faure at kde.org> wrote:
> On Monday 09 July 2012 16:53:31 Vishesh Handa wrote:
> > I don't think it's a threading problem cause m_initMutex is locked before
> > deleting it, and before accessing it.
>
> That doesn't help. MainModel::executeQuery gets a pointer to a ClientModel
> inside the lock, and then return an iterator which keeps using that
> ClientModel outside the lock (or its ClientConnection, more precisely).
>
Yes, but the iterator which it receives is of type
Soprano::Client::ClientQueryResultIterator. This iterator just contains an
iterator id, and a pointer to the model. Before each operation performed on
the iterator, it check if the model pointer is not null .. aha!
The pointer will always be 'not null'.
> So this opens the door for crashes, whenever the code that deletes the
> model
> is run.
>
So you're right, we cannot delete the model.
Or maybe we could use some kind of pointer wrapper which check for
deletions. I'm not sure if Qt provides this. Either way it seems messy.
> --
> David Faure, faure at kde.org, http://www.davidfaure.fr
> Sponsored by Nokia to work on KDE, incl. KDE Frameworks 5
>
> _______________________________________________
> Nepomuk mailing list
> Nepomuk at kde.org
> https://mail.kde.org/mailman/listinfo/nepomuk
>
--
Vishesh Handa
_______________________________________________
KDE PIM mailing list kde-pim at kde.org
https://mail.kde.org/mailman/listinfo/kde-pim
KDE PIM home page at http://pim.kde.org/
More information about the kde-pim
mailing list