No response to my message of last week, so let me try again.  It's pretty 
simple: librdf_cache_set_common locks the world mutex, calls 
librdf_cache_cleanup, which calls librdf_cache_delete, which locks the world 
mutex.  pthreads mutexes are non-recursive by default, thus deadlock.  So I can 
fix this by setting PTHREAD_MUTEX_RECURSIVE at init time, but how was this 
supposed to work?

Further, there's this from librdf_free_cache:
     LIBRDF_FREE(librdf_cache, cache);

   #ifdef WITH_THREADS
     pthread_mutex_unlock(cache->world->mutex);
   #endif

So I'm just not feeling confident about Redland's thread support in general.  
Can anyone allay my concerns?

_______________________________________________
redland-dev mailing list
[email protected]
http://lists.librdf.org/mailman/listinfo/redland-dev

Reply via email to