Не у меня, но в моей практике:
htrd.su/wiki/zhurnal/2013/09/18/zabavnyj_bag
Ещё:
Останавливался шедулер ThreadX и, соответственно, продолжал выполняться только один тред, либо, когда доходило до кооперативного передачи управления. Проблема: отображённый в память регистр регистр управления таймером после записи не сразу возвращает, при чтении, новое значение. Плюс один регистр использовался для двух таймеров, соответственно, что настроить второй, нужно вычитать значение, подправить его и записать обратно, что бы параметры первого не перезаписать. Планировщик на время решедулинга гасил свой таймер, а потом активировал. Но случалось так, что после активирования не сразу обновлялся, а к этому моменту наш код успевал вычитать регистр, с погашенным значением, активировал свой таймер и записывал. В результате таймер планировщика оказывался выключенным. Гонки в прямом смысле не было: доступ планировщика из прерывания, а наш код запускается непосредственно им уже после активации. Ситуация усугублялась тем, что система могла некоторое время работать за счёт кооперативной многозадачности (например, при блокировке на мутексе, вызывается дополнительно код, проверяющий, а не готов ли какой тред, и запускает его, участие планировщика тут не нужно, аналогично при вызове других системных процедур, типа sleep(), ожидание треда и т.п.), но гасло часто в непредсказуемый момент. Это embedded ;-)