Женское это дело
В оконном менеджере Enlightenment E16 для Linux устранен глюк, существовавший в нем десятилетиями и приводивший к его зависаниям. Как пишет The Register, исправить его смогла разработчик ПО Камилла Шевчик (Kamila Szewczyk). Она обнаружила его во время подготовки презентации для своего курса, который она преподает в качестве аспирантки в Саарландском университете в Германии.
На момент выхода материала Камилле был 21 год. Когда точно появился этот баг, остается неизвестным, но существует вероятность, что он старше самой Камиллы, поскольку дебют Enlightenment E16 состоялся за семь лет до ее рождения, в 1997 г. По данным The Register, баг закрался в код менеджера 20 лет назад, но разработчики это не подтверждают.
Что случилось
Enlightenment E16 распространяется с открытым исходным кодом и до сих пор относительно активно поддерживается сообществом разработчиков, к числу которых себя причисляет и Камилла. Самая последняя его версия на момент выхода статьи датирована августом 2024 г. и имеет индекс 1.0.30.
Enlightenment E16 не стоит путать с более современным оконным менеджером Enlightenment E25. Е16 можно установить на многие современные дистрибутивы Linux, например, на Ubuntu, Debian, Fedora, Mandriva и OpenSUSE.
В своем блоге 21-летняя Камилла написала, что внезапно столкнулась с зависаниями Е16. «У меня было несколько PDF-файлов со слайдами лекций и листом с упражнениями, набранными в LaTeX. В какой-то момент я открыла один из них в Atril (просмотрщик документов в графической среде MATE – прим. CNews), и весь рабочий стол завис», – написала она.
По ее словам, в дальнейшем проблема проявила себя еще несколько раз, но поначалу Камилле не удалось установить причину ее возникновения.
Однако в итоге источник сбоя был выявлен. Оказалось, что E16 зависал лишь в моменты, когда пытался сократить слишком длинное имя файла, с которым работала Камилла.
Решение найдено
Проведя небольшой анализ кода Е16, Камилла пришла к выводу, что используемый в Е16 алгоритм усечения заголовка окна реализован без ограничения на количество итераций. Без этого ограничения поиск по многоточию мог бесконечно переключаться между точками усечения, зависая на рабочем столе в процессе поиска заголовка.
Найдя причину проблемы, Камилла подготовила патч для сборки 1.0.30. Исправление вносит в код менеджера окон три изменения, в совокупности гарантирующих, что проблема не возникнет повторно.
Первое нововведение – это ограничение количества итераций. Камилла посчитала, что 32 будет достаточно. Второе – она предотвратила возникновение вырожденного перекрытия из-за отрицательных исправлений. Наконец, третье изменение в коде – это защита от ошибки деления на ноль.
Старое лучше нового
Камилла сообщила The Register, что отдает предпочтение именно Е16, а не современным менеджерам окон, считая его более завершенным и стабильным. И она уверена, что более новые аналоги Е16 тоже содержат подобные ошибки в коде.
«Без сомнения, подобные ошибки скрываются в миллионах строк кода, обеспечивающих работу современных сред рабочего стола и оконных менеджеров», – написала она изданию The Register в электронном письме.
Также у нее есть вполне сформированное предубеждение против современных графических сред и оконных менеджеров. Она считает, что нынешняя философия разработки программного обеспечения, которой придерживаются эти продукты, в конечном итоге контрпродуктивна и менее безопасна для пользователей.
«Мне кажется, мы немного сбились с пути, – сказала Камилла The Register. – Мы недостаточно заинтересованы в том, чтобы признать, что разработка программного обеспечения может быть более или менее завершена на каком-то этапе».
Она поставила в пример именно Е16. По ее словам, за 29 лет он получил множество обновлений, но в них разработчики делали акцент на устранение ошибок, а не на внедрение обилия новых и ненужных функций.



