微软工程师Raymond Chen曾回顾了Windows 7时期一个经典Bug,将桌面壁纸设为纯色后,登录时欢迎屏幕会固定停留30秒,直到2009年11月补丁才修复。
纯色可以说是Windows最容易渲染的桌面背景,不需要解码图片,也不需要加载大位图,但恰恰是这个最简单的设置,触发了最荒诞的延迟。

首先需要知道的是,Windows登录时不会瞬间切换到桌面,任务栏加载、后台服务初始化、桌面图标填充、壁纸绘制,每个组件都要向登录系统报告“我准备好了”。所有组件准备好后,或者30秒超时(以先到者为准),系统才会离开欢迎屏幕进入桌面。
问题恰恰出在壁纸组件的报告机制上,负责发送“壁纸就绪”信号的代码,被写在了加载图片文件的代码路径里面。

如果用户选的是纯色背景,图片加载这段代码根本不会执行,壁纸就绪信号也就永远不会发出,登录系统一直在等一个不可能到达的报告,直到30秒超时才放弃,把桌面显示出来。
Chen强调,这30秒并不是系统在做额外工作,其他所有组件可能5秒就全部就绪了,欢迎屏幕仍然会停留30秒,因为系统没有办法知道壁纸那边的情况,它只能等。
同样的逻辑还出现在另一个相关Bug中,启用组策略“隐藏桌面所有图标”加正常壁纸组合时,也会触发30秒延迟。

原因是桌面图标初始化的完成报告原本在初始化结束后发出,后来微软加入策略支持时,把初始化代码包进了“如果策略允许”的条件块,完成报告也被困在了里面。通过策略禁用图标后,报告就不发了,登录系统再次陷入空等。
微软最终在2009年11月9日推送了热修复补丁,在此之前,用户自己也摸索出了绕过方案:把纯色换成图片壁纸,或者制作一张纯色小图片当作壁纸文件使用,效果一样。
Chen还总结道,操作系统中一个微小的假设,一旦用户做了原始程序员没想到的操作,就可能产生极其诡异的结果。





