Android 7 Native Crash: libc.so tgkill

98

Estou vendo esta falha nativa com o seguinte rastreamento de pilha.

Isso acontece apenas no Android 7.0 e 7.1. Nada de novo foi adicionado ao aplicativo, que está em produção há alguns anos, mas com mais dispositivos sendo atualizados para o Nougat, esse travamento acontece com frequência e está se tornando um incômodo.

Qualquer conselho seria apreciado.

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)

Aqui está uma lista dos dispositivos afetados: insira a descrição da imagem aqui

ATUALIZAÇÃO 18/07:

Ainda não consegui chegar à raiz disso, então decidi comprar um aparelho que apresentava mais ocorrências e tinha um preço razoável, que acabou sendo o Samsung Galaxy J3 versão 2017 com Android 7.0. Infelizmente, ainda não consigo reproduzir a falha.

Também fiz algumas melhorias no uso de memória do aplicativo em produção, mas a falha ainda está acontecendo.

Com base em todos os comentários e em minha própria pesquisa, parece estar relacionado a NDKs vinculados dinamicamente, mas não estou usando nenhum e é difícil descobrir se alguma das dependências usa.

Eu gostaria de compartilhar minhas dependências, seria ótimo se outras pessoas que enfrentam o mesmo problema pudessem chamar se estiverem usando uma das mesmas dependências - talvez possamos identificar o culpado desta forma.

// 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; }

Para as pessoas que enfrentam o mesmo travamento, responda nos comentários se estiver usando alguma dessas dependências / versões. Talvez possamos destacar a dependência do problema.

AlexVPerl
fonte
6
Talvez eu ache que sua falha nativa é o mesmo problema a seguir. issuetracker.google.com/issues/37123764 Meu aplicativo tem um bug semelhante, mas não encontro nenhuma solução ... Acho que o bug do Android 7, 7.1.
Koji Matsubara
3
Também estou vendo isso, exatamente o mesmo rastreamento de pilha e a mesma lista exata de dispositivos afetados! A última versão foi publicada em 15 de maio, mas eu tenho duas linhas na página de travamentos com o mesmo nome "tgkill".
Orgmir
3
Também estou enfrentando exatamente o mesmo problema, exatamente o mesmo rastreamento de pilha, exatamente os mesmos dispositivos afetados, usando nenhuma biblioteca nativa e usando serviços de localização e mapas. Talvez esteja ligado a isso? Alguém tem uma solução?
Cord Rehn
3
Nos últimos 2 meses, tivemos mais de 30 mil dessas falhas tgkill afetando mais de 14 mil usuários. Passei as últimas semanas removendo lentamente quaisquer bibliotecas de terceiros que estamos usando e liberando implementações em etapas para ver se posso rastrear o que está causando essas falhas. Tudo é removido, exceto Retrofit, Okhttp, Jackson, Picasso, Firebase, Google Play Services, MultiDex e Apache Legacy. Com base neste tópico, estamos discutindo a liberação para 1% de nossos usuários, com nossos mapas removidos. Atualmente em execução: 'com.google.android.gms: play-services-maps: 11.0.1'
FinHead
3
Lançamos um lançamento em etapas removendo apenas 'com.google.android.gms: play-services-maps: 11.0.1'. Depois de assistir durante todo o fim de semana, não houve ocorrências de queda do tgkill. Sim, esse problema é causado por mapas mencionados por @Deo e vinculados ao rastreador de problemas abaixo.
FinHead

Respostas:

33

Olhando para o despejo que você forneceu, você encontra algumas pistas:

_ZN7android10uirenderer12renderthread12RenderThread10threadLoopEv

Isso indica que o erro ocorreu no thread de interface do usuário.

libhwui.so x 6

Isso indica que isso está acontecendo no meio de algum código relacionado a gráficos / interface do usuário.

libcutils.so - __android_log_assert

Este é um manipulador de declaração, então provavelmente algum tipo de declaração foi violado em libwhui.

abortar:

Este é o aplicativo que informa ao O / S para desligar "de forma anormal".

raise + pthread_kill + tgkill: Este é o O / S (Android) fechando o aplicativo.

Você pode ver alguma documentação para depurar esses tipos de travamentos aqui .

De qualquer forma, receio que seja realmente difícil especular além dessa interpretação grosseira e imprecisa dos dados que você apresentou.

