IMessage Bug mit arabischem Text können Sie aus der Ferne jedes iPhone neu starten [UPDATE]

In iOS entdeckt extrem fiesen Fehler. iPhone, die eine Nachricht mit einem bestimmten Satz von Zeichen empfangen wird , wird neu geladen, und die "Nachrichten" app beginnt zu fallen.

DISCLAIMER1: Versuchen Sie dies nicht mit ihren Handys und Telefone von Kollegen! Gemessen an den Kommentaren, viele Menschen sind bereits mit ihren Handys infiziert und 100% -tnogo Medikamente noch!

DISCLAIMER2: Versuchen Sie nicht , auch als Wi-Fi - Punkt zu nennen!

DISCLAIMER3: Funktioniert auch durch alle sozialen Netzwerk oder messandzhery!

Vertrauen Sie nicht auf das iPhone senden !!!!

»Klicken Sie Spoiler zeigen - klicken Sie erneut zu verstecken ..."

Öffnen Sie eine Nachricht, einen Fehler in einem separaten Fenster (oder via iPhone zu öffnen!).

UPDATE

Es gibt ein paar einfache Möglichkeiten , um den Fehler zu beheben:

  • Öffnen Sie die Nachricht an das letzte Gespräch und eine Antwort auf die Joker senden;
  • Wenn Sie bereits die Meldung im Dialogmodus-Liste geöffnet, fragen Sie einen Freund Sie eine andere Nachricht zu senden;
  • Senden Sie sich selbst unabhängig eine Nachricht über Siri;
  • notieren und senden Sie es als Nachricht an Ihre Telefonnummer die "Share" -Taste.

Auch auf Reddit es Medizin beschrieben - ist erforderlich, eine SMS an beliebige Inhalt angegriffen Raum zu schicken, und eine Störung verschwindet. Lassen Sie mich erklären - nach gut, solange alle angegriffen Telefon funktioniert Neustart als das Opfer will nicht die SMS zu lesen, das heißt Laden Sie die Firmware-Nachrichten-Anwendung. Nach dem Empfang neuer SMS vom "Virus" des Absenders, wäre die Nachricht die letzte neue SMS und die Nachrichten, wird aufhören zu fallen logisch.

ARBEITS FIX von shram.kiev.ua

Stellen Sie Siri die letzte ungeöffnete Nachrichten zu lesen ( "Siri lesen letzte ungelesene Nachricht" oder "Siri meinem letzten Beitrag lesen"), dann erstellen Sie eine Notiz aus und senden es an sich selbst von iMessage.

Umgehung von Apple

In chertverg Nacht in dem neuen Dokument unterstützen, erkennt Apple den Fehler, der vor zwei Tagen entdeckt wurde, und bietet eine einfache Lösung vorübergehend , indem er erklärt die Korrektur , um dieses Problem zu arbeiten , wird durch ein Software - Update in naher Zukunft zur Verfügung stehen.

Die so genannte Unicode-Code des Todes, der auch als "Effektive Power" bekannt ist, ergibt sich aus der Tatsache, dass das System versucht, Unicode-Zeichen zu dekodieren verursacht Speicherüberlastung ustrystv und bewirkt, dass es neu zu starten. Viele Anwender haben berichtet, dass sie nicht in der Lage sind, die iMessage-Anwendung zu öffnen, nachdem diese arabischen Text zu empfangen.

Apples, napravilyala früheren Aussagen in den Medien, bestätigte den Fehler, aber in der Nacht von Donnerstag, den das Unternehmen veröffentlicht ein offizielles Dokument über die Anerkennung des Problems und die Platzierung von temporären Lösungen für diese.

Apple ist bekannt, ein iMessage Problem durch eine bestimmte Reihe von Unicode-Zeichen verursacht, und wir werden ein Update verfügbar in einem Software-Update zu machen. Bis das Update verfügbar ist, können Sie diese Schritte verwenden, um die Nachrichten App erneut öffnen.

Schritt 1: Drücken und halten Sie die Home - Taste , Siri zu bringen. Nach Activ von Siri ATED fragen "ungelesene Nachrichten lesen."

