From: cedric Date: Mon, 9 May 2011 12:54:47 +0000 (+0000) Subject: eina: improve lock debugging. X-Git-Tag: 2.0_alpha~70^2~63 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2e154a3f894aa947cebaa5a139c9ea0f2dcf26f4;p=framework%2Fuifw%2Feina.git eina: improve lock debugging. git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/eina@59293 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- diff --git a/src/include/eina_inline_lock_posix.x b/src/include/eina_inline_lock_posix.x index 7c957fe..52c81b1 100644 --- a/src/include/eina_inline_lock_posix.x +++ b/src/include/eina_inline_lock_posix.x @@ -73,6 +73,18 @@ EAPI extern pthread_mutex_t _eina_tracking_lock; EAPI extern Eina_Inlist *_eina_tracking; #endif +static inline void +eina_lock_debug(const Eina_Lock *mutex) +{ +#ifdef EINA_HAVE_DEBUG_THREADS + printf("lock %p, locked: %i, by %i\n", + mutex, (int)mutex->locked, (int)mutex->lock_thread_id); + backtrace_symbols_fd((void **)mutex->lock_bt, mutex->lock_bt_num, 1); +#else + (void) mutex; +#endif +} + static inline Eina_Bool eina_lock_new(Eina_Lock *mutex) { @@ -159,7 +171,9 @@ eina_lock_take(Eina_Lock *mutex) else if (ok == EDEADLK) { printf("ERROR ERROR: DEADLOCK on lock %p\n", mutex); + eina_lock_debug(mutex); ret = EINA_LOCK_DEADLOCK; // magic + if (_eina_threads_debug) abort(); } #ifdef EINA_HAVE_DEBUG_THREADS @@ -251,18 +265,6 @@ eina_lock_release(Eina_Lock *mutex) return ret; } -static inline void -eina_lock_debug(const Eina_Lock *mutex) -{ -#ifdef EINA_HAVE_DEBUG_THREADS - printf("lock %p, locked: %i, by %i\n", - mutex, (int)mutex->locked, (int)mutex->lock_thread_id); - backtrace_symbols_fd((void **)mutex->lock_bt, mutex->lock_bt_num, 1); -#else - (void) mutex; -#endif -} - static inline Eina_Bool eina_condition_new(Eina_Condition *cond, Eina_Lock *mutex) {