⚡️ Невроятно: Девушка нашла баг в Linux, который существовал в системе 20 лет, дольше неё самой

молодая разработчица нашла иетерсный баг d linux
молодая разработчица нашла иетерсный баг d linux

21-летняя разработчица просто готовилась к лекции. Открыла PDF - и система зависла. Не первый раз, но в этот раз она решила не перезапускать, а разобраться.

Оказалось, проблема сидит в оконном менеджере Enlightenment E16. Это код из 90-х. Баг, судя по всему, жил там больше 20 лет. И всё это время его никто не трогал.

Enlightenment E16 распространяется с открытым исходным кодом и до сих пор относительно активно поддерживается сообществом разработчиков, к числу которых себя причисляет и Камилла. Самая последняя его версия на момент выхода статьи датирована августом 2024 г. и имеет индекс 1.0.30.

cal gao / UnsplashКлассическое ПО для Linux содержит баги, которые могут скрываться десятилетиями

Enlightenment E16 не стоит путать с более современным оконным менеджером Enlightenment E25. Е16 можно установить на многие современные дистрибутивы Linux, например, на Ubuntu, Debian, Fedora, Mandriva и OpenSUSE.

В своем блоге 21-летняя Камилла написала, что внезапно столкнулась с зависаниями Е16. «У меня было несколько PDF-файлов со слайдами лекций и листом с упражнениями, набранными в LaTeX. В какой-то момент я открыла один из них в Atril (просмотрщик документов в графической среде MATE – прим. CNews), и весь рабочий стол завис», – написала она.

По ее словам, в дальнейшем проблема проявила себя еще несколько раз, но поначалу Камилле не удалось установить причину ее возникновения.

Однако в итоге источник сбоя был выявлен. Оказалось, что E16 зависал лишь в моменты, когда пытался сократить слишком длинное имя файла, с которым работала Камилла.

Она нашла причину, разобралась в старом коде и исправила ошибку, которую десятилетиями обходили стороной.

Первое нововведение - это ограничение количества итераций. Камилла посчитала, что 32 будет достаточно. Второе – она предотвратила возникновение вырожденного перекрытия из-за отрицательных исправлений. Наконец, третье изменение в коде – это защита от ошибки деления на ноль.

Можно иметь огромный open source проект, миллионы пользователей и длинную историю, но внутри всё равно будут жить старые баги, до которых просто никто не добрался.

И в какой-то момент приходит один человек, без команды и ресурсов, и закрывает этот вопрос.

Вот так на самом деле работает open source. Не за счёт корпораций и масштаба, а за счёт людей, которые готовы копаться в системе до конца.

Иногда баг живёт десятилетиями не потому что его сложно исправить. А потому что никто всерьёз не пытался это сделать.

Пишу про linux и показываю, как с ним работать на про уровне: https://t.me/linuxacademiya/1081

5
2
6 комментариев