После полного выключения и включения компьютера у части пользователей Linux появлялся чёрный экран: графическая оболочка бесконечно перезапускалась, хотя сама система продолжала работать. Временным решением был ручной рестарт сессии.
За баг взялся лично Линус Торвальдс — и привлёк в помощники ИИ‑ассистента.
В чём была причина: граница VRAM в драйвере Intel Xe
Проблема оказалась в драйвере Intel Xe и расчёте границы видеопамяти. Видеокарта резервирует часть VRAM под служебные данные аппаратного сжатия. Драйвер получает адрес начала этой закрытой области и всю память ниже него отдаёт обычным приложениям.
Но этот адрес не всегда совпадал с границей страницы памяти.
Старый legacy‑код использовал round_up() — округлял адрес вверх. Из‑за этого граница «свободной» памяти сдвигалась внутрь зарезервированной зоны.
На машине Линуса граница приходилась на середину страницы 4 КБ: последние 2 КБ уже принадлежали механизму сжатия, но драйвер всё равно мог отдать всю страницу приложению. Видеокарта записывала свои служебные данные поверх размещённой там таблицы страниц, графическая оболочка теряла доступ к нужной области памяти и падала.
Исправление оказалось до смешного простым: round_up() был заменён на round_down(). Теперь адрес округляется вниз до начала страницы. Если хотя бы часть страницы занята служебными данными GPU, драйвер полностью исключает её из доступной видеопамяти. Теряется несколько килобайт VRAM, но приложения больше не получают память, которую может перезаписать оборудование.
Роль ИИ: рутина вместо магии
Хотя финальный фикс занял одну строку, путь к нему включал 24 диагностических патча и 18 перезагрузок ядра. ИИ выполнял основную рутину:
- добавлял разные фрагменты диагностического кода;
- анализировал логи и результаты;
- пару раз объявлял проблему «нерешаемой» и предлагал ограничиться отчётом.
Торвальдс каждый раз заставлял его продолжать. В итоге он признал, что ИИ оказал огромную помощь, и даже позволил ему написать описание итогового коммита. Какую именно модель он использовал, Линус не раскрыл.
Мораль истории: ИИ не нашёл баг одной волшебной командой и не заменил инженера. Он взял на себя механическую работу, пока человек выдвигал гипотезы, проверял их и не соглашался с ответом «это невозможно».
Источник: Habr Xəbərlər










