Странная проблема в кучной памяти! - PullRequest
0 голосов
/ 04 мая 2010

Я обнаружил, что в VxWorks происходит сбой одного потока многопоточного приложения. У меня нет отладочной информации. При более глубоком анализе я обнаружил, что сбой вызывается из-за изменения значения адреса глобальной памяти.

Этот глобальный адрес памяти (который является адресом функции. Я использую указатель на функцию) хранится в определенном месте адреса в куче. Я обнаружил, что сам адрес глобальной памяти уменьшается на 2, что приводит к неправильному доступу и ошибке инструкции загрузки.

Это происходит случайно. Но я очень удивлен тем, что может привести к уменьшению значения адреса на 2.

Любые догадки, идеи или указатели в любом направлении могут быть полезны.

1 Ответ

4 голосов
/ 04 мая 2010

У некоторых процессоров есть аппаратная точка останова, которая позволит вам сломаться при записи в память. Настройте ЦП на прерывание, когда это место считывается или записывается, и смотрите на стек, когда выясняется, какая функция это делает.

...