CRIU и gdb
Появилась еще одна интересная идея использования CRIU, у которого и так перспективы захватывающие.
Ruslan Kuprieiev, инженер CloudLinux и совместного учебно-научного центра МФТИ и Parallels, работает над интересной задачей - использование CRIU для создания образов, пригодных к использованию с gdb. Задачи смежные - у CRIU собрать полное описание запущенного приложения, а у gdb - пройтись по ошметкам процесса, оставшимся после сбоя, в интерактивном режиме.
Теоретически, транслятор описаний CRIU в coredump позволит удаленно и в спокойном темпе изучать c помощью gdb приложение, которое работает не совсем хорошо, но которое совсем не хочется останавливать, или к которому не хочется / невозможно подключаться наживую.
Оглядевшись по сторонам, Руслан заметил схожий проект от Google, хотя заброшенный уже почти с десяток лет назад, и теперь уж видимо окончательно - google-coredumper.
Существование подобных проектов, добравшихся до разных стадий реализации, совсем неудивительно, учитывая практическую полезность дела.
Конечно, сложность реализации чего-то подобного, во времена до того, как Parallels начали включать в ядро различные полезные функции для Checkpoint/Restore, видимо была запредельной даже для Google. В принципе и сейчас это непросто.
Понятно, что конвертация CRIU в coredump приводит к огромной потере данных. CRIU может полностью восстановить процесс по его описанию, а вот gdb по coredump может гораздо меньше. Попечалившись немного, Руслан пришел к свежей идее - интегрировать CRIU в gdb, чтоб работать с исходными данными, а не с огрызком в виде coredump. Это, конечно, довольно сложно, и затронет сразу оба проекта. Конечно мы желаем Руслану успехов, и не только в технической части, но и в преодолении очевидных организационных сложностей при взаимодействии с несколькими командами за разными проектами. Нам будет очень интересно посмотреть на результат.
Как обычно с инновационными идеями, Руслан уже напоролся на какие-то странности и необычности, которые нормальному человеку и понять-то непросто, и которые обсуждаются лишь в закрытом клубе разработчиков ядра.
По результатам работы над задачей, Руслану уже есть кое-что показать!