DISCLAIMER

Не пытайтесь повторить это со своими телефонами и телефонами коллег! Судя по комментариям, много людей уже заразили свои телефоны, а 100%-тного лекарства еще нет!

DISCLAIMER 2

Даже не пытайтесь назвать так Wi-fi точку!

Около 15 часов назад на Reddit появился забавный пост, который рассказывал о перезагрузке айфона после странного сообщения вида:
Не шлите никому на айфон
Power
?????????????????? ? ?h ? ?
?



Мы с коллегами попробовали и убедились, что это реально работает. Причем работает не обязательно от смс — тексту достаточно было появиться в любом пуш-сообщении.

Конечно же, это не перезагрузка, а крэш графической подсистемы, который вызывает перезагрузку всей системы. Т.к. окно с текстом пуш-сообщения напрямую входит в графическую оболочку iOS, а не является отдельным виджетом (как, например, в Android), логично, что любая ошибка на столь высоком уровне выведет систему из строя.

Также на Reddit было описано лекарство — требуется прислать смс любого содержания на атакованный номер, и глюк пропадет. Поясню — после перезагрузки атакованного телефона все работает нормально до тех пор, пока жертва не хочет прочитать смс, т.е. загрузить встроенное приложение Messages.

Messages вылетает по той же причине, что и вся iOS, с единственной разницей — являясь отдельным приложением, она не провоцирует падение mainthread самой iOS. Крэш Messages происходит из-за того, что на главном экране вы видите тексты последних отправленных и полученных сообщений. После получения нового смс от отправителя «вируса», последним сообщением станет новое смс и Messages, логично, перестанет падать.

Мне стало интересно, почему именно все так печально крешится, и я создал тестовый проект в xCode. При попытке добавить злополучный текст прямо в Interface Builder, я получил крэш самого xCode, причем он не открывался до тех пор, пока я не удалил тестовый проект с жесткого диска.

Со второй попытки я добавлял арабский текст кодом из текстового файла и после нескольких попыток, путем проб и ошибок выяснил, что:
  • UILabel ни при чем, он не может даже показать текст, останавливаясь на слове Power;
  • UITextField аналогично;
  • UITextView прекрасно отобразил полный текст;
  • UIButton сгенерировал bad access!!


Тут уже интересней. Распечатываем полный стэк трейс llvm-командой bt и получаем примерно следующее:

* thread #1: tid = 0xf611cd, 0x00000001120ce5f3 CoreText`CopyFromStorage(TRunGlue&, long) + 28, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x90)
    frame #0: 0x00000001120ce5f3 CoreText`CopyFromStorage(TRunGlue&, long) + 28
    frame #1: 0x00000001120ce283 CoreText`TRunGlue::RotateGlyphs(CFRange, long) + 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<TLine const*, TCharStream const*, void const* (*)(__CTRun const*, __CFString const*, void*), void*, std::__1::shared_ptr<TBidiLevelsProvider>*, unsigned int, unsigned char> const&, TLine&, signed 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:options:attributes:context:] + 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(Hierarchy) _updateConstraintsAsNecessaryAndApplyLayoutFromEngine] + 114
    frame #29: 0x000000010e62fa2b UIKit`-[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 536
    frame #30: 0x0000000111e08ec2 QuartzCore`-[CALayer layoutSublayers] + 146
    frame #31: 0x0000000111dfd6d6 QuartzCore`CA::Layer::layout_if_needed(CA::Transaction*) + 380
    frame #32: 0x0000000111dfd546 QuartzCore`CA::Layer::layout_and_display_if_needed(CA::Transaction*) + 24
    frame #33: 0x0000000111d69886 QuartzCore`CA::Context::commit_transaction(CA::Transaction*) + 242
    frame #34: 0x0000000111d6aa3a QuartzCore`CA::Transaction::commit() + 462
    frame #35: 0x000000010e5ada2d UIKit`-[UIApplication _reportMainSceneUpdateFinished:] + 44
    frame #36: 0x000000010e5ae6f1 UIKit`-[UIApplication _runWithMainScene:transitionContext:completion:] + 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 at main.m:14
    frame #46: 0x000000011076e145 libdyld.dylib`start + 1

Последней документированной функцией является CTLineCreateWithAttributedString, что нам в принципе ничего не дает. Сам же крэш происходит внутри метода CopyFromStorage(TRunGlue&, long) и, судя по ассемблерному коду, в момент копирования байтов длиной long n из одной части памяти в другую (movq 0x90(%rax), %rdx).

Предполагаю, что происходит это из-за каких-то различий в вычислении длины арабского текста — видимо, длина вычисляется в двух местах программы разными методами. Здесь я могу ошибаться и прошу поправить знающих людей.

