В Rust нашли дыру в borrow checker, которой не замечали 11 лет

11 year old unsoundness bugs found in Rust borrow checker

В Rust нашли дыру в borrow checker, которой не замечали 11 лет

В issue #164250 описан баг soundness: требования к временам жизни struct можно обойти через присваивание ковариантному полю. Пример с Q<T: 'static + Send> и Drop компилируется и печатает данные, которые уже должны были быть уничтожены, а с asan падает с stack-use-after-scope. Проблема воспроизводится как минимум с 1.85.0, а версия lcnr — с 1.4.

Моя версия кода компилируется ещё с 1.18.0 (2017). Как, чёрт возьми, это не нашли раньше???

Ещё за этот день

2026-10-13