Schritt 2: Siri Art die Nachricht zu lesen (es unmöglich ist , es tatsächlich zu sagen , in der richtigen Englisch), und dann wird es zu fragen , ob Sie eine Nachricht beantworten möchten. Sagen Sie Ja.

Schritt 3: Sagen Sie etwas. Der eigentliche Inhalt der Antwort keine Rolle spielt. Was wichtig ist, ist, eine Nachricht zu senden.

Schritt 4: Wenn die Antwort gesendet wurde, sollten Sie in der Lage sein , die Nachrichten - Anwendung zu öffnen. Von dort aus, streichen Sie die gesamte Kette enthält eine Reihe von Zeichen, oder drücken und halten Sie die bösartige Nachrichten, klicken Sie auf Erweitert, und löschen Sie die Nachricht aus dem Gespräch zu entfernen.

Dies ist nicht das erste Problem zu umgehen wir in dieser Ausgabe gesehen haben. Wir tatsächlich mehrere Optionen gestern veröffentlicht. Menschen mit beeinträchtigter Geräte haben auch die Fähigkeit von Drittanbietern zwickt zu installieren, die das Problem zu vermeiden wird in erster Linie auftreten.

Wie die Berichterstattung Unternehmen in dieser Woche ausgestellt früher erwähnt das Support-Dokument am Donnerstagabend veröffentlicht auch das Unternehmen wird ein Update veröffentlichen, offenbar mit der Firmware 8.4, die sich noch in der Beta-Phase ?? Software-Updates in der nahen Zukunft.

Auf habrhabr.ru geschrieben, wenn nach Empfang solcher Nachrichten, versuchen Sie die Meldung im Dialoglistenmodus zu öffnen, wird die Anwendung beginnen zu fallen. "Meldungen" wird geöffnet, wenn sie direkt auf dem Bildschirm für ein weiteres Gespräch führen, aber wenn man auf der Liste der Gespräche zu gehen versuchen, wird die Anwendung beginnen wieder zu fallen.

Wir versuchen, und stellen Sie sicher, dass es wirklich funktioniert. Und die Werke sind nicht unbedingt von der SMS - Text war genug, um in jeder Push-Nachricht angezeigt werden, beispielsweise aus der viber, watzup, VKontakte und Facebook und andere Dienstleistungen.

Natürlich ist dies kein Neustart oder Absturz, und das Grafik-Subsystem zum Absturz bringen, die einen Neustart des gesamten Systems führt. da Fenster mit dem Text-Push-Nachrichten direkt in der grafischen Umgebung von iOS enthalten, und ist kein eigenes Widget (wie in Android), ist es logisch, dass jeder Fehler auf einem so hohen Niveau wird das System außer Gefecht zu bringen.

iMessages nimmt aus dem gleichen Grund wie der Rest von iOS, mit dem einzigen Unterschied aus - eine Stand-alone-Anwendung zu sein, ist es nicht der Fall meisten iOS provozieren Mainthread. Crash-Nachrichten ist aufgrund der Tatsache, dass auf dem Hauptbildschirm können Sie die letzten SMS-Nachrichten gesendet und empfangen zu sehen.

Bei diesem Projekt Habrahabr ein Testprojekt in Xcode erstellt. Wenn Sie versuchen, den Text direkt in der unseligen Interface Builder hinzufügen, erhalten wir einen Absturz von xCode, und es öffnet sich nicht, bis dahin, bis Sie das Testprojekt von der Festplatte entfernt haben.

Beim zweiten Versuch wurde arabische Text Code aus einer Textdatei hinzugefügt, und nach mehreren Versuchen, durch Versuch und Irrtum festgestellt, dass:

  • UILabel damit zu tun, ist es nicht einmal den Text zeigen, bleiben auf dem Wort Power;
  • ähnlich UITextField;
  • UITextView angezeigt perfekt den vollständigen Text;
  • UIButton erzeugt schlechten Zugang !!

