Собственный сбой Android 7: libc.so tgkill

98

Я вижу этот собственный сбой со следующей трассировкой стека.

Это происходит только в Android 7.0 и 7.1. Ничего нового не было добавлено в приложение, которое находится в производстве в течение нескольких лет, но с увеличением количества устройств, обновляемых до Nougat, этот сбой сейчас часто случается и становится неприятностью.

Любой совет будет принят во внимание.

native: pc 000000000007a6c4  /system/lib64/libc.so (tgkill+8)
  native: pc 0000000000077920  /system/lib64/libc.so (pthread_kill+64)
  native: pc 000000000002538c  /system/lib64/libc.so (raise+24)
  native: pc 000000000001d24c  /system/lib64/libc.so (abort+52)
  native: pc 000000000001225c  /system/lib64/libcutils.so (__android_log_assert+224)
  native: pc 00000000000610e0  /system/lib64/libhwui.so
  native: pc 000000000003908c  /system/lib64/libhwui.so
  native: pc 000000000003609c  /system/lib64/libhwui.so
  native: pc 000000000003b4fc  /system/lib64/libhwui.so
  native: pc 000000000003c520  /system/lib64/libhwui.so
  native: pc 000000000003e694  /system/lib64/libhwui.so (_ZN7android10uirenderer12renderthread12RenderThread10threadLoopEv+152)
  native: pc 00000000000127f0  /system/lib64/libutils.so (_ZN7android6Thread11_threadLoopEPv+336)
  native: pc 00000000000a50b0  /system/lib64/libandroid_runtime.so (_ZN7android14AndroidRuntime15javaThreadShellEPv+116)
  native: pc 00000000000770f4  /system/lib64/libc.so (_ZL15__pthread_startPv+204)
  native: pc 000000000001e7d0  /system/lib64/libc.so (__start_thread+16)

Вот список затронутых устройств: введите описание изображения здесь

ОБНОВЛЕНИЕ 7/18:

Все еще не смог добраться до корня этого, поэтому я решил приобрести устройство, которое было наиболее распространенным и имело разумную цену, которым оказалась версия Samsung Galaxy J3 2017 с Android 7.0. К сожалению, я все еще не могу воспроизвести аварию.

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

Судя по всем комментариям и моим собственным исследованиям, похоже, что это связано с динамически связанными NDK, но я не использую их, и трудно выяснить, есть ли какие-либо зависимости.

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

// App Compat
    compile 'com.android.support:support-v4:23.0.1'
    compile 'com.android.support:appcompat-v7:23.0.1'
    compile 'com.android.support:cardview-v7:23.0.1'
    compile 'com.android.support:recyclerview-v7:23.0.1'

    // Play Services
    compile 'com.google.android.gms:play-services-location:8.3.0'
    compile 'com.google.android.gms:play-services-maps:8.3.0'
    compile 'com.google.android.gms:play-services-analytics:8.3.0'
    compile 'com.google.android.gms:play-services-appindexing:8.3.0'
    compile 'com.google.android.gms:play-services-ads:8.3.0'

    // Misc Libraries
    compile 'fr.avianey.com.viewpagerindicator:library:2.4.1@aar'
    compile files('app/libs/htmlcleaner-2.7.jar')
    compile files('app/libs/protobuf-java-2.6.0.jar')
    compile files('app/libs/nineoldandroids-2.4.0.jar')

    // Fabric
    compile('com.twitter.sdk.android:twitter:1.13.0@aar') { transitive = true; }
    compile('com.crashlytics.sdk.android:crashlytics:2.5.5@aar') { transitive = true; }

Для людей, столкнувшихся с таким же сбоем, ответьте в комментариях, если вы используете какую-либо из этих зависимостей / версий. Возможно, мы сможем выделить проблему зависимости.

