Priority inversion
Priority inversion is the scenario where a low priority task holds a shared resource on which a high priority task sleeps, thus causing the high priority task to wait while a medium priority task keeps preempting the low priority task.
Most of the cases, the delaying of high priority process goes unnoticed. But there can be many occasions where it will be noticeable and will cause considerable amount of damage. If the high priority task is left starving for the resources, it might lead to a system malfunction or triggering of some pre-defined corrective measures, such as a watch dog timer resetting the entire system. Troubles experianced by the Mars lander "Pathfinder" is a classic example of problems caused by priority inversion in realtime systems.
This was known in 1970s but there are not many fool-proof mechanism to predict the same. However, there are many solutions that exist to solve this problem. The most common ones are 1) priority inheritance and 2) priority ceiling.
In the first method, the low priority thread will inherit the priority of high priority process, thus stoping the medium priority process from preempting the low priority process. In the second case, the shared mutex pocess a characteristic (high) priority of its own, which is assigned to the thread locking the mutex. This works well, provided the other high priority process that try to access the mutex does not have a priority higher than the ceiling priority.
Explantion of priority inversion problem experienced by pathfinder