LINUX.ORG.RU

История изменений

Исправление X512, (текущая версия) :

а SIGSEGV и NULL dereference в обероне по такому же принципу отлавливаются?

Через обработчик сигнала, только нет необходимости в sigaltstack. В отличии от C/C++, в Обероне есть проверки диапазонов массивов и запрещена произвольная адресная арифметика так что SIGSEGV не приводит к фатальным последствиям и исполнение можно продолжить с точки восстановления (longjmp в обработчике сигнала).

В Rust по идее тоже безопасная работа с памятью, но нет поддержки исключений, так что такой подход полноценно работать не будет, не будут вызываться деструкторы переменных на стеке и будут утечки памяти/нарушение логики работы программы.

Исходная версия X512, :

а SIGSEGV и NULL dereference в обероне по такому же принципу отлавливаются?

Через обработчик сигнала, только нет необходимости в sigaltstack. В отличии от C/C++, в Обероне есть проверки диапазонов массивов и запрещена произвольная адресная арифметика так что SIGSEGV не приводит к фатальным последствиям и исполнение можно продолжить с точки восстановления (longjmp в обработчике сигнала).