Size: a a a

Rust — русскоговорящее сообществo

2020 October 01

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
霧龍
А как можно устроить конкретно сегфолт?
Ну надо немного поиграть в прятки с оптимизатором.
Попробуй так:
let p = 0usize;

*((&p as *const usize as *const *const u8).read_volatile())
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Ну или напиши прямо в тупую но собирай дебаг-сборку
источник

Э

Эрик in Rust — русскоговорящее сообществo
Mikail Bagishov
Ну надо немного поиграть в прятки с оптимизатором.
Попробуй так:
let p = 0usize;

*((&p as *const usize as *const *const u8).read_volatile())
Читать ноль надо из кучи.
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Но вообще непонятно, зачем этим заниматься
источник

Э

Эрик in Rust — русскоговорящее сообществo
Ну или asm!
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Кстати да, asm! это не просто самый верный вариант, там даже UB нет
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Но тогда можно еще проще, raise(SIGSEGV)
источник

BV

Boris Vinogradov in Rust — русскоговорящее сообществo
Эрик
Читать ноль надо из кучи.
Читать ноль можно откуда угодно (кроме бареметалл сборок)
источник

霧龍 in Rust — русскоговорящее сообществo
Mikail Bagishov
Но вообще непонятно, зачем этим заниматься
Протестировать поведение в такой ситуации
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
霧龍
Протестировать поведение в такой ситуации
А зачем?
Фактическое поведение программы с UB может быть более-менее произвольным.

Например есть известный пример, когда вызов нулевого указателя на функцию приводит к запуску rm -rf /
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Пытаться рассуждать о том, во что именно конкретный компилятор конкретной версии с конкретными настройками при конкретной фазе луны и магнитной активности солнца превратит неопределенное поведение конечно можно, но имхо это довольно неблагодарное занятие
источник

V

Vitaly in Rust — русскоговорящее сообществo
Mikail Bagishov
Пытаться рассуждать о том, во что именно конкретный компилятор конкретной версии с конкретными настройками при конкретной фазе луны и магнитной активности солнца превратит неопределенное поведение конечно можно, но имхо это довольно неблагодарное занятие
зато весело
источник

R

Roman in Rust — русскоговорящее сообществo
Mikail Bagishov
Пытаться рассуждать о том, во что именно конкретный компилятор конкретной версии с конкретными настройками при конкретной фазе луны и магнитной активности солнца превратит неопределенное поведение конечно можно, но имхо это довольно неблагодарное занятие
Я так понял что хотят протестировать поведения именно во время сегфолта
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Roman
Я так понял что хотят протестировать поведения именно во время сегфолта
Разыменование нулевого указателя != сегфолт
источник

R

Roman in Rust — русскоговорящее сообществo
Вопрос изначальный был про сегфолт
источник

R

Roman in Rust — русскоговорящее сообществo
Переслано от 霧龍
А как можно устроить конкретно сегфолт?
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Вопрос изначально был про разыменование нулевого указателя
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
источник

R

Roman in Rust — русскоговорящее сообществo
Ну ладно, ладно. Изначально было про разыменование, но я так понимаю что речь шла про то что человеку нужен сегфолт
источник

R

Roman in Rust — русскоговорящее сообществo
Классическая ХУ проблема. Человеку надо Х, но спрашивает сначало про У
источник