Недавно стало известно, что ядро Linux версии 6.2, как и более поздние версии — имеет ошибку, которая приводит к сбою в загрузке операционной системы. Однако, это происходит примерно один раз из тысячи стартов.
Ошибку удалось вычислить одному из разработчиков компании Red Hat. Для этого он перезапустил свои компьютеры более 300 000 раз!
Ричард Джонс взялся за эту работу, потому что столкнулся с проблемой в работе серверов. Его виртуальные машины, обслуживающие диски в облаке, периодически давали сбои, без каких-либо видимых причин.
"Я удивился, когда заметил это, но решил любым способом разгадать эту загадку." — написал Ричард в своем блоге.
Поиск ошибок — часть жизни любого программиста. К счастью, существуют инструменты, упрощающие эту задачу. Это позволяет точно разграничивать диапазон между безопасными фиксациями и теми, что дали сбой.
Джонс начал с 10 000 стартов и обнаружил, что в ядре Linux 6.0 ошибка не фиксировалась, а вот в 6.4-RC6 обнаружилась регрессия в функции Printk-times, приводившая к сбою всей системы.
Но и этого оказалось недостаточно для полной фиксации ошибки. Суммарно он перезагрузил свои виртуальные машины 300 000 раз. Только так он смог полностью понять причину ошибки и оценить ее масштабы.
Результаты его работы поразили многих! И это не удивительно, ведь 1 случай из 1000 может быть легко списан на случайный сбой в работе.
Стоит отдать должное его упорству и наблюдательности. Он провел действительно детективную работу!