I encountered “kernel BUG” which was reported in the rt_mutex_top_waiter() at kernel/rtmutex_common.h:75. Linux version: 3.12.37-rt51; CONFIG_PREEMPT_RT_FULL is disabled. Architecture: PowerPC We ported an application from pSOS RTOS to Linux using the Xenomai-Mercury (=library to map pSOS task to POSIX threads). And We have several threads running in the real-time priority domain. ThreadA: running at prio -59. pthread_mutex_lock() + pthread_cond_timedwait() + pthread_mutex_unlock() ThreadB: running at prio -84. pthread_mutex_lock() + pthread_cond_signal() + pthread_mutex_unlock() ThreadA: ------ ------ futex_wait_requeue_pi() futex_wait_queue_me() <timed out> raw_spin_lock_irq(¤t->pi_lock); if (current->pi_blocked_on) { raw_spin_unlock_irq(¤t->pi_lock); } else { current->pi_blocked_on = PI_WAKEUP_INPROGRESS; raw_spin_unlock_irq(¤t->pi_lock); <-- ThreadA was interrupted and preempted! spin_lock(&hb->lock); ThreadB: ------ ------ rt_mutex_start_proxy_lock(); task_blocks_on_rt_mutex(); <-- return "-EAGAIN" due to "task->pi_blocked_on == PI_WAKEUP_INPROGRESS" ... if (unlikely(ret)) remove_waiter(lock, waiter); int first = (waiter == rt_mutex_top_waiter(lock)); <-- BUG_ON(w->lock != lock); It seems that the purpose to call the remove_waiter() is to remove the waiter added by “plist_add(&waiter->list_entry, &lock->wait_list);” in the task_blocks_on_rt_mutex(). But in the scenario above there's no waiter on the lock yet and the waiter has not been added into the wait list of the lock in the task_blocks_on_rt_mutex() due to the failure “-EAGAIN”. So it reported kernel BUG in the rt_mutex_top_waiter(). I modified it as below and the issue seems disappear. - if (unlikely(ret)) + if (unlikely(ret && (-EAGAIN != ret))) remove_waiter(lock, waiter); Could the scenario above be possible? If so, how to resolve this issue? Thanks! B.R. Yimin Deng -- To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html