Одноцветные обои в Windows 7 тормозили загрузку системы. Как так вышло и кто в этом виноват

от admin

В Windows 7 однотонные обои замедляли загрузку системы: баг мешал рабочему столу сообщить о готовности. Исправили лишь спустя месяцы

В ранней версии Windows 7 был баг, который замедлял вход в систему… если вы ставили в качестве обоев просто однотонный фон. Казалось бы, минимализм должен ускорять загрузку, но все оказалось наоборот. Почему? Ответ в классическом «упс».

Виновата строчка кода, которой не было

После успешной авторизации, Windows ждет, пока все компоненты рабочего стола доложат о готовности — панель задач, иконки, обои и так далее. Как только все сказали «готово» (или прошло 30 секунд), система убирает экран приветствия и показывает рабочий стол.

Так вот, код, отвечающий за фоновую картинку, выглядел примерно так:

			if (wallpaper bitmap defined) {     LoadWallpaperBitmap();     Report(WallpaperReady); }  		

А если никакой картинки нет — то и отчета о готовности нет. Система просто висит на экране «Добро пожаловать», ожидая сигнал, который никогда не придет.

Читать также:
Топ-5 того, что можно сделать на Linux, но нельзя на Windows

А еще — политика скрытия иконок

Схожая ошибка была и с групповыми политиками. Если включалась опция «Скрыть иконки рабочего стола», то код инициализации иконок не выполнялся — и, соответственно, не отправлял сигнал «готово».

			if (icons allowed) {     load icons;     Report(DesktopIconsReady); }  		

В результате — снова таймер на 30 секунд, хотя по факту все было готово через 5.

Баг был исправлен быстро, но казус показательный

Ошибка была устранена в ноябре 2009 года — спустя четыре месяца после релиза Windows 7. И эта ситуация хорошо иллюстрирует, как отсутствие одной строки отчета может повесить всю систему. Особенно когда дело касается настроек, вроде групповых политик, которые добавляются в код в последний момент.

Похожие статьи