Пользователь
0,0
рейтинг
17 октября 2012 в 20:08

Приложения под Android использующие рекламу Admob начали массово падать

B англоязычных странах, начиная с понедельника, приложения под Android использующие рекламу Admob начали массово вылетать. Больше всего жалоб идет из США.


Разработчики отмечают, что репортится большое количество багов со следующим стеком

java.lang.IndexOutOfBoundsException
at java.lang.AbstractStringBuilder.append0(AbstractStringBuilder.java:156)
at java.lang.StringBuilder.append(StringBuilder.java:311)
at libcore.net.UriCodec.appendEncoded(UriCodec.java:114)
at libcore.net.UriCodec.appendPartiallyEncoded(UriCodec.java:142)
at java.net.URLStreamHandler.toExternalForm(URLStreamHandler.java:281)
at java.net.URL.toURILenient(URL.java:510)
at libcore.net.http.HttpEngine.(HttpEngine.java:192)
at libcore.net.http.HttpURLConnectionImpl.newHttpEngine(HttpURLConnectionImpl.java:256)
at libcore.net.http.HttpURLConnectionImpl.initHttpEngine(HttpURLConnectionImpl.java:243)
at libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:78)
at w.run(Unknown Source)
at java.lang.Thread.run(Thread.java:856)

Например, у меня таких багов уже больше 1000.

Падения не зависят от того, какую версию Admob SDK вы используете.

В Admob предполагают, что причиной послужила какая-то реклама. Но какая именно пока не знают.
@anoshenko
карма
25,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

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

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

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

  • +1
    У меня норм (55 тыс. показов с понедельника)
  • 0
    Это ж какой URL надо пытаться загрузить, чтобы получить IndexOutOfBoundsException в StringBuilder.append? Больше на баг стандартной библиотеки похоже…
    • +2
      Это похоже на кудрявые руки разработчиков Admob, документация Java явно описывает такое поведение append

      append(CharSequence s, int start, int end);

      Throws: IndexOutOfBoundsException - if start or end are negative, or start is greater than end or end is greater than s.length()
      • 0
        Да, но обратите внимание на то, что вызов идет из UriCodec.appendEncoded. Насколько я помню libcore является частью внутренних библиотек Android.
      • –1
        Но непосредственно-то со StringBuilder Admob не работает! Со StringBuilder работает что-то из libcore, что не выглядит как часть Admob.

        Так или иначе, падает HTTP-клиент, причем на этапе парсинга URL. Вот я и спрашиваю, что же это за URL такой, что вместо стандартного URISyntaxException прилетает IndexOutOfBoundsException.

        PS если бы это был С++ — было бы переполнение буфера со всеми вытекающими последствиями
        • +2
          >> PS если бы это был С++ — было бы переполнение буфера со всеми вытекающими последствиями
          Отвечу коротко: Не всегда.
    • +4
      UPD:
      Судя по исходному коду, такая ошибка возникает, если ссылка заканчивается неполной urlencode-последовательностью, например example.org/page?q=%3.

      Так что проблема все-таки в стандартной библиотеке, поскольку согласно спецификации интерфейса, исключение должно быть выкинуто немного другое.

      Другое дело, что во вспомогательных потоках, не влияющих на основную программу, надо ловить все-таки все исключения, независимо от степени их ожидаемости, тут разработчики Admob действительно прокололись.
  • +1
    А можно увидеть пару ссылок? Например, хотелось бы почитать как именно Admob предполагает и увидеть жалобы из США.
    • 0
      У меня в понедельник было одно письмо, вчера еще одно, а сегодня уже 15. Вот одно из них:

      I am soooooooo incredibly frustrated!!! My problems all started on Monday.....I started getting kicked out of my game 250+ Solitaire Collection.....it was here and there I'd get kicked out. Then Tues it got worse, more frequent, but I could at tines play it for up to a half hour at a time, now its Wed and I can't even move 1 card b4 it kicks me out!!! I even uninstalled it and re-installed it, that didn't help at all. It'll kick me out either when it first loads or usually it waits fir me to pick my game....it doesn't matter which game I pick, once the cards load it kicks me out…
      PLEASE HELP ME FIX THIS!!! This is the ONLY game I play EVERY SINGLE morning.

      А по поводу ссылок забейте в гугл строчку «java.lang.IndexOutOfBoundsException
      at java.lang.AbstractStringBuilder.append0(AbstractStringBuilder.java:156)»
  • 0
    Чувствую народ побежить вставлять try-catch на все вызовы неосновных сторонних библиотек.
    • 0
      Разрабочики игр почти все делают… Ну по крайней мере крупные…

      И еще — кроме этого, возможность включать и отключать со стороны сервера.

      А то сторонние библиотеки они такие — если не падают, то могут в какой нибудь init-е блокирующем весеть долго… И не все позволяют их в отдельную нитку запихнуть… Или любят по 50 http запросов вызвать — каждый в отдельной нитке. Или резко памяти 20 мегабайт занять, хотя до этого 500кб обходились.

      А вообще — это забота отдельного человека, который как раз занимается вопросом интеграции сторонних SDK в приложение.
      • 0
        > А вообще — это забота отдельного человека,

        Вы буржуй :) Не у всех есть отдельный человек для введения int переменных, а отдельный для String. Фирмы бывают разного размера
    • 0
      По стеку это внутренный поток библиотеки Admob и try-catch здесь не помогут
      • 0
        Но ведь библиотеку сначала надо вызвать, верно?
        Я так понял что код спотыкается на вызове «loadAd» (предполагаю, в стеке это предпоследняя строка), которую как раз можно заткнуть.
        • 0
          Нет. Это не кусок стека, это весь стек. loadAd без ошибок запускает поток, который через некоторое время крэшит
  • –7
    Отличная новость! Надеюсь, сгниют все приложения, авторы которых добавляют в них говно! А то куда не плюнь — везде эта гадость.
    • 0
      Вам не стоило писать этого в топике для разработчиков.
      Почувствуйте себя непонятым :)
      И искренне желаю Вам большую зарплату, чтобы вы могли покупать наши программы без гумна.
      • 0
        я сам вынужден писать софт, который бы не содержал оного
        • 0
          Вынужден?
  • 0
    Остаётся только порекомендовать людям сделать права Root и установить что-нибудь вроде AdAway :) И рекламы не будет, в том числе и этой проблемы.
  • 0
    А тем временем заканчивался 2014… 12 декабря, Android 4.2.2
    Crashlytics:
    java.lang.IndexOutOfBoundsException
           at java.lang.AbstractStringBuilder.append0(AbstractStringBuilder.java:156)
           at java.lang.StringBuilder.append(StringBuilder.java:311)
           at libcore.net.UriCodec.appendEncoded(UriCodec.java:114)
           at libcore.net.UriCodec.appendPartiallyEncoded(UriCodec.java:142)
           at java.net.URLStreamHandler.toExternalForm(URLStreamHandler.java:281)
           at java.net.URL.toURILenient(URL.java:510)
           at libcore.net.http.HttpEngine.(HttpEngine.java:195)
           at libcore.net.http.HttpURLConnectionImpl.newHttpEngine(HttpURLConnectionImpl.java:265)
           at libcore.net.http.HttpURLConnectionImpl.initHttpEngine(HttpURLConnectionImpl.java:252)
           at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:274)
           at libcore.net.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:495)
           at com.google.android.gms.internal.cy.aB()
           at com.google.android.gms.internal.ct$1.run()
           at com.google.android.gms.internal.cu$1.run()
           at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
           at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
           at java.lang.Thread.run(Thread.java:856)
    

    Старые грабли?

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