История изменений
Исправление X512, (текущая версия) :
а SIGSEGV и NULL dereference в обероне по такому же принципу отлавливаются?
Через обработчик сигнала, только нет необходимости в sigaltstack. В отличии от C/C++, в Обероне есть проверки диапазонов массивов и запрещена произвольная адресная арифметика так что SIGSEGV не приводит к фатальным последствиям и исполнение можно продолжить с точки восстановления (longjmp в обработчике сигнала).
В Rust по идее тоже безопасная работа с памятью, но нет поддержки исключений, так что такой подход полноценно работать не будет, не будут вызываться деструкторы переменных на стеке и будут утечки памяти/нарушение логики работы программы.
Исходная версия X512, :
а SIGSEGV и NULL dereference в обероне по такому же принципу отлавливаются?
Через обработчик сигнала, только нет необходимости в sigaltstack. В отличии от C/C++, в Обероне есть проверки диапазонов массивов и запрещена произвольная адресная арифметика так что SIGSEGV не приводит к фатальным последствиям и исполнение можно продолжить с точки восстановления (longjmp в обработчике сигнала).