带有信号 6 (SIGABRT) 的 RenderThread 的本机崩溃
Posted
技术标签:
【中文标题】带有信号 6 (SIGABRT) 的 RenderThread 的本机崩溃【英文标题】:Native crash of RenderThread with signal 6 (SIGABRT) 【发布时间】:2017-02-27 00:37:29 【问题描述】:更新!
见下文
情况
我们的应用存在难以诊断的问题。当我们尝试使用意图让相机应用返回图片时,我们会收到一个低级崩溃情况,我们不确定如何调试。这发生在运行 android 6.0 和 Android 7.0 的 Nexus 5x 设备上。
这是来自监视器的堆栈跟踪:
10-17 11:59:41.208 9925-9925/? A/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
10-17 11:59:41.208 9925-9925/? A/DEBUG: Build fingerprint: 'google/bullhead/bullhead:7.0/NBD90W/3239497:user/release-keys'
10-17 11:59:41.208 9925-9925/? A/DEBUG: Revision: 'rev_1.0'
10-17 11:59:41.208 9925-9925/? A/DEBUG: ABI: 'arm64'
10-17 11:59:41.208 9925-9925/? A/DEBUG: pid: 5791, tid: 6054, name: RenderThread >>> com.ourapp <<<
10-17 11:59:41.209 9925-9925/? A/DEBUG: signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
10-17 11:59:41.230 9925-9925/? A/DEBUG: Abort message: 'Leaked 2 GPU objects!'
10-17 11:59:41.230 9925-9925/? A/DEBUG: x0 0000000000000000 x1 00000000000017a6 x2 0000000000000006 x3 0000000000000008
10-17 11:59:41.230 9925-9925/? A/DEBUG: x4 00006e6174736e69 x5 0000000000000000 x6 0000007629a9f000 x7 0000000000000000
10-17 11:59:41.230 9925-9925/? A/DEBUG: x8 0000000000000083 x9 ffffffffffffffdf x10 0000000000000000 x11 0000000000000001
10-17 11:59:41.230 9925-9925/? A/DEBUG: x12 0000000000000018 x13 0000000000000000 x14 0000000000000000 x15 000850a8eb6af8af
10-17 11:59:41.231 9925-9925/? A/DEBUG: x16 000000762948eed0 x17 0000007629438a2c x18 0000000000000400 x19 00000076093b84f8
10-17 11:59:41.231 9925-9925/? A/DEBUG: x20 0000000000000006 x21 00000076093b8450 x22 000000000000000b x23 000000762933c040
10-17 11:59:41.231 9925-9925/? A/DEBUG: x24 00000000ffffffff x25 00000075f9d71490 x26 7fffffffffffffff x27 00000075f2c54060
10-17 11:59:41.231 9925-9925/? A/DEBUG: x28 0000007625c83238 x29 00000076093b7ae0 x30 0000007629435e58
10-17 11:59:41.231 9925-9925/? A/DEBUG: sp 00000076093b7ac0 pc 0000007629438a34 pstate 0000000060000000
10-17 11:59:41.237 3715-9157/? E/mm-camera-sensor: port_sensor_handle_aec_update:443miss aec update window, skip
10-17 11:59:41.253 9925-9925/? A/DEBUG: backtrace:
10-17 11:59:41.254 9925-9925/? A/DEBUG: #00 pc 000000000006ba34 /system/lib64/libc.so (tgkill+8)
10-17 11:59:41.254 9925-9925/? A/DEBUG: #01 pc 0000000000068e54 /system/lib64/libc.so (pthread_kill+64)
10-17 11:59:41.254 9925-9925/? A/DEBUG: #02 pc 0000000000023ed8 /system/lib64/libc.so (raise+24)
10-17 11:59:41.254 9925-9925/? A/DEBUG: #03 pc 000000000001c790 /system/lib64/libc.so (abort+52)
10-17 11:59:41.254 9925-9925/? A/DEBUG: #04 pc 00000000000107f4 /system/lib64/libcutils.so (__android_log_assert+224)
10-17 11:59:41.254 9925-9925/? A/DEBUG: #05 pc 0000000000054cc0 /system/lib64/libhwui.so
10-17 11:59:41.254 9925-9925/? A/DEBUG: #06 pc 00000000000350f8 /system/lib64/libhwui.so
10-17 11:59:41.254 9925-9925/? A/DEBUG: #07 pc 00000000000328c8 /system/lib64/libhwui.so
10-17 11:59:41.254 9925-9925/? A/DEBUG: #08 pc 0000000000037348 /system/lib64/libhwui.so
10-17 11:59:41.254 9925-9925/? A/DEBUG: #09 pc 0000000000038434 /system/lib64/libhwui.so
10-17 11:59:41.254 9925-9925/? A/DEBUG: #10 pc 0000000000039890 /system/lib64/libhwui.so (_ZN7android10uirenderer12renderthread12RenderThread10threadLoopEv+152)
10-17 11:59:41.254 9925-9925/? A/DEBUG: #11 pc 0000000000012460 /system/lib64/libutils.so (_ZN7android6Thread11_threadLoopEPv+272)
10-17 11:59:41.254 9925-9925/? A/DEBUG: #12 pc 000000000009bc4c /system/lib64/libandroid_runtime.so (_ZN7android14AndroidRuntime15javaThreadShellEPv+116)
10-17 11:59:41.254 9925-9925/? A/DEBUG: #13 pc 000000000006863c /system/lib64/libc.so (_ZL15__pthread_startPv+208)
10-17 11:59:41.254 9925-9925/? A/DEBUG: #14 pc 000000000001d9fc /system/lib64/libc.so (__start_thread+16)
当我们使用 Intent 调用相机应用程序以使用以下代码检索图片时,我们可以可靠地触发此操作:
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (intent.resolveActivity(fragmentContext.getPackageManager()) == null)
return;
try
File photoFile = FileUtils.createImageFile(fragmentContext);
data.addFileUpload(photoFile.getAbsolutePath());
Uri photoUri = FileProvider.getUriForFile(fragmentContext, OurApplication.FILE_PROVIDER, photoFile);
intent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
startActivityForResult(intent, REQUEST_TAKE_PHOTO);
catch (IOException ignored)
如图所示,这里没有任何常见的东西。
环境
我们可以在 Nexus 5x 的测试设备上触发此功能。一台设备是 Android 6,另一台是 Android 7。它们都产生相似的堆栈跟踪(显示的是 Android 7.0)。
触发上下文
在以下两种情况下,我们似乎能够触发此事件:
-
Google 地图已加载到启动相机的 Activity 中
内存不足的情况(我们使用加载了 cnn.com 的一个或两个选项卡的 Chrome 触发)
我们尝试过的
我们已尝试从应用程序中分段删除功能,直到我们无法再触发此崩溃,但在内存不足的情况下我们始终能够触发它。
问题
以前有没有人遇到过这个问题并找到解决方法? 关于如何进一步调试此问题的建议? 任何提示链接?更新
2016/11/02 - There is an open bug report 如 cmets 所述。不同的设备/版本(Nexus 5x、6P 和 Android 6、7.0 和 7.1 的 Pixel)在各种不同类型的情况下也报告了相同的问题。我将继续发布更多信息的更新。该情况已被分类为优先级为小的缺陷。我会考虑盯着那个错误并在那里提出你的担忧。
2016/12/14 - 即使应用了各种安全更新,我个人仍然遇到此问题。除了其他人在各种设备上报告相同问题外,没有更多信息。请查看链接的错误报告、星号和评论。如果我发现任何有用的东西,我会在这里发布!
2017/07/31 - 对于仍然遇到此问题的人,one user 已尝试对其用户群进行分阶段部署并删除各种功能以尝试诊断问题所在.在他们的情况下,通过删除com.google.android.gms:play-services-maps:11.0.1
,他们的情况似乎已经得到解决。不幸的是,地图是我们应用程序的核心组件。因此,这在我们的情况下是不可接受的。在我看来,这似乎仍然与在恢复活动时导致问题的各种情况下消耗 ram 有关。
2017 年 12 月 5 日 - Google 没有更改或真正确认。根据我的发现,这个问题似乎已在 Android 8.0 和一些运行 Android 7.x 的各种更新的设备上得到解决
【问题讨论】:
一个用户 reported 这个已经。 该报告是在这个问题之后添加的(实际上引用了这个) 在运行 Android 7 的 Nexus 5X 和 Nexus 6P 上也看到了这一点。无法将其绑定到任何特定代码。也需要解决这个问题。 关于可能的解决方案@JaymesBearden 的任何更新? 不幸的是,我没有遇到任何可以明确解决此问题的方法。这对我自己来说是非常零星的。请查看链接的错误报告并在此处加注星标/评论以引起关注。 【参考方案1】:我在改进我的应用程序时也遇到了这个问题,我想让相机预览更流畅一些。如果不需要通过停止预览并使表面不可见来关闭它,我只停止了预览并使表面可见。 (这可以制作出漂亮的静止图像并且重新启动时间更短)这导致了“Leaked 2 GPU objects!”如果应用关闭,则崩溃。
我假设只有两种情况下预览关闭干净:a)如果预览正在运行 b)如果预览停止并且!表面从视图中移除(不可见)。
【讨论】:
【参考方案2】:我们最初报告了这个错误(向谷歌)https://issuetracker.google.com/issues/37123764。这是 Nexuses 固件/安全更新中的一个问题(我们在 5X 内部看到它),它在以后的固件更新中得到修复。
“坏”固件的手机需要更新。从未找到解决方法。
【讨论】:
【参考方案3】:RAM
可能有问题
将此代码添加到manifests
-> application
android:largeHeap="true"
【讨论】:
【参考方案4】:它不会阻止问题的发生发生,但您可以干净地或更干净地捕获和恢复。添加一个 catch 并清除所有引用(并杀死由此产生的任何工作线程):
catch (Exception ignored) //I think this is an ERROR not an exception here.
photoFile = null;//Might want to also close this.
data = null;
intent = null
catch (Error ignored)
photoFile = null;//Might want to also close this.
data = null;
intent = null
【讨论】:
【参考方案5】:尝试清理项目。在 Android Studio 中Build->Clean Project
我不知道为什么,但它帮助了我。运行三星 Galaxy S6 Android 7.0
【讨论】:
但这更多的是评论,而不是真正的答案。可能纯属巧合。以上是关于带有信号 6 (SIGABRT) 的 RenderThread 的本机崩溃的主要内容,如果未能解决你的问题,请参考以下文章
NestedScrollView 中的 WebView 给出致命信号 6 (SIGABRT) 代码 -6 RenderThread
pycharm 随机发生错误:进程以退出代码 134 完成(被信号 6 中断:SIGABRT)
带有 DetailViewController 的 SIGABRT 信号 [重复]
来自 asyncTask 的 Android 致命信号 6 (SIGABRT)