ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
19 апреля
964000 Топик полностью
fk0, легенда (11.12.2019 12:56 - 13:01, просмотров: 361) ответил PlainUser на В проекте с миллионом строк , сотней больше ошибок сотней меньше , рабочий процесс.
Если ошибка завершается сегфолтом, то она смертельная для любого проекта. Вдогонку, а тут коллега такой баг интересный разгребал: выравнивание стека. Портит его одна функция и в одно время, дальше всё работает какое-то время пока не столкнётся с плавучкой (верней с xmm-регистрами), и грохается в итоге совершенно в другим месте. По-моему это какой-то концептуальный мегабаг (по крайней мере для x86), странно что про него нигде не пишут. Т.е. в некой функции вызываем одну функцию, которая на выходе даёт неправильное значение SP (как она смогла вернуться -- отдельный вопрос...), потом первую функцию продолжаем, вызываем массу функций, одна другую, та третью, и у всех стек не выровнен на 16 байт (а выравнен на 4). И всем пофиг, до первой SSE-инструкции. И компилятор же сам ничего не выравнивает, у него ж в call convention всё и так должно быть (но не обязано...) выравнено на 16.
[ZX]