В Windows 7 однотонные обои замедляли загрузку системы: баг мешал рабочему столу сообщить о готовности. Исправили лишь спустя месяцы
В ранней версии Windows 7 был баг, который замедлял вход в систему… если вы ставили в качестве обоев просто однотонный фон. Казалось бы, минимализм должен ускорять загрузку, но все оказалось наоборот. Почему? Ответ в классическом «упс».
Виновата строчка кода, которой не было
После успешной авторизации, Windows ждет, пока все компоненты рабочего стола доложат о готовности — панель задач, иконки, обои и так далее. Как только все сказали «готово» (или прошло 30 секунд), система убирает экран приветствия и показывает рабочий стол.
Так вот, код, отвечающий за фоновую картинку, выглядел примерно так:
if (wallpaper bitmap defined) { LoadWallpaperBitmap(); Report(WallpaperReady); }
А если никакой картинки нет — то и отчета о готовности нет. Система просто висит на экране «Добро пожаловать», ожидая сигнал, который никогда не придет.
А еще — политика скрытия иконок
Схожая ошибка была и с групповыми политиками. Если включалась опция «Скрыть иконки рабочего стола», то код инициализации иконок не выполнялся — и, соответственно, не отправлял сигнал «готово».
if (icons allowed) { load icons; Report(DesktopIconsReady); }
В результате — снова таймер на 30 секунд, хотя по факту все было готово через 5.
Баг был исправлен быстро, но казус показательный
Ошибка была устранена в ноябре 2009 года — спустя четыре месяца после релиза Windows 7. И эта ситуация хорошо иллюстрирует, как отсутствие одной строки отчета может повесить всю систему. Особенно когда дело касается настроек, вроде групповых политик, которые добавляются в код в последний момент.