Android 7 Native Crash: libc.so tgkill
Я вижу этот родной сбой со следующей трассировкой стека.
Это происходит только в 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)
Вот список устройств, которые производятся: ![enter image description here]()
ОБНОВЛЕНИЕ 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:[email protected]'
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:[email protected]') { transitive = true; }
compile('com.crashlytics.sdk.android:crashlytics:[email protected]') { transitive = true; }
Для людей, сталкивающихся с тем же сбоем, пожалуйста, ответьте в комментариях, если вы используете любую из этих зависимостей/версий. Может быть, мы можем выделить проблему зависимости.
Ответы
Ответ 1
Просмотр дампа, который вы предоставили, дает некоторые подсказки:
_ZN7android10uirenderer12renderthread12RenderThread10threadLoopEv
Это указывает на то, что ошибка произошла в потоке пользовательского интерфейса.
libhwui.so x 6
Это указывает на то, что это происходит в середине некоторого кода, связанного с графикой/пользовательским интерфейсом.
libcutils.so - __android_log_assert
Это обработчик утверждения, поэтому, скорее всего, какое-то утверждение было нарушено в libwhui
.
прервать:
Это приложение, сообщающее O/S о необходимости выключения "ненормально".
повышение + pthread_kill + tgkill: это O/S (Android), закрывающее приложение.
Вы можете увидеть некоторую документацию по устранению таких сбоев здесь.
Во всяком случае, я боюсь, что действительно трудно спекулировать за пределами этой грубой и неточной интерпретации представленных вами данных.
Возможно, если вы поймете ошибку, когда она была присоединена к программе просмотра журнала Android, у вас будет больше специфических данных приложения (или даже сообщение об ошибке, которое обычно выдает функция assert).
Мой совет - использовать что-то вроде AGRA, чтобы отследить все детали, относящиеся к ошибке, или получить уязвимое устройство и фактически воспроизвести его, когда он подключен к отладчику.
Удачи!
РЕДАКТИРОВАТЬ 2017-06-16: Я просто хочу добавить дополнительную любезную информацию от Fco P. Очевидно, Google решил внести некоторые изменения в то, какие нативные библиотеки могут работать в последних версиях Android (7.x). Более подробная информация находится по этой ссылке.
Ответ 2
Об этом сообщается здесь: https://issuetracker.google.com/issues/37123764
Воспроизведение: получите уязвимый режим, включите режим разработчика и установите фоновые действия на 0. Также включите "показывать фоновые сбои".
Затем откройте приложение и закройте его снова: вы увидите сбой.
Ответ 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'
разные версии, чем ваши.
У меня есть сильное подозрение, что в игровых сервисах-картах есть ошибка.
Возможно, вы используете фрагмент карты в viewpager, как и мы, и многие люди, о которых уже упоминал Коджи Мацубара (https://issuetracker.google.com/issues/37123764)
Ответ 4
У меня была та же проблема в консоли Google Play для тех же устройств, что и у вас.
В моем случае проблема была в TextureView с анимацией в отдельном потоке с блокировкой и разблокировкой холста.
Я изменил анимацию TextureView на анимацию invalidate-onDraw для Android 7 и 7.1, и это помогло.
Ответ 5
Я не знаю, может быть, эта проблема, как наша, может быть, другая, потому что я вижу в зависимостях, в том числе 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
после чего эта проблема была решена
Ответ 6
Я вижу эту проблему в отчете о сбое на одном пользовательском устройстве - "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)