web-dev-qa-db-ja.com

Android 7ネイティブクラッシュ: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

UPDATE 7/18:

それでもこれの根本に到達することができなかったので、私はほとんどの出現があり手ごろな価格のデバイスを購入することにしました。それはAndroid 7.0を備えたSamsung Galaxy J3 2017バージョンでした。しかし、残念ながらクラッシュを再現できません。

また、実稼働環境でアプリのメモリ使用量を改善しましたが、クラッシュは引き続き発生しています。

すべてのコメントと私自身の研究から、それは動的にリンクされた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; }

同じクラッシュに直面している人のために、これらの依存性/バージョンのいずれかを使用している場合はコメントで返信してください。問題の依存関係を特定できるかもしれません。

90
AlexVPerl

指定したダンプを見ると、いくつかの手がかりが得られます。

_ ZN7Android10uirenderer12renderthread12RenderThread10threadLoopEv

これは、エラーがUIスレッドで発生したことを示しています。

libhwui.so x 6

これは、これがいくつかのグラフィック/ UI関連コードの途中で発生していることを示しています。

libcutils.so-__Android_log_assert

これはアサートハンドラであるため、libwhuiで何らかの種類のアサートに違反している可能性があります。

abort:

これは、O/Sに「異常終了」するように指示するアプリケーションです。

raise + pthread_kill + tgkill:これは、アプリをシャットダウンするO/S(Android)です。

これらの種類のクラッシュをデバッグするためのドキュメントを参照できます here

とにかく、あなたが提示したデータのこの粗く不正確な解釈を超えて推測することは本当に難しいと思います。

おそらく、Androidログビューアに添付されている間にバグをキャッチした場合、アプリケーション固有のデータ(または、通常assert関数が出力するエラーメッセージ)を取得することになります。

私のヒントは、 AGRA のようなものを使用して、エラーに関連するすべての詳細を追跡するか、影響を受けるデバイスを把握し、デバッガーに接続したまま実際に再現することです。

がんばろう!

EDIT 2017-06-16:私はFco Pによる追加情報の礼儀的なコメントを追加したいだけです。どうやらGoogleはネイティブのものにいくつかの変更を加えることにしましたライブラリはAndroid(7.x)の最新バージョンで実行できます。詳細は このリンク にあります。

27
Lennart Rolland

これはここに報告されます: https://issuetracker.google.com/issues/37123764

再現するには:影響を受けるモードを取得し、開発者モードを有効にし、バックグラウンドアクティビティを0に設定します。「バックグラウンドクラッシュの表示」も有効にします。

次に、アプリを開き、もう一度閉じます。クラッシュが表示されます。

8
TjerkW

コメントではありません(不十分な担当者)。

リストした依存関係のうち、使用するものは次のとおりです。

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にはバグが含まれていると強く疑っています。

おそらく、私たちと同じようにビューページャーでマップフラグメントを使用し、松原bara司が既に言及した問題の多くの人々( https://issuetracker.google.com/issues/37123764

3
Deo

あなたと同じデバイスのGoogle Playコンソールで同じ問題が発生しました。

私の場合、この問題は、キャンバスをロックおよびロック解除する別のスレッドでアニメーションを行うTextureViewにありました。

TextureViewアニメーションを7および7.1のinvalidate-onDrawアニメーションに変更しましたAndroid、それが役立ちました。

2

依存関係には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で調査および検索した後、cardviewFramelayoutに置き換え、この問題は解決しました

1
songoku1610