Es gibt schon interessant. Wir drucken einen vollständigen Stack-Trace bt llvm-Team aus und so etwas wie dieses:

 * Thread # 1: tid = 0xf611cd, 0x00000001120ce5f3 CoreText`CopyFromStorage (TRunGlue & lang) + 28, Warteschlange = 'com.apple.main-Thread', Stop Grund = EXC_BAD_ACCESS (Code = 1, Adresse = 0x90) frame # 0: 0x00000001120ce5f3 CoreText`CopyFromStorage (TRunGlue & lang) + 28 frame # 1: 0x00000001120ce283 CoreText`TRunGlue :: RotateGlyphs (CFRange, lang) + 527 Frame # 2: 0x000000011212b71b CoreText`OpenTypeShapingEngine :: ApplyScriptShaping (unsigned int *) + 465 frame # 3 : 0x00000001120d0201 CoreText`TOpenTypeMorph :: ApplyShapingEngine (OTL :: GSUB &, OTL :: GlyphLookups & unsigned int *, CFRange, bool &) + 739 frame # 4: 0x00000001120d1007 CoreText`TOpenTypeMorph :: ShapeGlyphs (Bool &) + 331 frame # 5: 0x0000000112056c4e CoreText`TShapingEngine :: ShapeGlyphs (TLine &, TCharStream const *) + 264 frame # 6: 0x000000011205c48b CoreText`TTypesetter :: FinishEncoding (std :: __ 1 :: tuple  *, Unsigned int, unsigned char> const &, TLine & unterzeichnete char) + 127 frame # 7: 0x0000000112070586 CoreText`TTypesetterAttrString :: Initialize (__ CFAttributedString const *) + 674 frame # 8: 0x000000011207029a CoreText`TTypesetterAttrString :: TTypesetterAttrString (__ CFAttributedString const * ) + 158 frame # 9: 0x000000011205d79f CoreText`CTLineCreateWithAttributedString + 63 frame # 10: 0x0000000110c6d8bd UIFoundation`__NSStringDrawingEngine + 18744 frame # 11: 0x0000000110c68f5f UIFoundation`- [NSString (NSExtendedStringDrawing) boundingRectWithSize: Optionen: Attribute: Kontext:] + 198 frame # 12 : 0x000000010e875788 UIKit`- [UIButton _intrinsicSizeWithinSize:] + 946 frame # 13: 0x000000010ec2466d UIKit`- [UIView (UIConstraintBasedLayout) intrinsicContentSize] + 37 frame # 14: 0x000000010ec24b6c UIKit`- [UIView (UIConstraintBasedLayout) _generateContentSizeConstraints] + 33 frame # 15: 0x000000010ec24930 UIKit`- [UIView (UIConstraintBasedLayout) _updateContentSizeConstraints] + 422 frame # 16: 0x000000010ec2bd25 UIKit`- [UIView (AdditionalLayoutSupport) updateConstraints] + 162 frame # 17: 0x000000010e87521b UIKit`- [UIButton updateConstraints] + 2925 frame # 18: 0x000000010ec2b346 UIKit `- [UIView (AdditionalLayoutSupport) _internalUpdateConstraintsIfNeededAccumulatingViewsNeedingSecondPassAndViewsNeedingBaselineUpdate:] + 242 frame # 19: 0x000000010ec2b53e UIKit`- [UIView (AdditionalLayoutSupport) _updateConstraintsIfNeededAccumulatingViewsNeedingSecondPassAndViewsNeedingBaselineUpdate:] + 124 frame # 20: 0x000000010e0bd354 CoreFoundation`CFArrayApplyFunction + 68 frame # 21: 0x000000010ec2b2ed UIKit`- [UIView (AdditionalLayoutSupport) _internalUpdateConstraintsIfNeededAccumulatingViewsNeedingSecondPassAndViewsNeedingBaselineUpdate:] + 153 frame # 22: 0x000000010d9ef1be Foundation`- [NSISEngine withBehaviors: performModifications:] + 155 frame # 23: 0x000000010ec2b53e UIKit`- [UIView (AdditionalLayoutSupport) _updateConstraintsIfNeededAccumulatingViewsNeedingSecondPassAndViewsNeedingBaselineUpdate:] + 124 frame # 24: 0x000000010ec2ba0e UIKit` __60- [UIView (AdditionalLayoutSupport) updateConstraintsIfNeeded] _block_invoke + 96 frame # 25: 0x000000010d9ef1be Foundation`- [NSISEngine withBehaviors: performModifications:] + 155 frame # 26: 0x000000010ec2b6d6 UIKit`- [UIView (AdditionalLayoutSupport) updateConstraintsIfNeeded] + 231 frame # 27: 0x000000010ec2bdde UIKit`- [UIView (AdditionalLayoutSupport) _updateConstraintsAtEngineLevelIfNeeded] + 146 frame # 28: 0x000000010e623a3d UIKit`- [UIView (Hierarchie) _updateConstraintsAsNecessaryAndApplyLayoutFromEngine] + 114 frame # 29: 0x000000010e62fa2b UIKit`- [UIView (CALayerDelegate) layoutSublayersOfLayer:] + 536 frame # 30: 0x0000000111e08ec2 QuartzCore`- [CALayer layoutSublayers] + 146 frame # 31: 0x0000000111dfd6d6 QuartzCore`CA :: Schicht :: layout_if_needed (CA :: Transaktion *) + 380 frame # 32: 0x0000000111dfd546 QuartzCore`CA :: Schicht :: layout_and_display_if_needed ( CA :: Transaktion *) + 24 frame # 33: 0x0000000111d69886 QuartzCore`CA :: Context :: commit_transaction (CA :: Transaktion *) + 242 frame # 34: 0x0000000111d6aa3a QuartzCore`CA :: Transaktion :: commit () + 462 Rahmen # 35: 0x000000010e5ada2d UIKit`- [UIApplication _reportMainSceneUpdateFinished:] + 44 frame # 36: 0x000000010e5ae6f1 UIKit`- [UIApplication _runWithMainScene: transitionContext: Fertigstellung:] + 2648 frame # 37: 0x000000010e5ad0d5 UIKit`- [UIApplication workspaceDidEndTransaction:] + 179 frame # 38: 0x0000000110d835e5 FrontBoardServices`__31- [FBSSerialQueue performAsync:] _ block_invoke_2 + 21 frame # 39: 0x000000010e0ea41c CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 12 frame # 40: 0x000000010e0e0165 CoreFoundation`__CFRunLoopDoBlocks + 341 frame # 41: 0x000000010e0dff25 CoreFoundation`__CFRunLoopRun + 2389 frame # 42: 0x000000010e0df366 CoreFoundation`CFRunLoopRunSpecific + 470 frame # 43: 0x000000010e5acb42 UIKit`- [UIApplication _run] + 413 frame # 44: 0x000000010e5af900 UIKit`UIApplicationMain + 1282 * frame # 45: 0x000000010d91ed0f Islam`main (argc = 1, argv = 0x00007fff522e1330) + 111 an main.m: 14 frame # 46: 0x000000011076e145 libdyld.dylib`start + 1 

