Практика показывает, что в таких случаях баг чаще всего вызван многопоточностью. То есть, когда несколько частей программы выполняются одновременно. Многопоточность -- действительно сложная тема со множеством подводных камней.
Если вы обнаружили подобный баг, то следует проверить следующее:
1) Что доступ к внешним устройствам есть только у одного потока. Если есть сомнения, следует сделать специальную функцию доступа к нему, которая будет работать через взаимоисключение (т.е. мьютекс, критическая секция и пр.). Весь доступ к устройству должен осуществляться через неё.
2) Что доступ к внутренним ресурсам (особенно, к памяти) размером больше ширины шины данных тоже сделан через взаимоисключения (см. примечание ниже).
3) И, наконец, что вы не применяете многопоточно библиотеки, которые для этого не предназначены. Если предназначены, обычно стоит пометка в документации -- thread-safe. Одна из таких библиотек, которая не предназначена -- VCL (C++ Builder, Delphi). Когда-то я не знал, что она не поддерживает многопоточность и менял, к примеру, надписи на кнопках из разных потоков. Это приводило к совершенно невообразимым глюкам.
Внимание. Примечание к п.2. На некоторых процессорах доступ к невыровненным данным выполняется в несколько тактов. Выровненными считаются данные, расположенные по адресам, равным n*ширина шины данных, где n -- целое неотрицательное число. Т.е. если ваша переменная размером 4 байта расположена по адресу 13, то её считывание на 32-битном процессоре может происходит следующим образом: процессор считывает байты 12-15, сохраняет во временный регистр, потом 16-19, сохраняет в другой регистр, сдвигает 12-15 влево на 8 бит, записывает старшие 24 бита в старшие 24 бита целевого регистра, потом сдгвигает 16-19 вправо на 24 бита, записывает младшие 8 бит в младшие 8 бит целевого регистра. Данный алгоритм является примером, фактическая реализация может быть иной. За это время потоки могли переключиться уже несколько раз. Будьте осторожны. Если же адрес переменной изначально был 12, то всё проходит в 1 такт.