Android 7 Native Crash:libc.so tgkill

我看到这个本地崩溃与下面的堆栈跟踪。

这仅在Android 7.0和7.1中发生。 该应用程序已经投入使用了几年,但是随着越来越多的设备被更新到牛轧糖,这个崩溃现在经常发生,并且正在成为一个麻烦。

任何意见,将不胜感激。

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:

仍然无法得到这个根源,所以我决定购买一个出现最多,价格合理的设备,结果是三星Galaxy J3 2017与Android 7.0版本。 但不幸的是仍然无法重现崩溃。

我也在生产中对应用程序进行了一些内存使用改进,但崩溃仍在发生。

从所有的评论和我自己的研究,它似乎与dynamic链接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; } 

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

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

_ZN7android10uirenderer12renderthread12RenderThread10threadLoopEv

这表明错误发生在UI线程中。

libhwui.so x 6

这表明这是发生在一些graphics/用户界面相关的代码中间。

libcutils.so – __android_log_assert

这是一个断言处理程序,所以很可能某种断言在libwhui被违反了。

中止:

这是告诉O / Sclosures的应用程序。

raise + pthread_kill + tgkill:这是O / S(Android)closures应用程序。

你可以在这里看到一些用于debugging这些崩溃的文档。

无论如何,恐怕除了对您提供的数据进行粗糙和不准确的解释之外,真的很难进行推测。

也许如果你在附加到Android日志查看器的时候发现了这个bug,你将会得到更多的应用程序特定的数据(甚至是assert函数通常会抛出的错误信息)。

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

祝你好运!

编辑2017-06-16 :我只是想添加一些额外的信息由Fco P评论。显然谷歌已决定对本地图书馆允许在最新版本的Android(7.x)中运行的一些变化。 更多细节在这个链接 。

不在评论(代表不足)。

您列出的依赖包括:

 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 )已经提到过很多人在讨论这个问题。

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

要重现:获取受影响的模式,启用开发人员模式,并将背景活动设置为0.同时启用“显示背景崩溃”。

然后打开应用程序,并再次closures它:您将看到崩溃。