Почему некоторые текстовые сообщения Unicode приводят к сбою ОС iPhone?

31

Недавно за последние несколько недель в Интернете обнаружился новый «сбой», когда отправили пользователя iPhone:

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

через iMessage он временно вылетает из операционной системы телефона и принудительно перезапускает принимающий телефон.

Почему это работает?

Шон Лофтин
источник
3
На самом деле, я считаю, что требуются только арабские символы (и, возможно, те, что после них). Текст «эффективной мощности» - это просто заполнитель и может быть чем угодно, но он должен быть достаточно длинным, чтобы уведомление обрезалось (или, по крайней мере, пыталось, поскольку именно это и вызывает сбой) на сторонних символах.

Ответы:

36

Если вам нужно исправить это, используйте Siri или Mac с помощью iMessage, чтобы отправить себе новое сообщение. См. Https://support.apple.com/en-us/HT204897.

Это трехэтапная процедура для восстановления, и в будущем обновлении программного обеспечения будет исправлена ​​эта ошибка.

  1. Попросите Сири «прочитать непрочитанные сообщения».
  2. Используйте Siri, чтобы ответить на вредоносное сообщение. После того, как вы ответите, вы сможете снова открыть Сообщения.
  3. Если проблема не устранена, нажмите и удерживайте вредоносное сообщение, нажмите Дополнительно и удалите сообщение из цепочки.

Что касается того, почему это происходит, то это особая ошибка в способе, которым Notification Center отображает Unicode-содержимое этого сообщения. Код выполняет «небезопасную» операцию (что-то вроде 5, деленное на 0 и затем не проверяет неожиданные результаты), которая вызывает необработанную ошибку.

Тогда, так как Центр уведомлений не может визуализировать блок текста и в конечном итоге вылетает Springboard, у которого не было кода для корректной обработки этого сбоя. Когда нет определенного обработчика ошибок, большинство операций имеют отказоустойчивый «перезагрузить себя», чтобы попытаться исправить ошибку.

Юникод - это способ кодирования символов, используемый для обработки языков с большим количеством символов, чем английский. У программистов могут быть проблемы с этим, потому что они научились программировать, используя текст ASCII, и они пренебрегают написанием своего программного обеспечения с полной поддержкой Unicode.

Одна хорошая статья об этом объясняет, что «если вы все еще программируете таким образом, вы не намного лучше, чем врач, который не верит в микробы».

Эта другая статья хорошо объясняет эту конкретную ситуацию.

Apple может либо проводить более строгие проверки кода, проводить специальные модульные тесты или позволить конечным пользователям выполнять тестирование кода, как в этом и аналогичных случаях .

tron_jones
источник
6

Это что-то для Apple, чтобы исправить.

Проблема возникает из-за того, что телефон пытается показать сообщение в уведомлениях. Символы приводят к тому, что эта система ломается, поэтому она кратко пытается показать ее перед сбоем, а затем перезагружает телефон, пытаясь это исправить.

Вот некоторые краткосрочные исправления, которые вы можете сделать, пока Apple не решит проблему.

  • Пусть человек, отправивший вам вредоносное сообщение, отправит другое сообщение, эффективно отменяя начальную цепь

  • Отправьте себе сообщение через Siri, в общий доступ или с вашего Mac.

  • Другой читатель отмечает, что «отправка фотографии контакту через приложение« Фото »может позволить им получить доступ к истории сообщений и удалить беседу».

источник: http://www.redmondpie.com/how-to-fix-ios-text-messages-crash-bug/

Ruskes
источник