Цитата(SasaVitebsk @ Apr 28 2010, 10:34)

Внимание ответ. А что, если будет запорчена другая переменная, вам полегчает? А как вообще можно говорить о работоспособности программы, при проблемах со стеком?
1. Все другие переменные восстанавливаемы. Все, кроме времени. Они восстанавливаются из контекста программы.
2. Вопрос ставился именно КАК защитить определенную область памяти от всяких случайных переполнений. Чтобы ВСЕ переменные не портились. Ну, на крайний случай - критические данные, типа времени.
Цитата(SasaVitebsk @ Apr 28 2010, 10:34)

Мне трудно судить о вашей программе, но, исходя из вероятности сбоя, мне кажется у вас проблемы с атомарностью доступа к переменной, достаточно редко используемой. Это можно проверить, блокируя участки кода запретом прерывания. Так можно локализовать "место порчи". Ну и классический способ: взять исходник, и думать, как машина.

Что касается доступа - то системное время мнеяется только в обработчике прерывания таймера, а во всех остальных случаях, только читается и переностится в лог.
Конфликт доступа исключен.
Причем, сбивается оно случайным образом - не предсказуемо на какое значение, а в обработчике прерывания оно меняется только на 1 (+1). Т.е. конфликт доступа, если бы он и был, то не приводил бы к таким последствиям.
И, возвращаясь к вопросу стека - при настройках из xcl-файла, CStack развивается в сторону младших или старших адресов? Судя по тому, как задан стек, мне кажется, что в сторону младших. Т.о., при выходе за 0х60 адрес, стек что будет портить? регистровый файл? Старшие адреса области данных? Старшие адреса RStack?