When created, a VxWorks mutex object accepts a boolean parameter that indicates whether priority inheritance should be
performed by the mutex. The mutex in question had been initialized with the parameter off; had it been on, the lowpriority
meteorological thread would have inherited the priority of the highpriority
data bus thread blocked on it while it
held the mutex, causing it be scheduled with higher priority than the mediumpriority
communications task, thus
preventing the priority inversion. Once diagnosed, it was clear to the JPL engineers that using priority inheritance would
prevent the resets they were seeing.