Die letzte Funktion ist CTLineCreateWithAttributedString dokumentiert, wir grundsätzlich nichts. der Absturz selbst erfolgt innerhalb einer Methode CopyFromStorage (TRunGlue &, lang) und durch die Assembler-Code zu urteilen, wenn Bytes lang lange kopiert n von einem Teil des Speichers zu einem anderen (movq 0x90 (% rax)% RDX).

Ich nehme an, dass es geschieht aufgrund einiger Unterschiede bei der Berechnung der Länge des arabischen Textes - offenbar, die Länge in zwei Teile des Programms in unterschiedlicher Weise berechnet wird. Hier kann ich Fehler machen, und kenntnisreiche Leute fragen zu verbessern.

Der Fehler scheint, gibt es so viele, wie es von iOS, und wurde durch Zufall gesehen, anscheinend. By the way, eingefügt das Wort Power für Effekt und keine Rolle spielt. Die Bedeutung des Textes war ich nicht in der Lage, auch mit Google zu identifizieren Übersetzen (das letzte Zeichen - nicht Arabisch und Chinesisch, und ist die Redundanz, die andeuten würde!). Vielleicht aufgrund der Anwesenheit von chinesischen und arabischen Zeichen zur gleichen Zeit?

Hinter diesen Urlaub, ich wünsche Ihnen alle Codes 200, baut und ohne EXC_BAD_ACCESS Stackoverflow produktiven und angenehmen Ende der Arbeitswoche!