Summary: | Nepomuk service stub crash when using external USB disk | ||
---|---|---|---|
Product: | nepomuk | Reporter: | fatgerman |
Component: | general | Assignee: | Sebastian Trueg <trueg> |
Status: | RESOLVED FIXED | ||
Severity: | crash | CC: | jjm, me |
Priority: | NOR | ||
Version: | unspecified | ||
Target Milestone: | --- | ||
Platform: | Ubuntu | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Attachments: |
Patch against Soprano
Patch to fix as per comment #3 |
Description
fatgerman
2011-10-06 12:35:53 UTC
Created attachment 64286 [details]
Patch against Soprano
This patch fixes a possible multi-threading problem in Soprano. It would be very helpful if you could test if this fixes the crash.
Git commit 40c2afb47d6922004825b3bfd0543061f0f7bdc4 by Sebastian Trueg. Committed on 17/10/2011 at 11:12. Pushed by trueg into branch 'master'. Protect the prefix map with a mutex. BUG: 283466 M +8 -6 soprano/nrlmodel.cpp M +1 -1 soprano/nrlmodel.h http://commits.kde.org/soprano/40c2afb47d6922004825b3bfd0543061f0f7bdc4 Reopening because the commit above appears to cause a hang in Soprano::NRLModel::Private::buildPrefixMap(), called via Nepomuk::Repository::updateInference() during Nepomuk initialisation. Soprano::NRLModel::executeQuery() attempts to lock the m_prefixMapMutex mutex, but it has already been locked in buildPrefixMap(). If the mutex is needed in both these places then it needs to be a recursive mutex. The attached patch implements this - the mutex recursion mode can only be set during initialisation, so it needs to be changed to an explicitly allocated pointer. Created attachment 64740 [details] Patch to fix as per comment #3 Git commit ae0050b3b63e510c15e23d7da410736489dc4b30 by Sebastian Trueg. Committed on 21/10/2011 at 09:59. Pushed by trueg into branch '2.7'. Fixed a deadlock in NRLModel caused by a non-recursive mutex. Thanks to Jonathan Marten for the hint. BUG: 283466 M +2 -1 soprano/nrlmodel.cpp http://commits.kde.org/soprano/ae0050b3b63e510c15e23d7da410736489dc4b30 |