Store minnelekkasjer i flere nettlesere

Visning av bilder kan raskt bruke opp alt tilgjengelig minne.

Minnebruken til de ulike nettleserne er sjelden noe problem, siden moderne pc-er gjerne er rikelig utstyrt med RAM. Men det finnes tilfeller hvor minnebruken virkelig går i taket.

En webutvikler sendte tidligere denne måneden inn en feilrapport til Chromium-prosjektet. I rapporten fortelles det at Chrome ikke på noe tidspunkt frigjør minne eller gjenbruker minne når en webapplikasjon stadig laster nye bilder, men fortsetter å bruke mer minne inntil nettleseren krasjer eller systemet går over i «sirupmodus». Ifølge utvikleren er problemet det samme også i Safari 5 og Firefox 4, men ikke i IE7 og nyere. Opera har ikke blitt testet.

Lignende oppdagelser har blitt gjort også tidligere, noe som omtales her. Et lignende tilfelle kan enkelt testes her. Chrome, Safari og eldre Opera- og IE-utgaver er berørt, men ikke IE9 og Firefox 3.6 og nyere. I vår egen test av Opera 11.11, slutter nettleseren å bruke mer minne like etter at 270 megabyte er passert, noe som tyder på at dette problemet også er tatt hånd om av Opera Software.

Den nevnte testen førte til at minnebruken til den ene Chrome-prosessen passerte 1 gigabyte etter noen få minutter. I vår test fortsatt minnebruken å vokse ytterligere en stund, før den aktuelle prosessen krasjet. Krasjen påvirket ikke resten av nettleseren.
Den nevnte testen førte til at minnebruken til den ene Chrome-prosessen passerte 1 gigabyte etter noen få minutter. I vår test fortsatt minnebruken å vokse ytterligere en stund, før den aktuelle prosessen krasjet. Krasjen påvirket ikke resten av nettleseren.

Det er likevel flere ting som skiller det nye problemet fra de tidligere.

Det nye problemet er knyttet til bruken av bilder som tilbys med headeren «Cache-Control: no-store». Dette benyttes dersom nettstedeieren ikke ønsker at bildene skal mellomlagres på harddisken til brukeren, men kun være tilgjengelige i systemminnet til datamaskinen. Det kan være ønskelig dersom bildene inneholder for eksempel sensitiv informasjon.

Mens minnebruken i de øvrige tilfellene bare har vokst i sprang tilsvarende størrelsen til hvert av de komprimerte bildene, vokser minnebruken i det nye tilfellet med sprang som tilsvarer størrelsen til bildene når de har blitt dekomprimert. I eksempelet, som for øyeblikket ikke er tilgjengelig, skal hver visning av et nytt, komprimert bilde på 22 kilobyte føre til at minnebruken økes med omtrent én megabyte. Bildet måler 512 x 512 piksler med fire byte per piksel.

Koden til et lignende eksempel finnes her.

Det betyr at minne brukes kan brukes svært raskt. Problemene ser ikke ut til å være knyttet til noe spesielt operativsystem. Også enkelte nettleserne for smartmobiler, blant annet Safari for iOS 4, lekker minne på denne måten.

I utgangspunktet burde nettleserne begynne med garbage collection når minnebruken overskrider en minne verdi, men det skjer altså ikke i de nevnte tilfellene. Det vil si, ikke før brukeren lukker fanen eller navigerer til en annen webside.

Selv om de færreste nok har blitt rammet av disse problemene, så fører den manglende håndteringen til at slik funksjonalitet som skaper problemene, ikke kan benyttes av seriøse nettsteder. På den annen side kan useriøse nettsteder benytte dette til å få de besøkendes nettlesere til å henge eller krasje.

Til toppen