AlexVPerl
источник
6
Возможно, я думаю, что ваш собственный сбой - это та же следующая проблема. issueetracker.google.com/issues/37123764 В моем приложении есть похожая ошибка, но я не нахожу никакого решения ... Я думаю, что ошибка android 7, 7.1.
Коджи Мацубара
3
Я также вижу это, точно такую ​​же трассировку стека и точно такой же список затронутых устройств! Последняя версия была опубликована 15 мая, но у меня на странице сбоев есть две строчки с одинаковым именем tgkill.
Orgmir 07
3
Я также испытываю ту же самую проблему, точно такую ​​же трассировку стека, затронуты те же самые устройства, без использования собственных библиотек и с использованием служб определения местоположения и карт. Возможно, это связано с этим? У кого-нибудь есть исправление?
Cord Rehn
3
За последние 2 месяца у нас было более 30 тысяч сбоев tgkill, от которых пострадали более 14 тысяч пользователей. Последние пару недель я потратил медленно, удаляя все сторонние библиотеки, которые мы используем, и выпускал поэтапные развертывания, чтобы посмотреть, смогу ли я отследить, что вызывает эти сбои. Все удалено, кроме Retrofit, Okhttp, Jackson, Picasso, Firebase, Google Play Services, MultiDex и Apache Legacy. Основываясь на этой ветке, мы обсуждаем освобождение для 1% наших пользователей с удалением наших карт. В настоящее время работает: 'com.google.android.gms: play-services-maps: 11.0.1'
FinHead
3
Мы выпустили поэтапное развертывание с удалением только «com.google.android.gms: play-services-maps: 11.0.1». После просмотра всех выходных случаев сбоя tgkill не было. Да, эта проблема вызвана картами, упомянутыми @Deo и связанными с системой отслеживания проблем ниже.
FinHead

Ответы:

33

Взгляд на предоставленный вами дамп дает некоторые подсказки:

_ZN7android10uirenderer12renderthread12RenderThread10threadLoopEv

Это указывает на то, что ошибка произошла в потоке пользовательского интерфейса.

libhwui.so x 6

Это указывает на то, что это происходит в середине некоторого кода, связанного с графикой / пользовательским интерфейсом.

libcutils.so - __android_log_assert

Это обработчик утверждает, поэтому , скорее всего , какое - то утверждают было нарушено в libwhui.

прервать:

Это приложение сообщает операционной системе о необходимости аварийного завершения работы.

Raise + pthread_kill + tgkill: это операционная система (Android), закрывающая приложение.

Вы можете увидеть некоторую документацию по отладке подобных сбоев здесь .

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

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

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

Удачи!

РЕДАКТИРОВАТЬ 2017-06-16 : Я просто хочу добавить дополнительный информационный комментарий от Fco P. Очевидно, Google решил внести некоторые изменения в то, какие собственные библиотеки разрешено запускать в последних версиях Android (7.x). Более подробная информация по этой ссылке .

Леннарт Роллан
источник
Raise + pthread_kill + tgkill: это операционная система (Android), закрывающая приложение. Это происходит, когда пользователь убивает приложение или автоматически из ОС?
DevC
1
Насколько я знаю, это операционная система, которая закрывает его из-за неисправности. Если приложение завершится «мирно», это не будет операцией «уничтожения».
Леннарт Роллан
8

Об этом сообщается здесь: https://issuetracker.google.com/issues/37123764.

Чтобы воспроизвести: Получите затронутый режим, включите режим разработчика и установите для фоновых действий значение 0. Также включите «показывать фоновые сбои».

Затем откройте приложение и снова закройте его: вы увидите сбой.

TjerkW
источник
3

Нет в комментариях (недостаточная репутация).

Из перечисленных вами зависимостей мы используем:

compile 'com.android.support:cardview-v7:25.3.1'
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:support-v4:25.3.1'

compile 'com.google.android.gms:play-services-maps:10.2.1'
compile 'com.google.android.gms:play-services-location:10.2.1'

разные версии, чем ваша. У меня есть сильное подозрение, что в play-services-maps есть ошибка.

