Если проектировать код похожим образом (на C++ без глобальных объектов), т.е. как я указывать в самом начале этой темы, то:
Цитата(SasaVitebsk @ Jan 20 2017, 11:08)

1. классическая, то есть глобальная переменная которая модифицируется в разных задачах или прерываниях при этом не предусмотрены средства контроля за этим.
Этого никогда не произойдет, т. к. нет ни одного глобального объекта.
Цитата
2. неверная работа с указателем.
Указатели не используется, лишь ссылки на объекты, и то очень многие с квалификатором const. Нужно изрядно постараться, чтобы навредить ))
Т.к. нет указателей, то приведение типов НИГДЕ не используется, а это - тоже очень частая причина неконтроллируемых сбоев.
Цитата
3. более сложная. Какой либо буфер выходит за пределы и портит указатель или переменную, а эта переменная уже начинает косячить..
Самодельных буферов нет, есть давно отлаженные и вылизанные классы, которые реализуют работу буферов.
Нет никакого смыслы изобретать колесо в каждом проекте и потом его каждый раз отлаживать -
за нас уже придуманы и написаны шаблоны списков, очередей, контейнеров и т. п.
Цитата
4. стек задачи выходит за пределы.
Контроль стека средствами RTOS с соотв. отладочной информацией. Это уже встроено во всех нормальных RTOS.
Эти все сущности однажды написаны и отлажены, поэтому нет никакой нужды
в каждом проекте лечить подобный "анальный зуд"!
Впрочем, у каждого свои предпочтения

зы. Речь идет лишь о коде приложения, а не о коде сторонних библиотек, где наверняка используются указатели, самодельные буферы и т. п. наследия голого С