Google ha roto millones de teléfonos este fin de semana y ni te has enterado
Puede que el pasado viernes 13, como si de una película de terror se tratara, tu dispositivo Android dejase de funcionar de la noche a la mañana. Y además, sin ninguna causa aparente.
Si estás entre ese selecto grupo de afectados habrás notado que no puedes abrir ninguna aplicación de Google (Gmail, YouTube, Play Store, Google Chrome, Google Maps, etc.) pero tampoco determinadas aplicaciones de terceros, entre las que se incluyen WhatsApp y Telegram.
Es decir, este fallo te impide navegar por Internet usando Chrome, consultar tu correo electrónico, enviar y recibir mensajes de WhatsApp y ver vídeos desde YouTube.
Y por si esto fuera poco, la sincronización con Google el dispositivo se vuelve inestable (inusable incluso en algunos momentos) y el consumo de batería se dispara. Vamos, que pasas de tener un teléfono a un potente radiador de bolsillo de corta duración, perfecto para el verano.
Pero, ¿cuál es la causa de este apocalipsis tecnológico? Tirando de los sospechosos habituales nos encontramos al culpable: los servicios de Google Play.
El origen del problema
La principal peculiaridad de este fallo es que afecta a un nicho muy concreto de los dispositivos Android: aquellos con un procesador MediaTek de 64 bits.
Por ahora, la mayoría de los dispositivos afectados parecen ser teléfonos de Meizu, Xiaomi y Lenovo, entre otros fabricantes chinos, que son los que más fuertemente apuestan por procesadores de MediaTek.
Aunque Google todavía no se ha pronunciado oficialmente (salvo por un “lo estamos mirando”, si es que eso cuenta) todo apunta a que la última versión de Google Play Services (la 12.8.72) posee un fallo de desbordamiento de la pila que provoca un bloqueo en el hilo principal de dicha aplicación, llevándose consigo el resto de apps que dependen de ella.
Por eso no solo las aplicaciones de Google no funcionan (como era de esperar), sino que otras apps que usen APIs como Google Cloud Messaging (ahora llamado FCM) también se ven afectadas. Y, qué casualidad, GCM es la API que usan tanto WhatsApp como Telegram para recibir notificaciones instantáneas de nuevos mensajes entrantes.
Sobre el tema de la batería y el sobrecalentamiento, parece que el responsable es el proceso “dex2oat” de Android Runtime (ART) y su exagerado uso de CPU. Este proceso sustituye a Dalvik en las últimas versiones de Android y se encarga de compilar las aplicaciones a lenguaje máquina específico del dispositivo en el momento de la instalación de una aplicación.
Por tanto, si este fallo solo ocurre en dispositivos con procesadores MediaTek de 64 bits y ART se atraganta al intentar compilar el bytecode de la actualización de Google Play Services, puede ser por varias causas:
- Los procesadores afectados tienen un error de diseño en su set de instrucciones que hace fallar al sistema operativo.
- ART tiene un bug que compila incorrectamente a lenguaje máquina cuando se trata de uno de estos procesadores.
- Las causas 1 y 2 juntas.
Y ahora, ¿qué hacemos?
Pese a que la actualización de los servicios de Google Play ha provocado lo que podría considerarse un “soft-brick” de millones de dispositivos Android volviéndolos inusables, Google se está tomando su tiempo para resolver este problema y, a fecha de escribir este artículo, todavía no ha lanzado una actualización que solucione el fallo o proporcionado una solución temporal que funcione.
Por suerte, en Internet los héroes no llevan capa y uno de ellos es “Anatoliy”, que en apenas cinco sencillos pasos se adelanta a los ingenieros de Google y nos regala una solución temporal hasta que sea lanzado un parche:
- Abre la aplicación de “Ajustes” de tu dispositivo
- Accede al apartado “Cuentas” y después selecciona “Google”
- Pulsa en la opción “Administrar cuenta de Google” o simplemente “Cuenta de Google”
- Espera entre 5 y 10 minutos a que aparezca algo en la pantalla
- ¡Listo!
Por absurdo que parezca, esto funciona. He intentado obtener una traza de Google Play Services en el momento de realizar este proceso y, para mi sorpresa, no he encontrado nada que ayude a explicar ni la causa del fallo ni la solución, así por el momento diremos que es “magia”.
Para tí, Anatoliy, ¡chapó! 👏
- Hilo en el foro de ayuda de Google Play: https://productforums.google.com/forum/#!topic/play/gDLDqOY20DM
- Incidencia en Google Issue Tracker: https://issuetracker.google.com/issues/111465510