Android: uno sfondo manda in crash gli smartphone
Dopo la stringa che mandava in tilt gli iPhone, adesso tocca ad Android affrontare un problema simile. In questo caso si tratta di una semplice immagine che, se messa come sfondo dello smartphone, ne causa il blocco.
A renderlo noto è stato Ice Universe, noto leaker Android, con un tweet, pubblicando anche l’immagine incriminata. Non tutti i modelli sono affetti dal problema, ma ad oggi non si conoscono con certezza tutti i confini del “bug”, ed è quindi consigliabile evitare di impostare lo sfondo che causa il crash.
Android: un’immagine per bloccarlo
Quando si prova ad impostare come sfondo l’immagine condivisa da Ice Universe, lo smartphone entra in un loop di crash e riavvii che è quasi impossibile fermare. Neanche accendendolo in modalità “safe” si è sempre in grado di fermare il ciclo. Alcuni utenti sono riusciti a cambiare lo sfondo tra un riavvio e l’altro, ma la maggior parte di loro non è stata in grado, a causa del poco tempo tra i reboot. Nella maggioranza dei casi è stato necessario effettuare un factory reset per poter utilizzare lo smartphone.
Dai report degli utenti che hanno segnalato il bug, i device più colpiti sono quelli Samsung e Google, in particolare con sistema operativo Android 10. Alcuni test, ad esempio, hanno rivelato che il Mate 20 Pro non è affetto dal problema, mentre il Google Pixel 2 diventa inutilizzabile.
Le diverse testimonianze hanno evidenziato che il problema si manifesta soltanto se l’immagine è impostata come sfondo: nessun pericolo, sembrerebbe, se viene aperta con Google foto o scaricata come allegato. Nel dubbio, però, è meglio evitare qualsiasi rischio e cancellare immediatamente l’immagine, se ricevuta.
Che cosa succede?
Davide Bianco ha spiegato ad AndroidAuthority il perché del crash. Il problema risiede nel modo in cui la UI del sistema gestisce le immagini: nello specifico, vengono gestite soltanto le immagini sRGB per lo sfondo, e non quelle non-sRGB.
Nel caso dell’immagine del crash, si ha uno spazio di colore molto più ampio rispetto a quello catturato dagli smartphone Android, che si limitano all’sRGB (perlomeno nel sistema operativo 10). Nella classe che si occupa del rendering delle immagini, chiamata ImageProcessHelper, viene utilizzata una variabile per accedere all’histogram array, che viene usato nelle immagini sRGB per rappresentare la distribuzione di colore nei pixel dello schermo. La variabile contiene la somma dei valori sRGB di un singolo pixel, e viene usata per ottenere uno specifico elemento dell’array. La lunghezza massima dell’histogram è 256.
Nel caso di immagini sRGB la somma è sempre 255. La nostra immagine, però, non è sRGB, e la somma dei valori supera 255. Accedendo all’histogram array si verifica quindi una out-of-bound exception, che porta al loop di riavvii. Una possibile soluzione sarebbe quella di controllare il valore di y e riportarlo a 255 qualora fosse superiore, ma questo porterebbe inevitabilmente ad un abbassamento di qualità dell’immagine.
Android 11 non soffre di questo problema, in quanto in questa versione del sistema operativo ogni immagine viene normalizzata a sRGB prima che venga processata e visualizzata. Samsung, informata del problema a Maggio, sta già lavorando a un firmware update per risolvere il bug.