[Uppdatering 2: Fixad] Denna bakgrund utlöser en sällsynt bugg som får Android-enheter att starta

Den här tapeten utlöser en sällsynt bugg som gör att Android-enheter startar. Prova inte wallaper på din enhet, annars kan du förlora all din data.

Uppdatering 2 (08/03/2020 @ 15:03 ET): Med Android Security Patch för augusti 2020 har Google uppdaterat Android för att fixa detta fel. Mer information finns längst ner.

Uppdatering 1 (06/04/2020 @ 03:12 AM ET): Nyare förklaringar har dykt upp om vad som får den "förbannade tapeten" att krascha telefoner, tillsammans med ett svar från Google. Scrolla till botten för mer information. Artikeln som publicerades den 1 juni 2020 finns bevarad nedan.

Föreställ dig att du letar efter internet coola tapeter och du stöter på ett pittoreskt landskap. Den har allt; en frodig grön skog, en orörd sjö med en liten ö, snöklädda berg i bakgrunden och ett tjockt molntäcke med solljus som sipprar in genom springorna. Du laddar ner bilden omedelbart, ställer in den som din telefons bakgrundsbild, och boom! Din Android-telefon fastnar i en bootloop. Låter osannolikt, eller hur? Tja, det är sant för just denna tapet.

Tapeten delades nyligen på Twitterav känd Samsung Leakster Ice Universe, som hävdade att tapeten "kommer att få din telefon att krascha!" Trots deras varning, flera användare laddade ner bakgrundsbilden för att kontrollera om den faktiskt gjorde något på deras telefon och de möttes av följande resultat:

Enligt Davide Bianco, ledande utvecklare av AOSP-baserade anpassad ROM "POSP", den här bakgrunden får vissa Android-enheter att krascha eftersom den använder RGB-färgrymden, istället för sRGB-färgrymden som stöds inbyggt på Android. Bianco har skickade in en patch till AOSP som enligt uppgift fixar problemet och beskrivningen av patchen säger att "Problemet uppstår när användaren försöker ställa in som bakgrundsbild en bild som inte är sRGB. Det som händer är att variabelns y-värde är högre än histogrammets gränser, vilket gör att SysUI kraschar. En möjlig fix är att begränsa y-värdet till att alltid vara mindre än 256." Tillsammans med Bianco, två utvecklare, XDA Senior Member Dålig Daemon och XDA Recognized Developer luca020400, från det populära LineageOS anpassade ROM-teamet har också kommit med en unik lösning på problemet. Du kan kolla in patchbeskrivningarna på LineageOS Gerrit genom att följa den här länken och den här länken.

Vi rekommenderar starkt att du inte använder denna bild som din tapet under några omständigheter. Om du redan har använt den och din enhet har fastnat i en bootloop, kontrollera instruktionerna nedan om hur du kan återställa din enhet.

A rapportera från 9to5Google i frågan avslöjar vidare att problemet är begränsat till enheter som kör Android 10 eller äldre och det påverkar inte enheter som kör Android 11 Förhandsvisning av utvecklare. Detta beror på det faktum att på Android 11 konverterar systemet färgrymden om den inte stöds, men på Android 10 gör det inte det. Vilket betyder att detta inte är ett problem med just den här bilden och kan orsakas av andra bilder som använder RGB-färgrymden.

Observera att även om problemet inte påverkar alla Android-enheter, rekommenderar vi starkt att du inte provar bakgrundsbilden på din telefon. Om du ändå provar det, kanske du kan återställa din enhet genom att antingen återställa den helt eller genom att gå in i säkert läge och ändra bakgrunden. Men eftersom vissa användare över på Twitter inte kunde återställa sina enheter med de ovannämnda metoderna, skulle det vara bäst om du inte använder den exakta bilden som bakgrund. Om du verkligen gillar tapeten, ta bara en skärmdump av bilden och använd den som bakgrund istället.


Uppdatering 1: Ny förklaring, svar från Google

Utvidgar orsakerna till buggen som förklarats av XDA Senior Member Dålig Daemon och XDA Recognized Developer luca020400, är den "förbannade" tapeten kodad i en speciell färgrymd som kallas "Google/Skia/E3CADAB7BD3DE5E3436874D2A9DEE126" (detta är det fullständiga namnet på färgrymden, och Skia hänvisar till 2D-grafikbibliotek gjort av Google.) Däremot är de flesta andra tapetbilder kodade i en färgrymd som kallas "sRGB".

I Android-versioner 10 och äldre konverteras alla bilder till sRGB om inte annat anges av utvecklarna. Det finns en sällsynt bugg som kan uppstå när bilden konverteras till sRGB, där koden som beräknar "luminansvärdet" för varje pixel lyckas överskrida den maximala gränsen på 255.

Luminansen beräknas med följande formel:

Luminans = .2126f * r + .7152f * g + .0722f * b

Här är "r", "g" och "b" röda, gröna och blå färgvärden representerade i ett 8-bitars värde från 0 till 255.

Problemet med denna beräkning är att varje del alltid avrundas uppåt före den slutliga summeringen. En av pixlarna i den "förbannade" tapeten, när du håller på att konvertera bilden från sRGB och sedan i gråskala, har följande RGB-värden: 255, 255, 243, som när den är ansluten till ovanstående ekvation ser ut tycka om:

r: .2126 * 255 = 54.213 => 55

g: .7152 * 255 = 182.376 => 183

b: 0,0722 * 255 = 18,411 => 19

Luminans = r+ g + b = 257

Detta värde gör att SystemUI, och i princip hela operativsystemet, kraschar eftersom det överskrider maxvärdet. Det är en bugg som är så otroligt specifik eftersom den involverar en kombination av ett avrundningsfel och färgrymdskonverteringsfel.

Denna bugg påverkar inte Android 11 eftersom bildens "Skia"-färgrymd inte konverteras till sRGB som standard. Det här färgrymdskonverteringsfelet och avrundningsfelet inträffar alltså inte på Android 11.

Däremot Romain Guy från Android Toolkit-teamet på Google anser att grundorsaken till detta problem är bara på det sätt som luminans beräknas och inte i några färgrymdskonverteringsproblem. Google genomför sina egna interna tester, så vi får nog se vad de hittar på snart.

Denna förklaring uppdaterades för att klargöra att en av pixlarna i den "förbannade" tapeten är orsaken till detta specifika luminansavrundningsberäkningsfel. Vi klargjorde också att avrundningen sker under varje steg av luminansberäkningen och inte i slutet.


Uppdatering 2: Fixad i augusti 2020 patchar

Android-säkerhetskorrigeringarna för augusti månad gick precis live, och XDA Recognized Developer luca020400 såg en begå i AOSP som slår samman en fix för denna bakgrundsbugg.