Ядро Redox собирает стектрейсы пользовательского пространства
10.11.2025Ядро Redox научилось собирать стектрейсы кода пользовательского пространства, а не только своего. При сбое теперь видно, где находился код программы, а не только ядра.
Что было видно при падении раньше
Стек — это цепочка вызовов: кто кого вызвал. Когда программа падает, полезнее всего знать её собственный стек. Ядро же видело только свой, а пользовательский код в нём не появлялся: процессы работают в своём адресном пространстве, и ядро туда не заходит.
Как это сделано
Через механизм пользовательской копии стека. Ядро может попросить процесс сохранить содержимое своего стека в собственную память, а затем прочитать копию. Механизм давно применяется в Linux, где он используется для трассировки, и здесь то же самое.
Что это даёт на практике
Отладка сбоев в системе становится возможной в принципе. Раньше падение ядра приходилось анализировать по стеку ядра и предполагать, что делала программа. Теперь видно и второе.
Для кода на Rust это особенно полезно. Паника в Rust печатает свой стек, но если паника происходит на границе с ядром — в системном вызове, — без пользовательской копии стека в отчёте остаётся только ядерная часть, и понять, где был вызванный код, невозможно.
Отдельно отмечу: пользовательские стектрейсы — предпосылка для нормальной отладки, а её в Redox до этого толком не было.
Оригинал
Коммит Implement support for userspace stack traces от 10 ноября 2025 года в репозитории redox-os/kernel; сводка «This Month in Redox — November 2025», раздел «Debugging Improvements»
Упоминаний: 1 · Просмотров: 6