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)
{
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
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)
{