信号6(SIGABRT)的RenderThread本地崩溃

更新!

见下文

情况

我们的应用程序很难诊断问题。 当我们尝试使用意图让相机应用程序返回图片时,我们收到一个低级别的崩溃情况,我们不确定如何debugging。 Nexus 5x设备在安卓6.0和安卓7.0上出现这种情况。

这里是监视器的堆栈跟踪:

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 = 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的testing设备上触发。 一个设备是Android 6,另一个是Android 7.他们都产生类似的堆栈跟踪(显示的是Android 7.0)。

触发上下文

我们似乎可以触发以下两种情况之一的事件:

  1. Google地图加载到启动摄像头的活动中
  2. 内存不足的情况(我们使用Chrome浏览器加载一个或两个cnn.com触发)

我们试过的

我们试图从应用程序中逐个删除function,直到我们不能再触发这个崩溃,但是我们总是能够在低内存情况下触发它。

问题

  • 有没有人跑到这之前,find了解决办法?
  • 关于如何进一步debugging这个问题的build议?
  • 任何提示链接?

更新

2016/11/02 – 评论中有一个开放的错误报告 。 不同的设备/版本(Nexus 5x,6P和Android 6,6.0和7.1的Pixel)也报告了各种不同types情况下的相同问题。 我将继续发布更多信息。 这种情况被列为一个小的优先事项。 我会考虑盯着那个错误,并提出你的担忧。

2016/12/14 – 我个人仍然有这个问题,即使已经应用了各种安全更新。 除了其他人在各种设备上报告相同的问题之外,没有其他信息。 请检查链接的错误报告,明星和评论那里。 如果我发现任何有用的东西,我会在这里张贴!

2017/07/31 – 对于仍然遇到此问题的用户 , 一位用户试图对其用户群进行分阶段推广,并删除各种function以尝试诊断问题所在。 在他们的情况下,通过删除com.google.android.gms:play-services-maps:11.0.1 ,他们的情况似乎已经解决了。 不幸的是,地图是我们应用程序的核心组件; 因此在我们的情况下这是不能接受的。 在我看来,这似乎与在恢复活动时造成问题的各种情况下的公羊消费有关。

2017/12/05 – Google没有任何更改或真正的确认。 从我发现的情况来看,这个问题似乎已经在Android 8.0以及运行Android 7.x的各种更新的一些设备上得到了解决

Solutions Collecting From Web of "信号6(SIGABRT)的RenderThread本地崩溃"

我们最初报告这个错误(谷歌) https://issuetracker.google.com/issues/37123764 。 这是Nexus的固件/安全更新(我们在内部看到它的5倍)中的一个问题,它在稍后的固件更新中得到修复。

“坏”固件上的电话需要更新。 从来没有find解决方法。

尝试清理该项目。 在Android Studio Build-> Clean Project中

我不知道为什么,但它帮助了我。 运行三星Galaxy S6 Android 7.0