Баг, видимо, существует столько же, сколько и iOS, и был замечен, видимо, случайно. Кстати, слово Power вставлено для красного словца и роли не играет. Смысл же текста мне не удалось выявить даже с помощью Google Translate (последний символ — вовсе не арабский, а китайский, и означает Избыточность, что как бы намекает!). Возможно, из-за присутствия китайских и арабских символов одновременно?

За сим откланяюсь, желаю всем кодов 200, билдов без exc_bad_access и stackoverflow и приятного окончания продуктивной рабочей недели!

Комментарии (137)


  1. Envek
    28.05.2015 14:52
    +9

    Занудства ради скажу, что там не только арабский (или родственные ему). В конце стоит китайский (точнее CJK) иероглиф, а по центру вообще чёрти-что, наводящее на мысль о хинди или бенгальском. Вы проверяли, всё рушит только сообщение целиком или определённая его часть?


    1. iago Автор
      28.05.2015 15:07
      +26

      О как интересно, мне почему-то до сих пор это в голову не пришло. Минимально опасный текст таков:

      Заголовок спойлера
      а
      ?? ? ?
      ?


      1. varrt
        28.05.2015 15:58
        +5

        Отправил себе через сервис мегафона на 5s — пришло следущее

        а
        &# 1585;&# 1585; &# 2403; &# 2403;
        &# 20887;
        


        потом отправил себе через pushbullet, и он перестал запускаться) Даже после перегруза...) Помогло только убийство мессаги через ПК

        *Поставил пробелы после диеза, так как текст обращался в злополучное сообщение


      1. 6a6ypek
        28.05.2015 16:26
        +4

        Отправил сам себе с виндофона:
        первый текст не отправляется, второй не работает, «кастомный» тоже не работает.
        iOS 7.1.2

        кастомная SMS
        image


        1. 6a6ypek
          28.05.2015 16:32
          +5

          Кстати телефон вполне дал зайти на Хабр, скопировать злополучный текст SMS, и отправить его обратно.

          Не отправил потому, что денег нет на счету :3
          image


          1. 6a6ypek
            29.05.2015 23:06

            Видимо подвержена только 8.3 версия iOS.
            Проверил на пачке айфонов и падов, версии от 6.1.3 до 7.1.2 не подвержены. 8.0.2 тоже, вроде не подавала признаков ошибки.

            Вайфай точка доступа ничего страшного не делает с айфоном 4S и iPad Air на 8.3, но сообщение отправленное через iMessage «жертве», при попытке «злоумышленником» открыть сообщения, крашит его самого.

            В случае двух устройств — планшет и телефон, все не так страшно. Планшет крашился сразу, а телефон секунд через 5-8. За это время можно стереть у себя вредоносное сообщение из отправленных, и дать ему отсинхриться на другое (другие) устройства.
            Что происходит у «жертвы» — я х.з. Путь тот коллега сам со своей женой разбирается :)

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


      1. DIHALT
        28.05.2015 19:10
        +2

        Все же понятно. Там написано:

        Жопа, смотри!
        П… ц!


        1. WerewolfPrankster
          29.05.2015 00:57
          -10

          Вам, с вашим ником, в этом топике вообще появляться не стоило.


          1. DIHALT
            29.05.2015 08:45
            +5

            Шта?


            1. WerewolfPrankster
              29.05.2015 08:47

              Блин, ну я думал хоть вы поймете… Какими двумя «словами» повестить Z80?


              1. DIHALT
                29.05.2015 08:48
                +1

                Да я понял, только тут мимо как бы.


                1. WerewolfPrankster
                  29.05.2015 08:54
                  +1

                  Про мимо и я уже понял. Извините, если задел.


                  1. igordata
                    02.06.2015 11:11

                    Теперь хоть понятно почему ник такой! Хорошо же вы о Хабре думаете, раз ожидали, что это будет очевидно для всех.


    1. timsoid
      29.05.2015 09:17
      +4

      Автор поста называет это «исламский текст».
      А пишем мы тут христианским текстом!


      1. iago Автор
        29.05.2015 09:49
        +2

        Исправил, спасибо! На автомате написал, имел в виду конечно арабский :)


    1. enleur
      02.06.2015 13:11

      ? ? — это тайские


  1. dns78
    28.05.2015 14:54
    +26

    По опыту разработки системы процессинга/рендеринга текста с нуля (поддерживающей сложные скрипты) — всякий bidi процессинг (когда в тексте встречаются сразу символы left-to-right и right-to-left), арабские диалекты, хинди, кхмер и т. п. — поле непаханное для крэшей. Во всех операционных системах. Там, на стыках естественных и искусственных языков — конь не валялся :) Это очень, очень глубокое IMHO.


    1. vsabadazh
      28.05.2015 15:00
      +2

      А какие языки вы подразумеваете под искусственными в данном случае?


      1. dns78
        28.05.2015 15:26
        +17

        Я не совсем точно выразился. Не искусственные языки, а эмм… Грубо говоря, обработка [например двухбайтных] символов каждого типа естественного языка — это примерно как виртуальная машина. Символы — как опкоды. В сложных языках эти опкоды могут модифицировать на лету [сегмент кода] прочий текст. Правила этих модификаций не до конца внятны. Например, в Sinhala. Отсюда ошибки. Принадлежность к естественному языку определяется, как правило, по юникодным идентификаторам символов. Некоторые языки предполагают определенное количество символов после некоторого символа. Его может там не быть, а быть совершенно другое. Знаю, описал не слишком внятно, но в абзац это поместить сложно.


      1. portsigar
        28.05.2015 15:30
        +1

        deleted


    1. kefirfromperm
      28.05.2015 16:46
      +4

      Ну я понимаю, что все ситуации предусмотреть невозможно, но систему то крашить зачем? Ошибка то чисто программерская. Длина массива не проконтролирована. И уже ведь который раз такие ошибки у Apple вылезают, а воз и ныне там.


      1. iago Автор
        28.05.2015 16:55
        +9

        К сожалению, у Апплов не декомпозированы некоторые элементы, которые на добрый толк должны быть в отдельных процессах. Так, например, было у Win9x, в которой ошибка UI приложения могла закрешить всю систему. Грубо говоря, много хард-кода. Андроид же изначально разрабатывался модульным, там таких проблем бы не возникло — вы просто не увидели бы пуш-уведомление.


        1. grossws
          28.05.2015 17:38
          +1

          Обратная сторона, что андроид жрёт больше ресурсов для получения более-менее гладкого ui. Просто apple выбрали скорость против устойчивости.


          1. iago Автор
            28.05.2015 17:52
            +16

            Да, конечно — для показа виджета андроиду надо запустить VM, запустить песочницу и т.п., а Apple просто выполняет бинарный код отрисовки. Как хорошо, что андроиды сейчас мощные и довольно плавные — помню, во времена 1.5-1.6 разница была чересчур существенной.


  1. chlp
    28.05.2015 15:09
    +4

    Время от времени меня посещает спам по iMessage. Настало время его боятся?


    1. iago Автор
      28.05.2015 15:26
      +3

      Параноик будет скорее бояться всех пуш сообщений и отключит их в первую очередь. То же самое может случиться, если пришлет сообщение vk.


      1. Templier
        28.05.2015 16:43
        +4

        Скидывали на ipad в приложение vk — вылетает при попытке зайти в сообщения, после 3 попытки заходит и не отображает данного сообщения.


  1. k0sh
    28.05.2015 15:28
    -8

    На iPhone 6 не работает


    1. shadowalone
      28.05.2015 16:06
      +15

      работает на шестерке, 100% работает, только что проверяли.


    1. Divers
      28.05.2015 19:03
      +2

      Разве это может зависит от железа? Сотфтаврный баг же


  1. lagutas
    28.05.2015 15:31
    +1

    на iPhone5 работает


  1. merkushin
    28.05.2015 15:36
    +1

    У меня лекартсво не сработало :)))


    1. iago Автор
      28.05.2015 15:55
      +3

      А вы сами слали смс или вам пришло? Точно вам послали лекарственную смс, и ее не перехватил Messages на маке?


      1. merkushin
        28.05.2015 16:05
        +2

        Мы в офисе решили проверить, как работает. Так что слал мне коллега :)
        На маке не перехватил, уведомление прило на айфон. Но в сообщения войти не удается.
        Сейчас восстанавливаюсь из бекапа :)


        1. Goodkat
          28.05.2015 21:19
          +1

          А удалить все сообщения не получилось или не вариант?


          1. merkushin
            28.05.2015 23:02
            +1

            К сожалению, просто не пускал в Сообщения совсем. Если удалять с Мака, то на телефон это не влияет, они хранят независимо.
            Тут кто-то писал, что через менеджер запущенных приложений можно вернуться в него, но у меня не получилось. Возможно, мало попыток сделал.


            1. Volt
              29.05.2015 09:24
              +2

              Можно было, например, отправить самому себе сообщение через Сири. Или с мака.


            1. Goodkat
              29.05.2015 10:54
              +3

              Вот рецепт от Эпла:

              Apple is aware of an iMessage issue caused by a specific series of unicode characters and we will make a fix available in a software update. Until the update is available, you can use these steps to re-open the Messages app.

              1. Ask Siri to «read unread messages.»

              2. Use Siri to reply to the malicious message. After you reply, you'll be able to open Messages again

              3. In Messages, swipe left to delete the entire thread. Or tap and hold the malicious message, tap More, and delete the message from the thread.


              1. usefree
                29.05.2015 15:10

                Сири грустно сообщает, что у вас нет новых сообщений(


  1. DenimTornado
    28.05.2015 15:50
    +1

    Если мне память не изменяет складывался даже Safari, если зайти на страницу с таким текстом.


    1. iago Автор
      28.05.2015 15:56
      +3

      у меня сложился Chrome под мак, приложение Slack. Gmail обрабатывает нормально — там, видимо, кастомные контролы используются.


      1. smartov
        28.05.2015 22:51
        +3

        у меня ничего не сложилось. Читаю эту статью из Хрома под маком


    1. stavinsky
      28.05.2015 15:59
      +4

      нет с safari все хорошо )


  1. kahi4
    28.05.2015 15:58
    +4

    Если вам кто-то отправил смертоносную СМС, но не хочет отправлять «лекарство», мне помогло: попытаться запустить приложение, когда оно вылетело, дважды нажать кнопку домой, чтобы появился список запущенных приложений (оттуда оно не вылетело), открыть его. Дальше сразу же удалить сообщение. Срабатывает не с первого раза, но срабатывает.


  1. dkuzevanov
    28.05.2015 16:06
    +1

    Лекарство не работает, глюк не пропадает.
    Как лечить?

    iPhone 5


    1. Jeditobe
      28.05.2015 16:11
      +52

      Нива это такой внедорожник, который застрянет там, куда другие внедорожники не доедут.

      Не злорадствую, просто шутка. Сколько людей себе добровольно вывели телефоны из строя и теперь не знают, как быстро исправить.


    1. dkuzevanov
      28.05.2015 16:11
      +2

      Спасло это: был открыт другой диалог, и из него переслано сообщение в диалог с кракозябрами.


  1. vanipel
    28.05.2015 16:14
    +20

    Лекарство:
    Заходим в заметки, пишем любое сообщение, выбираем поделиться, сообщения, отсылаем абоненту от которого получено сообщение. После этого messages снова заработают.


    1. Jeditobe
      30.05.2015 13:31

      Но ломается у того, который прислал первым? Круговорот зла.


    1. shimapa23
      30.05.2015 23:34

      Спасибо, помогло


  1. goodic
    28.05.2015 16:17
    +2

    Вконтакте удаляет «оригинальное» сообщение из ленты и сообщений. Однако «минимально опасный» оставляет.


    1. AndrewNikolaevich
      28.05.2015 16:34
      +1

      через Вконтаке iPhone тоже перезагружается?


      1. goodic
        28.05.2015 16:41
        +1

        Я так понял, что падать будет только приложение в котором открывается лента ВК с данным сообщением. Проверить пока не удалось. Коллега с iPhone уже уехал.


      1. AndrewNikolaevich
        28.05.2015 16:44
        +4

        это как с окрашенной лавкой: пока не проверят — не поверят


      1. iago Автор
        28.05.2015 16:59
        +3

        Через любое приложение, которое пришлет вам push-уведомление с данным текстом. Любой мессенджер, например.


        1. artF
          28.05.2015 17:25
          +1

          Стоит проверить на разных iOS. У меня ничего не крашит, ни смс ни пуш. 7.1.2, 5ый айфон


          1. iago Автор
            28.05.2015 17:31
            +2

            Завидую вам, у меня крешит на пятерке, 8.3. У меня нет возможности проверить — пусть лучше Apple поскорей выпустит 8.3.1 или 8.4 с фиксом.


            1. artF
              28.05.2015 17:37
              +1

              Принципиально не обновляюсь, вполне устраивает моя прошивка, а если что-то нужно дополнительно — решаемо с помощью джейла.
              Ну тут дело и не только в принципе, еще и в невозможности обновиться из-за отсутствия хорошего интернета)


              1. iago Автор
                01.06.2015 14:39
                +2

                Как разработчик я бы больше хотел, чтобы вы обновлялись!


              1. iago Автор
                01.06.2015 14:42

                Есть еще один способ вылечить телефон — достаточно прислать на зараженный телефон смс с десятка разных номеров, чтобы плохая смска оказалась глубоко внизу


  1. Scrooge2
    28.05.2015 16:23
    -11

    Айфон 5 на грани смерти, уже не смешно!


  1. encyclopedist
    28.05.2015 17:02
    +7

    На хабре тут уже был описан похожий баг в 2013 году (тогда падение было вроде в CoreFont тоже от арабской последовательности символов):
    DoS эксплоит для движка WebKit


    1. iago Автор
      28.05.2015 17:09
      +6

      О, так это тот же баг! Видимо, WebKit тоже работает поверх Core Text, отсюда и одни корни проблемы.


    1. JediPhilosopher
      29.05.2015 00:06
      +1

      Вот, точно, было же. А то я испытал мощное чувство дежавю когда открыл сегодняшний пост и на всякий случай проверил дату — не занесло ли меня на пару лет назад, так как явно на хабре я про это уже когда-то читал…


      1. MyHabrahabr
        29.05.2015 06:25
        +6

        2 года прошло? Да я ту статью помню, как будто это было вчера!



  1. cartmenez
    28.05.2015 17:04
    +1

    «Слишком длинное сообщение», сообщает мне freesms.mts.by.
    При том, что длиной оно 35 символов.
    Так что анонимно ребутить не выйдет


    1. iago Автор
      28.05.2015 17:09
      +2

      freesms.mts.by еще добавляет в конец айпишник и еще что-то, если мне не изменяет память


  1. EvilBeaver
    28.05.2015 17:10
    +21

    Вспомнилась откуда-то фраза «повесьте на забор кнопку, напишите большими буквами: „Кнопка Конца Света, НЕ НАЖИМАТЬ“ краска даже высохнуть не успеет.»


    1. Xitsa
      29.05.2015 07:44
      +4

      Это, кстати, доказывает масштабный эксперимент на Reddit'е


      1. Alexeyslav
        29.05.2015 10:36
        +3

        Обоги, он еще не закончился?


        1. Xitsa
          29.05.2015 10:45
          +1

          Нет ещё. Скоро, наверное, будет уже миллион нажатий.


          1. Jeditobe
            30.05.2015 13:32
            +1

            ххх: люди — идиоты, и это вечно)
            ууу: ага, нужно сделать вечный двигатель на идиотизме
            ххх: идея норм, осталось реализовать
            ууу: да чего там — поставить ручку с надписью «не крутить»


            www.reddit.com/r/thebutton/comments/37twx8/%D0%BA%D0%B0%D0%BA_%D1%81%D0%B4%D0%B5%D0%BB%D0%B0%D1%82%D1%8C_%D0%B2%D0%B5%D1%87%D0%BD%D1%8B%D0%B9_%D0%B4%D0%B2%D0%B8%D0%B3%D0%B0%D1%82%D0%B5%D0%BB%D1%8C_%D0%BD%D0%B0_%D0%B8%D0%B4%D0%B8%D0%BE%D1%82%D0%B8%D0%B7%D0%BC%D0%B5


        1. Haoose
          30.05.2015 15:31

          Только что видел как счетчик дошел до нуля
          pasteboard.co/QCF227f.png
          И ничего не произошло. Через пару секунд снова пошел отчет.


          1. Alexeyslav
            30.05.2015 15:51

            Это нормально. Счетчик крутится не на страничке ведь, а где-то на сервере а на страничке он отображается с некоторым лагом.


            1. Agent_Smith
              02.06.2015 13:34

              А что, если нет, и это все шутка?


              1. Haoose
                06.06.2015 02:46
                +1

                1. Alexeyslav
                  08.06.2015 09:07

                  Отмучились. интересно сколько народу резко пошли спать в этот момент?


                  1. grossws
                    08.06.2015 12:24

                    Разве каждый мог нажать не по 1 разу? Или вы про субреддит?


                    1. Alexeyslav
                      08.06.2015 12:48

                      По разу. Но там помнится мне образовывались сообщество по недопущению провалов, вот они наверняка дежурили у кнопки — вот эти люди резко потеряли смысл жизни и пошли наконец спать после дежурства которое теперь не нужно.


                      1. iago Автор
                        08.06.2015 17:50
                        +2

                        А что там за эксперимент был, для тех кто в танке?


                        1. Alexeyslav
                          08.06.2015 19:30
                          -1

                          Краем уха слышал что группа пользователей организовалась и устроили дежурство чтобы не допустить конца отсчета. Не знаю как они там организовывались, но наверняка сидели и дежурили у кнопки.


    1. ShashkovS
      29.05.2015 11:47
      +1

      В волшебной игре The Neverhood тоже такое есть. Кажется, это один из примерно двух способов закончить игру до её логического окончания.


  1. artF
    28.05.2015 17:23
    +3

    iOs 7.1.2
    Друг прочитал статью и попытался меня крашнуть. Ничего не вышло. Могу сто раз открыть сообщения, и любые пуш с этим текстом приходят. Ничего не вылетает. Чем я обделен?


    1. iago Автор
      28.05.2015 17:33
      +2

      Эпл каждый релиз меняет что-то в недрах системы. О чем тут говорить, даже в стандартных, проверенных временем контролах типа UITableView порой вылазят новые баги на ровном месте. Может, подлили случайно код из старой ветки — никто не застрахован от ошибок.


    1. qRoC
      28.05.2015 18:21
      +1

      На 7 не работает.
      А вообще интересная штука, побаловались всем офисом, а потом искали другой телефон что бы переставить симки и перебить сообщения, а то у всех мессенджер падал.


  1. 9mm
    28.05.2015 18:03
    +6

    Прямо «Зенитные кодексы Аль-Эфесби» в реальности :)


  1. zaartix
    28.05.2015 18:16
    +28

    Прочитав все комментарии невольно вспоминается картинка:

    раскрыть
    image


  1. Jukobob
    28.05.2015 18:37
    +2

    Sublime складывается, но если добавлять в новый файл. Если дописывать к уже существующему — все работает.


    1. RussDragon
      29.05.2015 00:00
      +1

      Проверил в 3-ем Сублиме, ничего не складывается, добавлял в новый файл.


  1. SOLON7
    28.05.2015 18:54
    -1

    Allah Akbar )))


  1. ZhukV
    28.05.2015 20:08
    +1

    Что очень странно, что даже при копировании текста в PHPStorm, приложение тупо вырубило. Crash log: gist.github.com/anonymous/4bb78a72a930ad12561a

    UPD: аналогично положило и терминал: gist.github.com/anonymous/32bdf8257fa250423d63


    1. encyclopedist
      28.05.2015 20:27
      +2

      Ничего странного, баг в CoreText.

      Что видно и по вашему трейсу:

      Thread 33 Crashed:: Java: AWT-EventQueue-1 8.0.3#PS-139.1348, eap:false
      0   com.apple.CoreText            	0x00007fff8bf86d54 CopyFromStorage(TRunGlue&, long) + 28
      1   com.apple.CoreText            	0x00007fff8bf869b5 TRunGlue::RotateGlyphs(CFRange, long) + 517
      2   com.apple.CoreText            	0x00007fff8bfc86fb OpenTypeShapingEngine::ApplyScriptShaping(unsigned int*) + 473
      


  1. ZhukV
    28.05.2015 20:26
    +1

    Вот Unicode коды всех символов:

    Unicode codes
    Line #1: 80, 111, 119, 101, 114, 10
    Line #2: 1604, 1615, 1604, 1615, 1589, 1617, 1576, 1615, 1604, 1615, 1604, 1589, 1617, 1576, 1615, 1585, 1585, 1611, 32, 2403, 32, 2403, 104, 32, 2403, 32, 2403, 10
    Line #3: 20887


  1. DIHALT
    28.05.2015 22:06
    +2

    %english возвращается! :)


  1. IvanAnonym
    28.05.2015 22:59
    +1

    MacOS X 10.10.4 — полёт нормальный на Chrome 44.0.2403.9. Видимо, фикс уже на подходе.


    1. Yuuri
      29.05.2015 09:59
      +1

      Safari 7.1.6 на MacOS X 10.9.5 – тоже всё работает.


  1. DjPhoeniX
    28.05.2015 23:47
    +1

    Проверил в собственном приложении. iOS 6.1/7.1 отнеслись к этому нормально, и даже прекрасно всё нарисовали. А вот 8.3 легла наглухо.


    1. DjPhoeniX
      28.05.2015 23:51
      +1

      … на iOS8.3 так же не падает, если отрисовка идёт через CATextLayer. В UILabel падает.


  1. Arik
    29.05.2015 06:49
    +1

    А если телефон с которого шлют это смс тоже айфон, то тоже баг сработает? В message исходящие тоже в списках показывают


    1. DIHALT
      29.05.2015 08:44
      +2

      Сработает.


    1. iago Автор
      29.05.2015 09:53
      +5

      Это худший кейс, не надо так делать!


  1. Juster
    29.05.2015 08:55

    Решил запостить шутку про это сообщение себе на стену ВК, и пост через несколько секунд «самоудалился». Администрация ВК борется с распространением.


    1. ShashkovS
      29.05.2015 11:50

      А вы запостите модификацию, там в верху темы есть минимальный набор и описание, как изготовить новый.


  1. ZhukV
    29.05.2015 09:30
    +1

    В общем, отправил сам себе, ради «забавы». Полетело все. В сообщение уже зайти не мог, сразу вырубало. Лекарство тоже не помогло.
    Помогло следующие: полная очистка сообщений, при помощи PhoneClean. Он требует PRO доступ, но там же на 4PDA и ключик есть для актуальной версии. Минус один, он тупо очищает всю историю сообщений. Если у кого-то там важные данные, но не используйте.


  1. Meklon
    29.05.2015 10:36
    +4

    А что будет, если на андроиде создать точку доступа с таким именем?


    1. ForhaxeD
      29.05.2015 10:46
      +10

      Переход от слов к делу в войне телефонов.


      1. NickKolok
        29.05.2015 14:50

        Если будут подтверждения — напишите. Реально интересный способ вырубить или подвесить все айфоны в пределах видимости, например, домашнего роутера.
        Смущает одно: мы в этом конфликте будем агрессорами.


        1. noxwell
          29.05.2015 15:34

          Попробовал создать точку доступа на своем ноутбуке (netsh wlan start hostednetwork), ввел символы побайтово через реестр с переводами строк, все как надо (HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WlanSvc\Parameters\HostedNetworkSettings). С андроида символы видны нормально. С айфона в список сетей нормально заходит, в названии сети отображает только первую строчку, при попытке соединиться перезагружает SpringBoard. Кто-нибудь в курсе, на iphone открытые сети показывает в push, как на андроиде? Поэкспериментировать пока не удастся за неимением iPhone на руках.


          1. devlev
            29.05.2015 18:01

            Пробовал на своем андроиде создать точку доступа с таким именем. Я правда не стал заморачиватся вводить побайтово а просто скопировал без переносов строку. Ну че, эффект достигнут, открываю настройки, WI-FI и вылетаю на главный экран.


  1. sil1999
    29.05.2015 11:40
    +3

    Хабранарод! Мне помогло следующее:

    1) Запускаем «Заметки»
    2) Выбираем любую заметку (или создаем новую), нажимаем пиктограмму «Поделиться»
    3) Выбираем «Сообщение», в поле «Кому» указываем того, кто прислал нам вредное сообщение. Если высылали себе или кому-то еще — поочередно всем отсылаем по сообщению.

    После этого «Сообщения» будут запускаться нормально.

    Проверено на iPhone 5S 8.3 и iPad mini 2 8.3


    1. ZhukV
      29.05.2015 13:18
      +1

      iPhone 6, iOS 8.3 — не помогло…


      1. sil1999
        29.05.2015 14:26

        Специально сломал iPad и запилил видео с восстановлением — ссылку отправил в личку — посмотрите, может быть поможет…


        1. ZhukV
          29.05.2015 14:30

          Большое спасибо! Я то решил проблему путем удаления всех смс-ок (сообщений).
          При «поделиться заметкой», у меня открывается модальное окно в этом же приложение (Заметки), наверное потому и не помогло.


  1. FSA
    29.05.2015 12:09
    +1

    А почему нельзя называть так Wi-Fi точку? Что будет в данном случае в теме не раскрыто. Проверить тоже не могу, ибо ни одного iPhone ни у меня, ни у знакомых нет.


    1. Lsh
      29.05.2015 12:53
      +1

      Наверное при обнаружении открытой точки телефон показывает уведомление. Но у меня тоже нету iphone. Просто догадка.


  1. AnthonyBY
    29.05.2015 14:04
    +1

    xCode 6.2 вылетил, на телефоне тестить не рискнул
    Когда пытался расшарить эту новость в группе CocaoHeads Belarus, Facebook сказал мне следующее:

    The content you're trying to share includes a link that might be unsafe

    Power
    ?????????????????? ? ?h ? ?
    ?

    всем!


    1. iago Автор
      29.05.2015 14:29
      +4

      Антон, можешь написать короткую версию в Facebook, она так же работает.
      а
      ?? ? ?
      ?


  1. sempol
    29.05.2015 14:44
    +2

    Последний иероглиф должен быть не ?, а ?, так как, скорее всего, именно это слово и захочет сказать несчастный владелец айфона :)
    (http://bkrs.info/slovo.php?ch=%E6%93%8D, пункт IV)


  1. nE0
    29.05.2015 16:00

    Билайн заблокировал прием таких сообщений для своих абонентов. Но не в ММS, тач что просто добавьте к сообщению любую картинку.


    1. horses
      30.05.2015 23:29

      Не подтверждаю. Только что отправил с билайна на билайн такое сообщение.
      Оба дошли. Правда оба андроид телефона (может он это определяет и решает слать или не слать?).
      И заметил странность, что отчет о доставке смс приходит буквально на минуту раньше самой смс (оба телефона рядом лежали).


  1. EagleMoor
    29.05.2015 16:01

    На iOS 8.3 iMessage подвисает и отвисает, без крашей


  1. Antelle
    29.05.2015 20:50

    Баг, скорее всего, из-за особенностей объединения символов в юникоде: тут они и с разным типом joining (когда символы можно объединять с другими слева, справа, сверху,… — вот те, где нарисованы такие пунктирные кружочки), направлением текста (влево, вправо) и на разных строках. Если вставить такую строчку, например, в консоль в хроме, курсор по ней тоже перемещается, как будто бы там есть меньше символов, чем на самом деле.


  1. painjkee
    30.05.2015 13:35

    Для обладателей джейлбрейкнутых устройств есть простое решение для «закрытия» данной уязвимости. В репозитории cydia.angelxwind.net необходимо установить твик IneffectivePower. Проверил на своем 5s с прошивкой 8.1


  1. horses
    30.05.2015 23:20
    +1

    «В контакте» при публикации на стенке такого сообщения удаляет его буквально через минуту. Модификация прошла.
    Фэйсбук не пропускает такое сообщение, почему-то ругаясь на «ссылку». Модификация прошла.

    Гугл + — все ок.
    Одноклассники — все ок.
    Твиттер сказал, что я бот и отклонил меня. Причем он даже не хотел модифицированные сообщения отправлять.


  1. MiXaiL27
    01.06.2015 06:07

    Наверное, теперь будут приходить спамовые смс с просьбой разблокировать повисший айфончик по такому-то номеру и подписывать на платные контент-сервисы по факту отправки смс.

    Надеюсь я ни кому не подал идею.


  1. AlexRex
    02.06.2015 11:28

    Каждый год одно и то же.
    habrahabr.ru/post/191654

    С яблофонов спойлер не открывайте-ка, на всякий
    ???????????? ???? ???? ???? ??????? ????


    1. iago Автор
      02.06.2015 16:29

      И то, и пост 2013 года было про WebKit, здесь же — нативные контролы. Разница все же ощутимо есть.


  1. bodqhrohro
    02.06.2015 16:21

    Пхех, нестабильный нынче софт — от багов в каком-то кортексте операционка перезагружается… Я когда-то Nokia 3310 глючить заставил. Там при вводе номера с домашнего экрана можно по нему не только позвонить, но и выбрать сохранение или конвертацию валют. Проверки на длину при сохранении, в отличие от мастера создания контакта, там нет (видимо, упор на то, что на симку столько не влезет и лишнее обрежется). Вбил over 9k двоек и сохранил. Причём без имени контакта… При попытке отобразить этот номер — ПРОСТО выбрасывало на домашний экран (в итоге, телефонную книжку нельзя было листать через конец).


    1. AlexRex
      02.06.2015 16:59
      +3

      Заходит однажды тестировщик в бар.
      Забегает в бар.
      Пролезает в бар.
      Танцуя, проникает в бар.
      Крадется в бар.
      Врывается в бар.
      Прыгает в бар

      и заказывает:

      кружку пива,
      2 кружки пива,
      0 кружек пива,
      999999999 кружек пива,
      ящерицу в стакане,
      –1 кружку пива,
      qwertyuip кружек пива.


  1. asedovski
    03.06.2015 05:06

    В далеком 2003ем так вылетали сименсы. Вся 35-ая серия перезагружалась при получении сообщения '%english' или чегото похожего :) Но можно было перепрошиться исправив это слово в прошивке на другое секретное (да, было захардкожено для каких то нужд, типа переключения языка или чего еще) и тогда массовый (но тогда это слово носило другой характер, так как телефоны были только у 30% однокурсников с потока) спам только развлекал. а вот девочкам приходилось помогать :)


  1. reega
    04.06.2015 14:02

    Мой товарищ кипешует, что от этой смс на утро у него пропали все контакты. Пожалуйста, дайте ему профессиональный ответ насчёт этого.


    1. iago Автор
      05.06.2015 18:03

      Контакты (Contacts) — отдельное приложение, смски (Messages) — отдельное приложение. Если он не называл контакт арабскими символами, у него ничего пропасть не могло.

      Если он имеет в виду то, что пропали все смски — пришлите ему штук 10 смс с разных номеров, это 100% лечит от бага. (т.к. превью сообщения с опасными символами уйдет глубоко вниз)


  1. Grawl
    11.06.2015 07:18

    Спешу заметить, что при Стиве это, вероятно, было, так как “ошибка существует, вероятно, столько же, сколько и сама iOS, и замечена случайно”.


  1. Scraelos
    15.06.2015 16:02

    Один мой коллега послал директору эту смс, и того после этого айфоном было отправлено много смс на сумму 400р на номер +447786205094
    Из интернета стало ясно, что номер используется при активации Face Time, однако непонятно, как смс-убийца спровоцировала айфон на отправку этих смс.
    У кого-нибудь было такое?


    1. Alexeyslav
      15.06.2015 16:33

      Никак. Скорей всего сам начудил и списал это все на действие вредной СМС-ки.


    1. mva
      15.06.2015 23:54

      Мне кажется, что просто директору выпал удачный шанс свалить свою оплошность допущенную ранее (или позже, в попытках «исправить») на другого