Странная вещь случилась. Просто поделиться, не для обсуждения (а то
начнётся "где схема")... Вчера дома готовил домашку. Сегодня поехал на объект, в очень неудобные ебеня.
Быстро отладил пору косяков, закоммитил.
Решил ещё один косяк, и поехал в город. Там закоммитил, слил изменения в master, собрал, проверил что бинарник 0-в-0 с заводским, и файл обновления выслал на объект.
Прошивают - зависает прошивка!
Откатываюсь на версию назад (та которая закоммичена на объекте) - зависает. Но оно же с программатора заливалось, работало!
Вытаскиваю из чулана такой же девайс, тестирую. Виснет! В стеке вызовов лишь харлфолт, ничего боле!
Откатываюсь на вчерашнюю домашнюю заготовку - работает!
Пошагово переношу в нее доработки.. пока работает.. Ещё доработываю - работает!
Но вызываю одну менюшку - падает в хардфолт! Да блядь! Чего только не перепробовал - не помогает. Увеличил стек и кучу - начало работать. А между "зависает" и "не зависает" просто разница в одной текстовой строке (что вызывет рендер дополнительных векторных символов). Что именно наебывалось никак не смог выяснить с детальными логами. Т.е. косяк где-то сидит и ждёт.
Но позвольте! Как же оно работало в очистке на объекте? Один коммит уверенный пережило! Когда проблемы начались - обратился даже к ноуту с которого отлаживал, чтобы не сомневаться в окружении - то же самое.
ПыСы Keil (везде идентичный)