Энтузиасты опубликовали результаты исследования времени обнаружения и устранения ошибок в коде ядра 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% ошибок.