¿Por qué algunos mensajes de texto Unicode bloquean el sistema operativo iPhone?

31

Recientemente, ha surgido un nuevo "problema técnico" en Internet en las últimas semanas, en el que si se envía a un usuario de iPhone:

  effective. 
      Power
           لُلُصّبُلُلصّبُررً ॣ ॣh ॣ ॣ
 冗

a través de iMessage bloquea temporalmente el sistema operativo del teléfono y fuerza reiniciar el teléfono receptor.

¿Por qué funciona esto?

Shaun Loftin
fuente
3
En realidad, creo que solo se requieren los caracteres árabes (y tal vez los siguientes). El texto de "poder efectivo" es solo un relleno y puede ser cualquier cosa, pero debe ser lo suficientemente largo para que la notificación se trunca (o al menos lo intenta, ya que esto es lo que causa el bloqueo) en los caracteres extraños.

Respuestas:

36

Si necesita una solución para esto, use Siri o una Mac con iMessage para enviarse un mensaje nuevo. Ver https://support.apple.com/en-us/HT204897

Es un procedimiento de tres pasos para recuperar y una futura actualización de software parcheará este error.

  1. Pídale a Siri que "lea los mensajes no leídos".
  2. Use Siri para responder al mensaje malicioso. Después de responder, podrá volver a abrir Mensajes.
  3. Si el problema continúa, toque y mantenga presionado el mensaje malicioso, toque Más y elimine el mensaje del hilo.

En cuanto a por qué sucede, es un error específico en la forma en que el Centro de notificaciones presenta el contenido Unicode de este mensaje. El código realiza una operación "insegura" (algo similar a 5 dividido por 0 y luego no busca resultados inesperados) que causa un error no controlado.

Entonces, dado que el Centro de notificaciones no puede procesar el bloque de texto y finalmente bloquea el trampolín que no tenía código para manejar esta falla con gracia. Cuando no hay un controlador de errores específico, la mayoría de las operaciones tienen un "reinicio" a prueba de fallas para intentar solucionar el error.

Unicode es una forma de codificar caracteres utilizados para manejar idiomas que tienen un mayor recuento de caracteres que el inglés. Los programadores pueden tener problemas porque aprendieron a programar utilizando texto ASCII y no escriben su software con soporte completo de Unicode.

Un buen artículo sobre esto explica "si todavía está programando de esa manera, no es mucho mejor que un médico que no cree en los gérmenes".

Este otro artículo explica bien esta situación específica.

Apple podría hacer revisiones de código más estrictas, realizar pruebas unitarias específicas o dejar que los usuarios finales prueben su código de forma difusa como en este y otros casos similares .

tron_jones
fuente
6

Es algo que Apple debe arreglar.

El problema parece provenir de la forma en que el teléfono intenta mostrar el mensaje en las notificaciones. Los caracteres hacen que el sistema se rompa, por lo que intenta mostrarlo brevemente antes de fallar y luego volver a configurar el teléfono en un intento de arreglarlo.

Aquí hay algunas soluciones a corto plazo que puede hacer hasta que Apple solucione el problema.

  • Haga que la persona que le envió el mensaje malicioso envíe otro mensaje cancelando efectivamente la cadena inicial

  • Envíe un mensaje a través de Siri, la hoja compartida o desde su Mac.

  • Otro lector señala que "enviar una foto al contacto a través de la aplicación Fotos puede permitirles acceder al historial de mensajes y eliminar la conversación"

fuente: http://www.redmondpie.com/how-to-fix-ios-text-messages-crash-bug/

Ruskes
fuente