Ваш способ проверки устойчивости вызывает больше вопросов, чем предоставляет ответов.
В реальности вероятность сбоя маленькая, хотелось бы увидеть прикидку, по которой разница количества битов в разы меняет вероятность сбоя на проценты.
Зарисовывание функций нолями не означает устойчивость остальной программы к неверному результату функции. Если её забить нолями всю, т.е. включая ret, то в итоге выполняться будет следующая за ней функция в сегменте кода. А тут уже как карта ляжет - Сишная функция даст сбой в точке возврата, но в остальном останется рабочей. В Паскале функция даст не только сбой в точке возврата, но и стек подотрёт по-другому; а вот тут уже всякие кони будут проявляться и в функциях, вызванных позже.
Это совершенно правильный способ. В реальной жизни именно так и происходит, что сбоят с некоторой вероятностью отдельные ячейки памяти.
Вероятность что сбой подотрет именно ret очень низка.
Да, специфика подтирания стека в Паскале приводит к тому, что всего одна сбойная ячейка приводит к множественным сбоям в разных местах системы, то есть в Си сбой ячейки это не более чем сбой одной ячейки, а в Паскале сбой всего одной ячейки с ненулевой вероятностью порождает сразу целый каскад сбоев.
В "реальной жизни" считать такое поведение нормальным (или, тем более, превозносить) это или запредельная смелость, или откровенная глупость. С момента сбоя ячейки поведение не определено вообще. Я предпочту доверить свою жизнь херне, которая как можно быстрее упадёт и перезапустится, а не будет творить что-то непредсказуемое.
no subject
Date: 2014-07-16 03:53 pm (UTC)no subject
Date: 2014-07-16 04:11 pm (UTC)В реальности вероятность сбоя маленькая, хотелось бы увидеть прикидку, по которой разница количества битов в разы меняет вероятность сбоя на проценты.
Зарисовывание функций нолями не означает устойчивость остальной программы к неверному результату функции. Если её забить нолями всю, т.е. включая ret, то в итоге выполняться будет следующая за ней функция в сегменте кода. А тут уже как карта ляжет - Сишная функция даст сбой в точке возврата, но в остальном останется рабочей. В Паскале функция даст не только сбой в точке возврата, но и стек подотрёт по-другому; а вот тут уже всякие кони будут проявляться и в функциях, вызванных позже.
no subject
Date: 2014-07-16 04:40 pm (UTC)Вероятность что сбой подотрет именно ret очень низка.
Да, специфика подтирания стека в Паскале приводит к тому, что всего одна сбойная ячейка приводит к множественным сбоям в разных местах системы, то есть в Си сбой ячейки это не более чем сбой одной ячейки, а в Паскале сбой всего одной ячейки с ненулевой вероятностью порождает сразу целый каскад сбоев.
no subject
Date: 2014-07-16 07:27 pm (UTC)no subject
Date: 2014-07-16 11:00 pm (UTC)