Windows 7’s hemmelige boot-mysterie endelig opklaret
Windows 7 ramte markedet i 2009 og blev hurtigt Microsofts redningsplanke efter det famøse Windows Vista-flop. Men selv denne populære version havde sine quirks – blandt andet et ret pudsigt problem med opstartstiden, som mange sikkert har undret sig over.
Hvorfor tog det evigheder at starte op med en ensfarvet baggrund?
Nogle brugere oplevede nemlig, at deres Windows 7-maskine nærmest frøs i 30 sekunder, når de startede computeren op med en helt simpel, ensfarvet baggrund. Det viste sig at skyldes en lille, men irriterende programmeringsfejl, som Microsoft-veteranen Raymond Chen for nylig har afsløret i sit blogindlæg.
Efter login begyndte Windows 7 nemlig at bygge skrivebordet op ét element ad gangen: proceslinjen, skrivebordsikonernes vindue, applikationsikoner og til sidst baggrundsbilledet. Systemet ventede tålmodigt på en bekræftelse fra hvert enkelt element, før det gik videre – eller hoppede til skrivebordet efter 30 sekunder, hvis der ikke kom noget svar.
En bitmap eller bare en farve? Det var det store spørgsmål
Problemet var, at bekræftelsen på, at baggrundsbilledet var klart, lå inde i koden for billedets bitmap. Men en ensfarvet baggrund er ikke en rigtig bitmapfil, så den besked kom simpelthen aldrig. Resultatet? Windows 7 sad og ventede forgæves i 30 sekunder, før fallback-tiden udløb, og du endelig kunne komme videre til skrivebordet.
Skjulte ikoner gjorde det ikke bedre
En anden årsag til langsom opstart kunne opstå, hvis man havde slået “Skjul skrivebordsikoner” til via gruppepolitik. Den funktion blev først tilføjet efter den oprindelige kode, og Windows 7 kunne derfor ikke genkende, at ikonerne faktisk ikke skulle loades. Det betød endnu en ventetid, inden systemet opgav.
Koden der skabte balladen
Chen delte endda en kodebid for at illustrere, hvordan programmet skulle have set ud:
// Original kode
InitialiseDesktopIcons()
{
bind to the desktop folder
enumerate the icons
add them to the screen
Report(DesktopIconsReady);
}
// Opdateret med gruppepolitik
InitialiseDesktopIcons()
{
if (desktop icons allowed by policy)
{
bind to the desktop folder
enumerate the icons
add them to the screen
Report(DesktopIconsReady);
}
}
Hvor lang tid gik der, før fejlen blev rettet?
Ifølge Raymond Chen tog det Microsoft flere måneder at fange og forstå problemet. Først i november 2009 blev fejlen fikset med en opdatering, og siden har den ikke drillet brugerne.
Det er en sjov påmindelse om, hvor små detaljer i koden kan skabe store frustrationer – og hvor vigtigt det er at teste software grundigt fra ende til anden.
Vil du dykke dybere?
Hvis du er nysgerrig på flere skøre tech-fejl, kan du læse om, hvordan en Janet Jackson-sang fik bærbare computere til at crashe i ni år – det er slet ikke så skørt, som det lyder!
Artiklen er baseret på indhold fra PC-WELT og omskrevet til dansk af TechSteren.