2331869

Telugu-Bug unter iOS und macOS: Versuch einer Erklärung

19.02.2018 | 13:45 Uhr |

Die Abstürze von iOS- und macOS-Apps werden offenbar durch die Darstellung komplexerer Unicode-Zeichen ausgelöst

Die Sprache Telugu ist zwar in Europa wenig bekannt, allerdings wird sie in Indien von etwa 74 Millionen Menschen gesprochen. Wie kann es nun sein, dass ein Zeichen dieser Sprache unter iOS Ärger bereitet? Dass der Fehler nicht schon länger bekannt ist, hängt vermutlich damit zusammen, dass es sich beim Problem-Zeichen "Gna" um ein zusammengesetztes Symbol handelt, das aus den Unicode-Zeichen U+0C1C U+0C4D U+0C1E U+200C U+0C3E besteht. Um dieses Zeichen „Gna“ zu erstellen muss man etwa auf einer indischen Tastatur die Zeichen j, z aa eingeben um es zu generieren.

Seltsamer Zufall: Laut "Times of India" tritt es etwa bei der Bildung des Wortes „Gnamam“ auf, was Weisheit oder Wissen bedeutet, ebenso bei „Agnathavasai“, was bedeutet, dass jemand von der Welt abgeschnitten ist... Bei einem aktuellen iOS 11 oder macOS 11.3 muss man jedenfalls diesen Text nur als Nachricht empfangen oder in ein Mac-Programm kopieren und das Programm und auch Spotlight stürzen sofort ab.

Probleme mit Unicode?

Apple war immer darauf stolz, dass macOS und iOS so gut wie alle Sprache und Schriften unterstützen. Offensichtlich liegt aber in dieser Sprachunterstützung ein grundIegendes Problem. Zeichen wie Gna liegen nicht als eine aufrufbare Datei vor, sondern werden als Unicode-Zeichen definiert und bei Bedarf erst vom System gerendert bzw. für die Darstellung vorbereitet. Offensichtlich sollte man die Komplexität dieser Berechnung nicht unterschätzen. Bisher ist nicht ganz klar, welcher Prozess bei Apples App eigentlich abstürzt, ob es etwa bei der Generierung der Zeichen oder bei der Darstellung geschieht. So sind ja auch nicht alle Apple-Programme betroffen, Textedit kann das Zeichen problemlos darstellen, Safari als Element einer HTML-Seite ebenfalls – außer man kopiert es in Safari, dann stürzt Safari ab.

Leider sind es nicht nur einzelne besondere Zeichen, die betroffen sind. Auch durch bestimmten Zeichenfolgen in Bengal und anderen indischen Sprachen lassen sich App-Abstürze provozieren, wie Manish Goregaokar nachweist. Anscheinend macht Apple Textrenderer, der Schrift darstellt, hier einen grundlegenden Fehler. Eine Vermutung hat Philippe Verdy : Nach Vermutung des Entwicklers legt Apples Schrift-Engine bereits während der Schriftdarstellung eine Cachedatei an. Das führt bei komplexen Zeichensequenzen zu Problemen, wenn etwa ein Zeichen in der Sequenz die Darstellung der anderen Zeichen bedingt, etwa eine sogannte Glyphensubstitution. Die Theorie: Besteht etwa ein solcher Zeichencache und verlangt ein etwas später kommendes Zeichen in der Sequenz  eine Änderung des schon halb gerenderten Cache-Inhalts, führt dies zum Programmabsturz.

Wir hoffen, dass Apple mit dem versprochenen Update nicht nur die Darstellung einzelner Zeichen flickt, sondern hier gründlich nachbessert. Da Apple aber immer wieder Indien als wichtigen Zukunftsmarkt bezeichnet hat, kann man sich solche Fehler eigentlich erst recht nicht erlauben.

Macwelt Marktplatz

0 Kommentare zu diesem Artikel
2331869