Android 7 Native Crash:libc.so tgkill

Ale*_*erl 96 crash android native android-7.0-nougat android-7.1-nougat

我看到这个本机崩溃与以下堆栈跟踪.

这仅在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)
Run Code Online (Sandbox Code Playgroud)

以下是受影响的设备列表: 在此输入图像描述

更新7月18日:

仍然无法找到这个的根,所以我决定购买一个出现次数最多且价格合理的设备,结果是三星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; }
Run Code Online (Sandbox Code Playgroud)

对于面临同样崩溃的人,如果您使用任何这些依赖关系/版本,请在评论中回复.也许我们可以挑出问题依赖.

Len*_*and 30

看看你提供的转储提供了一些线索:

_ZN7android10uirenderer12renderthread12RenderThread10threadLoopEv

这表示UI线程中发生了错误.

libhwui.so x 6

这表明这发生在一些图形/ ui相关代码的中间.

libcutils.so - __android_log_assert

这是一个断言处理程序,因此很可能违反了某种断言libwhui.

中止:

这是告诉O/S"异常"关闭的应用程序.

raise + pthread_kill + tgkill: 这是关闭应用程序的O/S(Android).

您可以在此处查看用于调试此类崩溃的一些文档.

无论如何,我担心除了对您提供的数据进行粗略和不精确的解释之外,实际上很难进行推测.

也许如果你在附加到Android日志查看器时发现了错误,你将拥有更多特定于应用程序的数据(甚至是断言函数通常会发出的错误消息).

我的建议是使用像AGRA这样的东西来追踪与错误有关的所有细节,或者抓住受影响的设备并在连接到调试器时实际重现它.

祝好运!

编辑2017-06-16:我只是想通过Fco P添加一些额外的信息礼貌评论显然谷歌决定对允许在最新版本的Android(7.x)中运行的本机库进行一些更改.更多细节在此链接中.


Tje*_*rkW 8

这在此报告:https: //issuetracker.google.com/issues/37123764

要重现:获取受影响的模式,启用开发人员模式,并将后台活动设置为0.还可以启用"显示背景崩溃".

然后打开应用程序,再次关闭它:您将看到崩溃.