Aaron Richton wrote:
On Tue, 10 Nov 2015, Cl?ment OUDOT wrote:
Could it be a problem on my build machine?
Not directly IMO. Some (older?) pthreads implementations are PTHREAD_MUTEX_ROBUST_NP, etc.
one thing to try would be:
#ifdef PTHREAD_MUTEX_ROBUST_NP #define PTHREAD_MUTEX_ROBUST PTHREAD_MUTEX_ROBUST_NP #define pthread_mutexattr_setrobust pthread_mutexattr_setrobust_np #define pthread_mutex_consistent pthread_mutex_consistent_np #endif
Unfortunately, PTHREAD_MUTEX_ROBUST_NP is an enum, not a macro, so #ifdef won't work to detect it.
The attached patch should work. Please report back; I won't merge it unless we know it actually helps.
which might also need:
|| (rc = pthread_mutexattr_setrobust(&mattr,
PTHREAD_MUTEX_ROBUST))
|| (rc = pthread_mutexattr_setprotocol(&mattr,
PTHREAD_PRIO_INHERIT)) || (rc = pthread_mutex_init(env->me_txns->mti_rmutex, &mattr))
or you can just -DMDB_USE_ROBUST=0, but I don't think the platform is *that* hopeless...