Инверсия приоритетов
Высокоприоритетная задача фактически ждёт низкоприоритетную, потому что на пути стоит задача со средним приоритетом.
Нужны три задачи. Низкая держит мьютекс. Высокая хочет тот же мьютекс и блокируется. Средняя, которой мьютекс вообще не нужен, становится готовой и вытесняет Низкую — так что Низкая не может отпустить блокировку. Высокая теперь ждёт Среднюю, хотя планировщик делает ровно то, что ему велено.
Знаменитый случай произошёл на Марсе в 1997 году: посадочный модуль Pathfinder постоянно перезагружался по сигналу сторожевого таймера. В JPL воспроизвели ошибку на копии на Земле и командой с Земли включили наследование приоритетов в VxWorks: тот, кто держит блокировку, временно получает наивысший приоритет из ожидающих её. Решение опубликовали Ша, Раджкумар и Лехочки ещё в 1990 году. Альтернатива — потолок приоритета — применяется, в частности, в Ada и AUTOSAR.