Многие мобильные приложения сегодня сбоили из-за проблем с Facebook SDK



    Сегодня днем многие пользователи разных мобильных приложений, преимущественно под iOS, стали жаловаться на проблемы и сбои при попытке их запуска. Приложения, включая Spotify, Viber, Pinterest, «Яндекс.Навигатор/Карты/Музыка/Такси», TikTok, Tinder, Monobank, privat24, UEFA, Додо Пицца, Авито, Авто.ру и другие вылетали, выдавали ошибки и не работали. Разработчики также зафиксировали эту ситуацию и даже совместно отслеживали эти проблемы на GitHub. Например, некоторые разработчики получали отчеты о том, что их приложения крашились более двух тысяч раз и больше, пока пользователи просто не стали их запускать. Самое большое количество проблем было зафиксировано одним из разработчиков — около 500 тыс. ошибок при запуске за 20 минут.

    Оказалось, что проблема была связана с проблемными элементами программного обеспечения Facebook SDK (при использовании FBSDK с версиями компонентов FBSDKCoreKit 5.0.2, 5.5.0, 5.8.0, 5.13.1, 5.15.1, 6.3.0, 7.0.0 и других, но с версией 7.1.1 все работало без проблем), который использовали эти приложения. Разработчики Facebook подтвердили наличие проблем и рассказали, что уже устранили их после более пяти часов после начала возникновения первых инцидентов.

    Причем сторонние разработчики вдобавок зафиксировали, что мобильные приложения Facebook, WhatsApp, Instagram и Messenger продолжали работать без проблем, когда остальные приложения падали и выдавали ошибки.



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

    Разработчики предупреждали пользователей как могли, поясняя, что это техническая проблема, которая будет исправлена ​​в ближайшее время, а пользователям не нужно пытаться удалять и переустанавливать эти приложения:


    Ранее месяц назад подобная проблема тоже была зафиксирована разработчиками мобильных приложений. Тогда выяснилось, что эти ошибки были связаны с обновлением некоторых компонентов Facebook SDK, но в компании также устранили их за несколько часов.

    См. также:

    Похожие публикации

    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 26

      +5

      Как говорится, eat your own dog food. Разработчики фейсбука свой SDK не используют, у них и нет проблем (или обновляют его вместе с приложениями, вот последняя версия и работает). А то что у других всё колом стало — это их деньги и заботы.


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

        –4

        А что вы предлагаете? Не использовать Facebook SDK? Это практически невозможно в современной мобильной разработке.

          +2

          Слава Богу, что хирурги все еще могут делать операции без fb sdk. Этот мир сходит с ума.

            0
            Обвешать try/catch и аккуратно обрабатывать исключения не пробовали? Вот вообще не понятно, почему основной функционал Viber-а без Facebook SDK работать не может…
              +2
              Вы не поверите, но в айфонах это не выйдет by design.
              Упало в таком месте, которое не обвесить.

              Ради справедливости: Есть версия что обвесить можно было, но сильно нетривиально. Разумный разработчик так в таком месте код писать не будет. Хотя после такого может и начнут.
                +2
                Как выяснилось, их SDK переопределяло внутри себя системный метод, вызываемый при запуске приложения, и там же вчера падало. То есть ты как разработчик мог бы вообще ни одного метода Facebook SDK не вызвать, но приложение сломалось бы уже от одного лишь факта подключения библиотеки. Итого, try/catch здесь не помогли бы.

                Пофиксить такую беду можно, но это действительно относительно нетривиальная задача. Видимо, теперь iOS-разработчики обратят на это больше внимания.
                  0

                  "их SDK переопределяло внутри себя системный метод, вызываемый при запуске приложения"
                  Это вообще законно? А есть информация, что им такого понадобилось перекрывать там?

                    0

                    если API платформы позволяет, то почему бы и да?

                      +1
                      Для этого не нужно какое-то приватное системное API или вроде того, так что законно, да. Таким образом они автоматически инициализируют библиотеку, оставляя этот процесс под собственным контролем.
                        0
                        Я скорее к тому, что с одной стороны 'системный метод, вызываемый при запуске приложения', а с другой 'приложение сломалось бы уже от одного лишь факта подключения библиотеки'.

                        Т.е., я правильно понимаю, что это системный вызов, который вызывается при запуске ЛЮБОГО приложения?
                          +1

                          Да, это «didFinishLaunching»

                      +4
                      их SDK переопределяло внутри себя системный метод, вызываемый при запуске приложения

                      Идея авторов библиотеки делать успешность запуска любого приложения, использующего эту библиотеку, зависимой от работоспособности удаленного стороннего (по отношению к авторам приложения) сервера — это за гранью добра и зла.

                        +2
                        Ну вряд ли они планировали, что повлияют на запуск приложений — вероятно, просто в нужном месте забыли поставить try/catch
                          +3

                          Разраб "1" фейсбука, который писал код, переопределяющий внутри себя системный метод не думал, что при развитии библиотеки туда будет вставлен код, ходящий по сети. Разраб "2" фейсбука, который писал некий код для SDK, ходящий по сети, не думал, что тот будет вызван при инициализации библиотеки. Разраб "3" фейсбука, который на хуке системного метода, реализованного разрабом "1", воткнул вызов кода, написанного разрабом "2", и не подумал, что возможен данный факап: "Я думал, что везде в критических местах проставлены try/catch".


                          А в это время где-то на полочке в фейсбучной jira покоится и ждет своего героя эпик: "Facebook SDK: unattended, safe and lazy SDK initialization"

                    +6

                    Вы не поверите, но многим не только Facebook SDK, но и сам Facebook не нужен

                      0
                      Да ну чо правда что ли? Получается что сначала сделали fd sdk и только потом появилась мобильная разработка? А может признаемся себе что ленивые головотяпы в мобильной разработке не хотят работать, а хотят как мартышки брать чужое где надо и не надо.
                    +1
                    Некоторые разработчики в своё время использовали Google+ в качестве логина в свои приложения, там тоже довольно неплохо получилось
                    +2

                    Мне показалось или это уже было?

                      +1
                      Было в мае, да
                      +1
                      В последние пару лет многие сайты дико тормозят из-за перегруженности кросс-ссылками и отсутствия асинхронной загрузки всего этого барахла богатого функционала.
                        –4
                        Вчера с утра на несколько часов вырубились вышки мегафона(и йота тоже соотв.), причём судя по сообщениям одновременно в нескольких разных городах(Москва, Санкт-Петербург, Самара, Краснодар, Екатеринбург, Иркутск). Не было ни резервных передатчиков, ни даже несущей частоты. Только голос кое как работал и то видимо через роуминг(т.е. оператор сам переключил клиентов) и местами.
                        Часам к одиннадцати частично заработал ЛК, а смартфоны подключенные к wi-fi(с usb свистком йоты) требовали авторизации(как в общественных сетях).Потом полностью восстановили.
                          0

                          Интересно, зачем разрабы мобильных приложений включают FB SDK, как зависимость? Для того, чтобы можно было логиниться и публиковать через FB, или какие-то дополнительные плюшки?

                            +1
                            Логин и сервис аналитики
                              +4
                              Реклама, если ты хочешь эффективно давать рекламу на Facebook, нужно включать, иначе Facebook будет рекламный бюджет просаживать мимо целевой аудитории.
                                0

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

                            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                            Самое читаемое