Энтузиасты опубликовали результаты исследования времени обнаружения и устранения ошибок в коде ядра Linux. Данные были получены в результате анализа 125 тысяч ошибок, помеченных в Git-репозитории тегом Fixes:, ссылающимся на коммит, в котором возникла ошибка.
Среднее время обнаружения ошибок в ядре составило 2,1 года. Если рассматривать только ошибки, исправленные в 2025 году, данный показатель составил 2,8 года.
30% ошибок были исправлены теми же разработчиками, что и внесли ошибки.
56,9% ошибок устраняют в течение года.
13,5% ошибок оставались незамеченными более 5 лет (если рассматривать только ошибки, исправленные в 2025 году - 19,4%).
Из-за неравномерности распределения медианное время существования ошибки в коде ядра составило 8 месяцев для выборки с 2005 года и 1 год для ошибок, исправленных в 2025 году. Наиболее долго сохранявшейся в коде ошибкой стало переполнение буфера в ethtool, устранённое спустя 20,7 года.

Динамика обнаружения ошибок заметно отличается от среднего значения для некоторых подсистем, например, в драйвере шины CAN и стеке SCTP выявление проблем в среднем занимает около 4 лет, в IPv4-стеке - 3,6 года, USB и TTY - 3,5, Netfilter и сетевом стеке - 2,9, VM - 1,8, GPU - 1,4, BPF - 1,1 года.

Время обнаружения коррелирует с типами ошибок:
среднее время обнаружения ошибок, связанных с состояниями гонки, составило 5,1 года
целочисленным переполнением - 3,9 года
обращением после освобождения памяти - 3,2 года
переполнением буфера и утечкой памяти - 3,1 года
подсчётом ссылок - 2,8 года
разыменованием нулевого указателя и взаимными блокировками - 2,2 года.
В полученной статистике также прослеживается влияние внедрения новых инструментов для автоматизированного поиска ошибок, статического анализа и тестирования кода, таких как Syzkaller, KASAN, KMSAN и KCSAN. Например, в 2010 году не было зафиксировано исправлений ошибок, найденных в течение года. В то время, как в 2014 году в течение года выявлялось 31% ошибок, 2018 году - 54%, а в 2022 году - 69% ошибок.
