#include <pthread.h> #include <stdio.h> #include <stdlib.h> #include <assert.h> /* The simplest possible test that triggers a lock order acquisition error. */ int main ( void ) { int r; pthread_mutex_t mx1, mx2; r = pthread_mutex_init( &mx1, NULL ); assert(r==0); r = pthread_mutex_init( &mx2, NULL ); assert(r==0); r = pthread_mutex_lock( &mx1 ); assert(r==0); r = pthread_mutex_lock( &mx2 ); assert(r==0); r = pthread_mutex_unlock( &mx1 ); assert(r==0); r = pthread_mutex_unlock( &mx2 ); assert(r==0); r = pthread_mutex_lock( &mx2 ); assert(r==0); /* error */ r = pthread_mutex_lock( &mx1 ); assert(r==0); r = pthread_mutex_unlock( &mx1 ); assert(r==0); r = pthread_mutex_unlock( &mx2 ); assert(r==0); r = pthread_mutex_destroy( &mx1 ); r = pthread_mutex_destroy( &mx2 ); return 0; }