Google Play预启动测试中Pixel 7相机Native Crash问题求助
问题描述
- 仅持有三星测试设备,无法复现Flutter应用在Google Play Console预启动测试中,Google Pixel 7(Android SDK 33)上出现的相机Provider Native崩溃问题
- 应用使用相机预览功能,崩溃发生在相机启动阶段,预启动报告视频显示屏幕黑屏
- 当前使用Flutter camera组件版本为
camera: ^0.10.5+9(最新版) - GitHub未找到相关Issue,SDK 33的Pixel 7模拟器也无法复现,求解决方案、排查思路或可能原因
崩溃日志
Native crash of /apex/com.google.pixel.camera.hal/bin/hw/android.hardware.camera.provider@2.7-service-google 03-16 07:13:06.132: F/DEBUG(25318): Revision: 'MP1.0' 03-16 07:13:06.132: F/DEBUG(25318): ABI: 'arm64' 03-16 07:13:06.132: F/DEBUG(25318): Timestamp: 2024-03-16 07:13:05.861135246-0700 03-16 07:13:06.132: F/DEBUG(25318): Process uptime: 0s 03-16 07:13:06.132: F/DEBUG(25318): Cmdline: /apex/com.google.pixel.camera.hal/bin/hw/android.hardware.camera.provider@2.7-service-google 03-16 07:13:06.132: F/DEBUG(25318): pid: 755, tid: 25279, name: SegmenterFirstF >>> /apex/com.google.pixel.camera.hal/bin/hw/android.hardware.camera.provider@2.7-service-google <<< 03-16 07:13:06.132: F/DEBUG(25318): uid: 1000 03-16 07:13:06.132: F/DEBUG(25318): tagged_addr_ctrl: 0000000000000001 (PR_TAGGED_ADDR_ENABLE) 03-16 07:13:06.132: F/DEBUG(25318): signal 6 (SIGABRT), code -1 (SI_QUEUE), fault addr -------- 03-16 07:13:06.132: F/DEBUG(25318): Abort message: 'F0000 00:00:1710598385.750268 25279 xeno_dsp_segmenter.cc:289] Check failed: prev_mask_gxp_buffer is OK (INTERNAL: Failed to map buffer. 03-16 07:13:06.132: F/DEBUG(25318): === Source Location Trace: === 03-16 07:13:06.132: F/DEBUG(25318): hardware/gchips/pnp/apps/camera/dsp/gxp_buffer_pool.cc:114 03-16 07:13:06.132: F/DEBUG(25318): ) Failed to get prev mask gxp buffer.' 03-16 07:13:06.132: F/DEBUG(25318): x0 0000000000000000 x1 00000000000062bf x2 0000000000000006 x3 0000007142b456d0 03-16 07:13:06.132: F/DEBUG(25318): x4 1f1eff092d666d68 x5 1f1eff092d666d68 x6 1f1eff092d666d68 x7 7f7f7f7f7f7f7f7f 03-16 07:13:06.132: F/DEBUG(25318): x8 00000000000000f0 x9 00000074418409e0 x10 0000000000000001 x11 0000007441882370 03-16 07:13:06.132: F/DEBUG(25318): x12 0000007142b44390 x13 000000000000000e x14 0000007142b44440 x15 00000014852d1f50 03-16 07:13:06.132: F/DEBUG(25318): x16 00000074418efd50 x17 00000074418caeb0 x18 000000711030a000 x19 00000000000002f3 03-16 07:13:06.132: F/DEBUG(25318): x20 00000000000062bf x21 00000000ffffffff x22 b40000724d186430 x23 b4000071cd1bcff0 03-16 07:13:06.132: F/DEBUG(25318): x24 b4000071cd1c06b0 x25 0000007142b45cb0 x26 0000007142b45ff8 x27 00000000001ec000 03-16 07:13:06.132: F/DEBUG(25318): x28 00000000002ed000 x29 0000007142b45750 03-16 07:13:06.132: F/DEBUG(25318): lr 00000074418721c8 sp 0000007142b456b0 pc 00000074418721f4 pst 0000000000001000 03-16 07:13:06.132: F/DEBUG(25318): backtrace: 03-16 07:13:06.132: F/DEBUG(25318): #00 pc 00000000000531f4 /apex/com.android.runtime/lib64/bionic/libc.so (abort+164) (BuildId: dc4001c2ef2dfc23467040797a96840c) 03-16 07:13:06.132: F/DEBUG(25318): #01 pc 000000000166b26c /apex/com.google.pixel.camera.hal/lib64/libgoog_catpipe.so (absl::log_internal::LogMessage::FailWithoutStackTrace()+48) (BuildId: a529a9ce985900415d5ff56466a5bbea) 03-16 07:13:06.132: F/DEBUG(25318): #02 pc 000000000166b5b4 /apex/com.google.pixel.camera.hal/lib64/libgoog_catpipe.so (absl::log_internal::LogMessage::SendToLog()+124) (BuildId: a529a9ce985900415d5ff56466a5bbea) 03-16 07:13:06.132: F/DEBUG(25318): #03 pc 000000000166b034 /apex/com.google.pixel.camera.hal/lib64/libgoog_catpipe.so (absl::log_internal::LogMessage::Flush()+304) (BuildId: a529a9ce985900415d5ff56466a5bbea) 03-16 07:13:06.132: F/DEBUG(25318): #04 pc 000000000166b864 /apex/com.google.pixel.camera.hal/lib64/libgoog_catpipe.so (absl::log_internal::LogMessageFatal::~LogMessageFatal()+4) (BuildId: a529a9ce985900415d5ff56466a5bbea) 03-16 07:13:06.132: F/DEBUG(25318): #05 pc 000000000068830c /apex/com.google.pixel.camera.hal/lib64/libgoog_catpipe.so (wireless_android_camera::rectiface::XenoDspSegmenter::Initialize()+1968) (BuildId: a529a9ce985900415d5ff56466a5bbea) 03-16 07:13:06.132: F/DEBUG(25318): #06 pc 0000000000687afc /apex/com.google.pixel.camera.hal/lib64/libgoog_catpipe.so (wireless_android_camera::rectiface::CreateXenoDspSegmenter(wireless_android_camera::rectiface::XenoSegmenterOptions const&, wireless_android_camera::common::CommonCodeTimer*, GxpCapi_DevicePowerState)+224) (BuildId: a529a9ce985900415d5ff56466a5bbea) 03-16 07:13:06.132: F/DEBUG(25318): #07 pc 000000000067df3c /apex/com.google.pixel.camera.hal/lib64/libgoog_catpipe.so (wireless_android_camera::catpipe::(anonymous namespace)::CreateXenoSegmenter(wireless_android_camera::common::Vector<int, 2>)+112) (BuildId: a529a9ce985900415d5ff56466a5bbea) 03-16 07:13:06.132: F/DEBUG(25318): #08 pc 000000000067dc78 /apex/com.google.pixel.camera.hal/lib64/libgoog_catpipe.so (void absl::internal_any_invocable::LocalInvoker<false, void, wireless_android_camera::catpipe::(anonymous namespace)::MaybeRunWakeupInferenceAsync()::$_3&&>(absl::internal_any_invocable::TypeErasedState*)+36) (BuildId: a529a9ce985900415d5ff56466a5bbea) 03-16 07:13:06.132: F/DEBUG(25318): #09 pc 0000000001334f70 /apex/com.google.pixel.camera.hal/lib64/libgoog_catpipe.so (util::functional::internal::FunctorCallback<Closure, false, absl::AnyInvocable<void () &&>, void ()>::Run()+36) (BuildId: a529a9ce985900415d5ff56466a5bbea) 03-16 07:13:06.132: F/DEBUG(25318): #10 pc 000000000133e2bc /apex/com.google.pixel.camera.hal/lib64/libgoog_catpipe.so (ThreadPoolWorker::Run()+356) (BuildId: a529a9ce985900415d5ff56466a5bbea) 03-16 07:13:06.132: F/DEBUG(25318): #11 pc 000000000133a818 /apex/com.google.pixel.camera.hal/lib64/libgoog_catpipe.so (Thread::ThreadBody(void*)+456) (BuildId: a529a9ce985900415d5ff56466a5bbea) 03-16 07:13:06.132: F/DEBUG(25318): #12 pc 00000000000c226c /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+204) (BuildId: dc4001c2ef2dfc23467040797a96840c) 03-16 07:13:06.132: F/DEBUG(25318): #13 pc 0000000000054a30 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64) (BuildId: dc4001c2ef2dfc23467040797a96840c) 03-16 07:13:06.146: W/NativeCrashListener(1386): Couldn't find ProcessRecord for pid 755
排查思路与解决方案
可能原因
- 这是Pixel 7专属的相机HAL层(硬件抽象层)崩溃,从日志看是Google Pixel相机DSP模块的缓冲区映射失败,属于设备特定的系统级问题,和Flutter代码无直接关联
- 预启动测试环境的Pixel 7可能存在系统固件版本问题,或者相机硬件模块的临时异常
- 模拟器无法复现是因为模拟器没有真实的Pixel相机DSP硬件,不会触发该底层逻辑
排查思路
- 检查Google Play Console预启动测试中该设备的系统固件版本,确认是否为Pixel 7的旧版本固件,部分旧版本可能存在相机HAL的bug
- 在代码中添加相机启动的异常捕获逻辑,即使底层HAL崩溃,也尽量让应用不崩溃,而是提示用户重启或切换相机
- 向Google提交该崩溃日志,通过Play Console的反馈渠道上报设备特定问题
解决方案
- 无需修改Flutter核心代码,问题出在Pixel设备的系统相机HAL层,不属于应用代码问题
- 在应用中添加相机初始化失败的兜底处理:当相机启动抛出异常时,显示友好提示,引导用户重启应用或检查系统相机功能
- 等待Google推送Pixel 7的系统固件更新,修复该相机HAL的缓冲区映射bug
内容的提问来源于stack exchange,提问作者finisinfinitatis
相关产品推荐
相关产品推荐