Talvez se você detectou o bug enquanto ele estava anexado ao visualizador de log do Android, você teria mais dados específicos do aplicativo (ou até mesmo uma mensagem de erro que a função assert geralmente exibe).

Minha dica é usar algo como ACRA para rastrear todos os detalhes relativos ao erro, ou obter um dispositivo afetado e reproduzi-lo enquanto conectado a um depurador.

Boa sorte!

EDITAR 2016-06-16 : Eu só quero adicionar algumas informações extras, um comentário de cortesia de Fco P. Aparentemente, o Google decidiu fazer algumas mudanças nas bibliotecas nativas que podem ser executadas nas versões mais recentes do Android (7.x). Mais detalhes estão neste link .

Lennart Rolland
fonte
raise + pthread_kill + tgkill: Este é o O / S (Android) fechando o aplicativo. Isso ocorre quando o usuário mata o aplicativo ou automaticamente do sistema operacional?
DevC de
1
Isso é o O / S desligando um processo com defeito, tanto quanto eu sei. Se o aplicativo fosse encerrado "pacificamente", não seria uma operação de "eliminação".
Lennart Rolland
8

Isso é relatado aqui: https://issuetracker.google.com/issues/37123764

Para reproduzir: Obtenha um modo afetado, habilite o modo de desenvolvedor e defina as atividades em segundo plano como 0. Habilite também "mostrar travamentos em segundo plano".

Em seguida, abra o aplicativo e feche-o novamente: você verá a falha.

TjerkW
fonte
3

Não está nos comentários (representação insuficiente).

Das dependências que você listou, usamos:

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'

versões diferentes da sua. Tenho fortes suspeitas de que play-services-maps contém o bug.

Talvez você use fragmentos de mapa no viewpager como fazemos e muitas pessoas em questão já mencionadas por Koji Matsubara ( https://issuetracker.google.com/issues/37123764 )

Deo
fonte
Você conhece uma solução alternativa para evitar isso com base nesse relatório de bug? Não estou vendo nenhuma solução ou solução alternativa nem nada.
hvaughan3 de
Tenho o mesmo problema que afeta todos os meus aplicativos, no entanto, só uso bibliotecas de suporte: anotações, v4, appcompat e design.
3c71 de
3

Não sei, talvez esse problema parecido com o nosso, talvez diferente, pois vejo nas dependências tem inclusive carview. Compartilhe aqui espero que seja útil para alguém no futuro

Também enfrentei problemas no Android 7.0 e 7.1 abaixo

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)

Depois de pesquisar e pesquisar no gooogle, troquei cardviewpor Framelayoutentão esse problema foi resolvido

songoku1610
fonte
Olá @ songoku1610, como você descobriu que o problema é causado pelo Cardview.
Ran94 de
1
Tentei substituir cardviewpor Framelayoutentão esse problema foi resolvido, esse problema só acontece no Android 7.x
songoku1610
Outras coisas, a pergunta acima foi editada, remova as independências de texto na nota, para que minha resposta because I see in dependencies have including carviewpareça não corresponder à pergunta
songoku1610
3

Eu tive o mesmo problema no console do Google Play para os mesmos dispositivos que você.

No meu caso, o problema estava em TextureView com animação em thread separada com tela de bloqueio e desbloqueio.

Mudei a animação TextureView para a animação invalidate-onDraw para Android 7 e 7.1 e isso ajudou.

Sergei Belozerov
fonte
Meu aplicativo usa TextureView. Você poderia elaborar mais sobre a animação invalidate-onDraw .
Shishir Shetty
@ShishirShetty Eu não uso mais TextureView, substituo View, descrevo todas as animações no método onDraw e chamo o método postInvalidateOnAnimation () a cada 16 milissegundos (~ 60fps)
Sergei Belozerov
-1

Estou vendo este problema em um relatório de falha no dispositivo de um usuário - 'Huawei Honor 7X (HWBND-H)' - executando o Android 8.0. Uma vez que não está ocorrendo em campo para outros dispositivos / versões do sistema operacional, meu pensamento é que já pode ter sido corrigido nas atualizações do sistema operacional (que este usuário não pegou, ou possivelmente a Huawei não forneceu).

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)
Venu G.
fonte