Причина различий между машинами
Мы пытаемся отследить некоторые ошибки разбивки стека в сгенерированном коде. Проблема в том, что ошибки разрушения стека не являются на 100% детерминированными и происходят только на одном компьютере, а не на других. Какие возможные причины могут быть для различия в поведении?
Мы запускаем gcc, используя флаги защиты стека.
1 ответ
Попробуйте использовать Valgrind
Memcheck: детектор ошибок памяти
Если речь идет о потоках и времени, это может случиться в редких или непредсказуемых случаях. Я видел, как многопоточный код работает 99 раз из 100.... и затем терпит неудачу. Если вам повезет, то это просто ошибка перезаписи стека, которая происходит постоянно, но имеет последствия.
Ptrcheck: экспериментальный детектор переполнения кучи, стека и глобального массива
-fstack-protector + valgrind ==> отладка переполнения стека?
Вы можете попробовать включить канареек с помощью gcc
"s -fstack-protector-all
вариант.