
O Windows, ao longo das suas várias gerações, tem sido palco de alguns comportamentos inesperados e até peculiares. Recentemente, foi notícia um bug antigo do jogo GTA San Andreas que ressurgiu no Windows 11 devido a alterações na gestão de memória. Contudo, as curiosidades do sistema operativo da Microsoft não são de agora, e um engenheiro veterano da empresa veio recentemente recordar e explicar um caso interessante que afetou o Windows 7.
O Problema Detetado: Um Atraso Inexplicável no Ecrã de Boas-Vindas
Por volta de 2009, na altura do lançamento do Windows 7, utilizadores do sistema começaram a reportar uma situação intrigante: por vezes, o ecrã de boas-vindas demorava um tempo invulgarmente longo, até 30 segundos, a desaparecer após o início de sessão. O mais curioso é que este atraso parecia estar diretamente ligado a uma configuração muito simples: a escolha de uma cor sólida como fundo do ambiente de trabalho, em vez de uma imagem. A própria Microsoft confirmou mais tarde, num artigo de suporte, a existência deste problema no Windows 7 e no Windows Server 2008 R2 para utilizadores com fundos de ecrã de cor sólida.
A Explicação Técnica por Trás do Atraso
Raymond Chen, um engenheiro de longa data da Microsoft conhecido pelo seu blog "The Old New Thing", desvendou recentemente os detalhes técnicos por detrás deste atraso. Chen, que curiosamente utiliza fundos de cor sólida desde o Windows 95 para poupar memória e facilitar a identificação de bugs, explicou que o processo de início de sessão do Windows envolve o carregamento simultâneo de vários componentes: a barra de tarefas, serviços do sistema, ícones do ambiente de trabalho e o fundo do ecrã.
O sistema operativo aguarda que todos estes componentes enviem um sinal indicando que estão prontos ("ready"). Só depois de receber todos os sinais, ou após um tempo limite de 30 segundos, é que o ecrã de boas-vindas desaparece para dar lugar ao ambiente de trabalho.
O problema, segundo Chen, residia no facto de um destes componentes não conseguir enviar o seu sinal de "pronto". A falha estava especificamente na forma como o carregamento do fundo de ecrã (wallpaper) era processado. Numa versão simplificada, o código verificava se existia um "bitmap de wallpaper" definido. Se existisse, executava uma função para carregar essa imagem (LoadWallpaperBitmap). Crucialmente, o comando para reportar que o wallpaper estava pronto (Report(WallpaperReady)) encontrava-se dentro dessa função.
Quando um utilizador escolhia uma cor sólida, a função LoadWallpaperBitmap era simplesmente ignorada, pois não havia uma imagem bitmap para carregar. Consequentemente, o sinal Report(WallpaperReady) nunca chegava a ser executado. O sistema ficava à espera deste sinal inexistente, atingindo eventualmente o tempo limite de 30 segundos antes de prosseguir e mostrar o ambiente de trabalho.
Uma Falha Semelhante com Ícones Ocultos
Chen salientou que um problema idêntico podia ocorrer se o utilizador ativasse a política de grupo para "Ocultar ícones do ambiente de trabalho". Tal como no caso do wallpaper, o código que reportava a prontidão dos ícones estava provavelmente localizado dentro da verificação dessa política. Se a política estivesse ativa e impedisse a exibição dos ícones, o sinal de "pronto" respetivo também seria omitido, resultando no mesmo atraso de 30 segundos no ecrã de boas-vindas.
O Impacto Real do Bug
É importante notar, como enfatiza Chen, que este atraso não significava necessariamente que todo o processo de início de sessão demorasse mais 30 segundos a concluir as suas tarefas. O que acontecia era que o ecrã de boas-vindas permanecia visível durante todo o período de tempo limite (30 segundos) porque um componente específico falhou em comunicar a sua conclusão, mesmo que todos os outros elementos já estivessem carregados e prontos muito antes.
Solução Implementada na Altura
Felizmente, este comportamento caricato não persistiu indefinidamente. Conforme indicado no artigo de suporte da Microsoft, foi lançada uma correção (hotfix) para resolver este problema no Windows 7 e Windows Server 2008 R2 em novembro de 2009, pouco tempo depois do lançamento inicial do sistema operativo. Este caso serve como um lembrete fascinante de como pequenos detalhes na implementação do código podem levar a consequências visíveis e, por vezes, frustrantes para o utilizador final.










Nenhum comentário
Seja o primeiro!