Возможно, вы используете фрагмент карты в окне просмотра, как это делаем мы и многие люди, о которых идет речь, уже упомянутые Кодзи Мацубара ( https://issuetracker.google.com/issues/37123764 )

Deo
источник
Знаете ли вы, как можно избежать этого на основе отчета об ошибке? Я не вижу никакого решения, обходного пути или чего-то еще.
hvaughan3
У меня та же проблема, которая затрагивает все мои приложения, однако я использую только вспомогательные библиотеки: аннотации, v4, appcompat и дизайн.
3c71
3

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

Я также столкнулся с проблемой на Android 7.0 и 7.1 ниже

03-04 23:44:51.489 2173-2173/? A/DEBUG: Abort message: 'Error: Ambient Vertex Buffer overflow!!! used 420, total 284'
03-04 23:44:51.489 2173-2173/? A/DEBUG:     eax 00000000  ebx 0000083b  ecx 00000857  edx 00000006
03-04 23:44:51.489 2173-2173/? A/DEBUG:     esi d19ff978  edi d19ff920
03-04 23:44:51.489 2173-2173/? A/DEBUG:     xcs 00000023  xds 0000002b  xes 0000002b  xfs 0000006b  xss 0000002b
03-04 23:44:51.489 2173-2173/? A/DEBUG:     eip f00a6bb9  ebp d19fee68  esp d19fee0c  flags 00000292
03-04 23:44:51.555 2173-2173/? A/DEBUG: backtrace:
03-04 23:44:51.555 2173-2173/? A/DEBUG:     #00 pc 00000bb9  [vdso:f00a6000] (__kernel_vsyscall+9)
03-04 23:44:51.555 2173-2173/? A/DEBUG:     #01 pc 0007a2ec  /system/lib/libc.so (tgkill+28)
03-04 23:44:51.555 2173-2173/? A/DEBUG:     #02 pc 00075b35  /system/lib/libc.so (pthread_kill+85)
03-04 23:44:51.555 2173-2173/? A/DEBUG:     #03 pc 0002784a  /system/lib/libc.so (raise+42)
03-04 23:44:51.555 2173-2173/? A/DEBUG:     #04 pc 0001ee26  /system/lib/libc.so (abort+86)
03-04 23:44:51.555 2173-2173/? A/DEBUG:     #05 pc 0000fa65  /system/lib/libcutils.so (__android_log_assert+245)
03-04 23:44:51.555 2173-2173/? A/DEBUG:     #06 pc 00084356  /system/lib/libhwui.so
03-04 23:44:51.555 2173-2173/? A/DEBUG:     #07 pc 0003a5ba  /system/lib/libhwui.so
03-04 23:44:51.555 2173-2173/? A/DEBUG:     #08 pc 00083d04  /system/lib/libhwui.so
03-04 23:44:51.555 2173-2173/? A/DEBUG:     #09 pc 0008c5df  /system/lib/libhwui.so
03-04 23:44:51.555 2173-2173/? A/DEBUG:     #10 pc 0008e6d8  /system/lib/libhwui.so
03-04 23:44:51.555 2173-2173/? A/DEBUG:     #11 pc 0008e5d2  /system/lib/libhwui.so
03-04 23:44:51.555 2173-2173/? A/DEBUG:     #12 pc 000350fe  /system/lib/libhwui.so
03-04 23:44:51.555 2173-2173/? A/DEBUG:     #13 pc 0001201f  /system/lib/libutils.so (_ZN7android6Thread11_threadLoopEPv+207)
03-04 23:44:51.555 2173-2173/? A/DEBUG:     #14 pc 0006e53b  /system/lib/libandroid_runtime.so (_ZN7android14AndroidRuntime15javaThreadShellEPv+111)
03-04 23:44:51.555 2173-2173/? A/DEBUG:     #15 pc 00011873  /system/lib/libutils.so (_ZN13thread_data_t10trampolineEPKS_+259)
03-04 23:44:51.555 2173-2173/? A/DEBUG:     #16 pc 00075292  /system/lib/libc.so (_ZL15__pthread_startPv+210)
03-04 23:44:51.555 2173-2173/? A/DEBUG:     #17 pc 0002028e  /system/lib/libc.so (__start_thread+30)
03-04 23:44:51.555 2173-2173/? A/DEBUG:     #18 pc 0001e066  /system/lib/libc.so (__bionic_clone+70)

После исследования и поиска на gooogle я заменил cardview, Framelayoutтогда эта проблема была решена

songoku1610
источник
Привет @ songoku1610, как вы узнали, что проблема вызвана Cardview.
Ran94
1
Я попытался заменить cardview, Framelayoutзатем эта проблема была решена, эта проблема
возникает
Другое дело, вопрос выше был отредактирован, удалите текстовые because I see in dependencies have including carview
зависимости
3

У меня была такая же проблема в консоли Google Play для тех же устройств, что и вы.

В моем случае проблема была в TextureView с анимацией в отдельном потоке с блокировкой и разблокировкой холста.

Я изменил анимацию TextureView на анимацию invalidate-onDraw для Android 7 и 7.1, и это помогло.

Сергей Белозеров
источник
Мое приложение использует TextureView. Не могли бы вы подробнее рассказать об анимации недействительности при рисовании .
Шишир Шетти
@ShishirShetty Я больше не использую TextureView. Я переопределяю View, описываю все анимации в методе onDraw и вызываю метод postInvalidateOnAnimation () каждые 16 миллисекунд (~ 60 кадров в секунду)
Сергей Белозеров
-1

Я вижу эту проблему из отчета о сбое на устройстве одного пользователя - «Huawei Honor 7X (HWBND-H)» - под управлением Android 8.0. Поскольку это не происходит в полевых условиях для других устройств / версий ОС, я считаю, что это могло быть уже исправлено в обновлениях ОС (которые этот пользователь не поднял, или, возможно, Huawei не предоставил).

backtrace:
  #00  pc 000000000006a808  /system/lib64/libc.so (tgkill+8)
  #01  pc 000000000001db50  /system/lib64/libc.so (abort+88)
  #02  pc 0000000000007f4c  /system/lib64/liblog.so (__android_log_assert+304)
  #03  pc 000000000004e314  /system/lib64/libhwui.so (_ZN7android10uirenderer12renderthread10EglManager13createSurfaceEP13ANativeWindow+192)
  #04  pc 000000000004c790  /system/lib64/libhwui.so (_ZN7android10uirenderer12renderthread14OpenGLPipeline10setSurfaceEPNS_7SurfaceENS1_12SwapBehaviorE+64)
  #05  pc 00000000000492b4  /system/lib64/libhwui.so (_ZN7android10uirenderer12renderthread13CanvasContext10setSurfaceEPNS_7SurfaceE+140)
  #06  pc 000000000005123c  /system/lib64/libhwui.so (_ZN7android10uirenderer12renderthreadL17Bridge_initializeEPNS1_14initializeArgsE+16)
  #07  pc 0000000000052fc4  /system/lib64/libhwui.so (_ZN7android10uirenderer12renderthread22MethodInvokeRenderTask3runEv+24)
  #08  pc 0000000000053f1c  /system/lib64/libhwui.so (_ZN7android10uirenderer12renderthread12RenderThread10threadLoopEv+348)
  #09  pc 0000000000011670  /system/lib64/libutils.so (_ZN7android6Thread11_threadLoopEPv+280)
  #10  pc 00000000000be1e8  /system/lib64/libandroid_runtime.so (_ZN7android14AndroidRuntime15javaThreadShellEPv+136)
  #11  pc 00000000000671b8  /system/lib64/libc.so (_ZL15__pthread_startPv+36)
  #12  pc 000000000001eee4  /system/lib64/libc.so (__start_thread+68)
Вену Г.
источник