Причина различий между машинами - PullRequest
1 голос
/ 26 мая 2011

Мы пытаемся отследить некоторые ошибки разбивки стека в сгенерированном коде.Проблема в том, что ошибки разрушения стека не являются на 100% детерминированными и происходят только на одном компьютере, а не на других.Какими возможными причинами могут быть различия в поведении?

Мы запускаем gcc, используя флаги защиты стека.

1 Ответ

2 голосов
/ 26 мая 2011

Попробуйте использовать Valgrind

Memcheck: детектор ошибок памяти

Если речь идет о потоках и времени, это может случиться в редких или непредсказуемых случаях. Я видел, как многопоточный код работает 99 раз из 100 .... и затем терпит неудачу. Если вам повезет, то это просто ошибка перезаписи стека, которая происходит постоянно, но имеет последствия только изредка.

Ptrcheck: экспериментальный детектор переполнения кучи, стека и глобального массива

-fstack-protector + valgrind ==> отладка переполнения массива стека?

Вы можете попробовать включить канареек из стека с опцией gcc -fstack-protector-all.

...