To emoji ⚫ powoduje awarię dowolnej aplikacji na Androidzie

Jeśli wyślecie wiadomość z odpowiednią kombinacją emoji, to dotknięcie takiego znaku może zawiesić dowolną aplikację na Androida – na szczęście błąd nie jest niebezpieczny i uciążliwy.

Nie dotykaj tego Emoji
Nie dotykaj tego Emoji

Jeśli w wiadomości w komunikatorze mobilnym (np. WhatsApp) otrzymacie wiadomość np. z takim emoji ⚫ to dotknięcie czarnej kropki w tajemniczy sposób spowoduje awarię aplikacji mobilnej. Być może już to zdążyliście zauważyć i zastanawiacie się, w jaki sposób dotknięcie pojedynczego emotikonu może spowodować zawieszenie się aplikacji. Odpowiedź, nie jest zaskakująca.

Wiadomość z odpowiednią kombinacją emoji, którą widzicie powyżej, składa się z większej liczby znaków niż to, co widzimy. Można się tego domyślić, gdy klikniemy w dowolnym miejscu wiadomości, nie tylko na czarną kropkę i wyzwolimy błąd.

Faktem jest, że w takiej wiadomości są w przybliżeniu dwa tysiące niewidocznych znaków, które powodują, że mechanizm renderowania tekstu pod Androidem ulega awarii i ostatecznie zawiesza aplikację, szczególnie na starszych urządzeniach. Niektóre nowsze smartfony, takie jak Pixel 2, wydają się odzyskiwać  sprawność po zawieszeniu i nie zamykają aplikacji.

Przeczytaj także: Sprawdź webową grę AI „Emoji Scavenger Hunt” ??‍♀️ od Google’a

<⚫> ?? nie dotykaj tego tekstu

Wydaje się, że mobilna przeglądarka Chrome zachowuje się inaczej po dotknięciu powyższego tekstu i prawdopodobnie nie spowoduje jej zawieszenia i restartu, ale skopiowanie tekstu do innej aplikacji prawdopodobnie juz tak.

Znany YouTuber Tom Scott zamieścił krótkie wyjaśnienie, jak dokładnie działa ten błąd. Otóż polega to na tym, że niewidoczna część wiadomości składa się ze znaków specjalnych [OBJ], których Unicode używa do określenia, czy dany tekst powinien być rozłożony od prawej do lewej, czy od lewej do prawej. Znaki te są niezbędne do prawidłowego wyświetlania tekstu w kilku językach pisanych od prawej do lewej strony, takich jak hebrajski i arabski.

Nie ma w tym nic złego. Nowoczesne urządzenia od dziesięcioleci potrafią obsługiwać tekst LTR i RTL, nawet w tym samym zdaniu. Problem pojawia się tylko wtedy, gdy dziwna kombinacja znaków wyzwala jakiś niejasny błąd w silniku renderującym – co dokładnie dzieje się w tym przypadku.

Sekwencja dwóch tysięcy znaków wielokrotnie zmienia orientację tekstu, a gdy silnik nie może obsłużyć tego ciągu znaków, blokuje się i powoduje awarię aplikacji. Dziwne jest to, że Android może wyświetlać znaki bez żadnego problemu, ale blokuje się dopiero wtedy, gdy użytkownik próbuje dotknąć takiej wiadomość.

Znaki specjalne [OBJ] określające kierunek tekstu w emoji
Znaki specjalne [OBJ] określające kierunek tekstu w emoji
Błąd jest związany z mechanizmem renderowania tekstu Androida, więc prawie każda aplikacja wyświetlająca taki tekst jest na niego podatna (jednak wydaje się, że Chrome jest odporny na ten błąd).

Na szczęście błąd jest również w większości przypadków nieszkodliwy

Nie spowoduje on utraty danych, nie zmusi urządzenia do ponownego uruchomienia i nie uniemożliwi zamknięcia aplikacji i jej ponownego otwarcia. To nie jest pierwszy błąd tego rodzaju, z którym się zetknęliśmy i na pewno nie będzie ostatni, i to nie tylko pod Androidem. Doskonale pamiętamy znak z języka telugu, który powodował zawieszenie iPhone’a pod systemem iOS 11.2.5.

Nie ma też nic szczególnego w emoji w czarną kropkę, ponieważ to nie samo emoji powoduje awarię. Każdy inny emoji działa podobnie, chociaż czarna kropka ma prawdopodobnie bardziej złowieszczy charakter. Jeśli chcesz wypróbować coś nieco bardziej radosnego, oto kilka innych przykładów:

  • <?>?? nie dotykaj tej wiadomości
  • <?>?? nie dotykaj tej wiadomości
  • <?>?? nie dotykaj tej wiadomości
  • <❤>?? nie dotykaj tej wiadomości
  • <?>?? nie dotykaj tej wiadomości
  • <?>?? nie dotykaj tej wiadomości
  • <?>?? nie dotykaj tej wiadomości

Najprawdopodobniej Google wyda poprawkę, która rozwiąże ten problem. W tym czasie unikaj dotykania podejrzanych wiadomości nawet od znajomych, jeśli nie chcesz, aby Twoje aplikacje się zawieszały.

źródło: Android Police