当前位置: 首页 > news >正文

相机定屏问题分析四:【cameraserver 最大request buffer超标】后置视频模式预览定屏闪退至桌面

【关注我,后续持续新增专题博文,谢谢!!!】

上一篇我们讲了相机定屏问题分析三:【配流ConfigStream失败】外屏打开相机视频照片人像来回切换后,相机页面卡死,点击没反应9055522

        这一篇我们开始讲 相机定屏问题分析四:【cameraserver 最大request buffer超标】后置视频模式预览定屏闪退至桌面9208793

目录

一、背景

二、:原因分析

    2.1:首先查看最直接的闪退原因

    2.2 :分析request 246状态

    2.3 :分析request 246未执行完成原因

    2.4 :分析buffer error原因

    2.5 :解决思路

    2.6 :分析request buffer最大值来源

    2.7 :解决方案


一、背景

【操作步骤】【Operation steps】相机—视频模式后置预览。开启水印 照片模式拍 切视频模式录制视频 查看成像 下拉点进WiFi界面连接WiFi 再切回相机照片模式拍照,录制视频
【实际结果】【Actual results】低概率相机定屏闪退至桌面
【期望结果】【Expected results】不会定屏闪退至桌面

二、:原因分析

    2.1:首先查看最直接的闪退原因

request 236在flush过程中被终止,且是性能差delay导致:

05-17 16:35:18.767668 30415 30415 I [ 6586.495729]CAM_WARN: CAM-UTIL: cam_common_util_thread_switch_delay_detect: 158 CDM workq schedule delay detected 6586:565033 cur 6586:572244 diff 7: threshold 5
05-17 16:35:19.842762 30421 30421 I [ 6587.570823]CAM_WARN: CAM-UTIL: cam_common_util_thread_switch_delay_detect: 158 CDM workq schedule delay detected 6587:597735 cur 6587:647348 diff 49: threshold 5
05-17 16:35:21.102488 30421 30421 I [ 6588.830549]CAM_WARN: CAM-UTIL: cam_common_util_thread_switch_delay_detect: 158 CDM workq schedule delay detected 6588:897158 cur 6588:907071 diff 9: threshold 5

05-17 16:35:22.123838 30422 30422 I [ 6589.851899]CAM_WARN: CAM-ICP: cam_icp_mgr_handle_frame_process: 2196 ctx_id 0 req 246 dev 3 has been aborted[flushed]

    2.2 :分析request 246状态

果然RequestId: 246超时未完成进入dump:

05-17 16:35:22.250 22496  8602 E CamX    : [ALWAYS_ON   ] camxsession.cpp:6475 HandleSystemEventCb() Triggering System Event: Session:0xb400007a6a40d000, Node:Unknown(-1), Instance:-1, Pipeline:Unknown(-1) DumpOnly:1
05-17 16:35:22.250 22496  8602 E CamX    : [ALWAYS_ON   ] camxsession.cpp:6484 HandleSystemEventCb() ErrorCode:259, ErrorString: CamxResultExtCoreFlushResultTimedOut, ErrorDescription: Description: CamxResultExt Core Flush Result TimedOut forceSigAbort=0 threadCallStacksDumped = 0frameworkFrameNum=259
05-17 16:35:22.250 22496  8602 I CamX    : [ DUMP][CORE   ] camxsession.cpp:8826 DumpDebugInfo() +----------------------------------------------------------+
05-17 16:35:22.250 22496  8602 I CamX    : [ DUMP][CORE   ] camxsession.cpp:8827 DumpDebugInfo() +            CALLING SESSION DUMP 0xb400007a6a40d000             +
05-17 16:35:22.250 22496  8602 I CamX    : [ DUMP][CORE   ] camxsession.cpp:8828 DumpDebugInfo() + numPipelines:             1
05-17 16:35:22.250 22496  8602 I CamX    : [ DUMP][CORE   ] camxsession.cpp:8829 DumpDebugInfo() + livePendingRequests:      1
05-17 16:35:22.250 22496  8602 I CamX    : [ DUMP][CORE   ] camxsession.cpp:8830 DumpDebugInfo() + maxLivePendingRequests:   21
05-17 16:35:22.250 22496  8602 I CamX    : [ DUMP][CORE   ] camxsession.cpp:8831 DumpDebugInfo() + requestQueueDepth:        23
05-17 16:35:22.250 22496  8602 I CamX    : [ DUMP][CORE   ] camxsession.cpp:8841 DumpDebugInfo() + Pipeline[0] Flush Status: 1
05-17 16:35:22.250 22496  8602 I CamX    : [ DUMP][CORE   ] camxsession.cpp:8844 DumpDebugInfo() + usecaseNumBatchedFrames:  1
05-17 16:35:22.250 22496  8602 I CamX    : [ DUMP][CORE   ] camxsession.cpp:8873 DumpDebugInfo() WARNING: Lock failed with status: 18. but continuing session dump
05-17 16:35:22.250 22496  8602 I CamX    : [ DUMP][CORE   ] camxpipeline.cpp:6507 DumpDebugInfo() +----------------------------------------------------------+
05-17 16:35:22.250 22496  8602 I CamX    : [ DUMP][CORE   ] camxpipeline.cpp:6508 DumpDebugInfo() +    PIPELINE DEBUG INFO     +
05-17 16:35:22.251 22496  8602 I CamX    : [ DUMP][CORE   ] camxpipeline.cpp:6514 DumpDebugInfo() +  Pipeline Name: VideoEIS3PreviewEIS2Offline_0_cam_0, Pipeline ID: 0, 0xb400007aa02ad000, CurrentRequestId: 246 cameraid=0
05-17 16:35:22.251 22496  8602 I CamX    : [ INFO][CORE   ] camxpipeline.cpp:7408 LogPendingNodes() +    Session 0xb400007a6a40d000 - Pipeline VideoEIS3PreviewEIS2Offline_0_cam_0 Pending Nodes

    2.3 :分析request 246未执行完成原因

buffer错误导致246帧未执行完:

05-17 16:35:22.202 22496 22542 I CamX    : [ INFO][CORE   ] camxsession.cpp:6909 InjectResult() Session 0xb400007a6a40d000 [VideoEIS3PreviewEIS2Offline] Reporting a buffer error during flush to the framework for streamIndex 1 SeqId: 245 <-> ReqId: 246
05-17 16:35:22.203 22496 22542 I CamX    : [ INFO][CORE   ] camxsession.cpp:5133 ProcessResultBuffers() Result buffer for sequence ID 245 framenumber 245 in error state
05-17 16:35:22.203 22496 22542 I CamX    : [ INFO][CORE   ] camxsession.cpp:5140 ProcessResultBuffers()     Result buffer: 0xb400007a6d75a0c0, error:1, valid:0, buffer:0xb400007a6a431bd0, pStream:0xb400007ac97ec180
05-17 16:35:22.203 22496 22542 I CamX    : [ INFO][CORE   ] camxsession.cpp:5149 ProcessResultBuffers()     Message: 0xb400007a72a8a0a8, messageType: 1, messageUnion: 0x7ab6de5330, errorMessageCode: 4, frameworkFrameNum: 245, pErrorStream: 0xb400007ac97ec180
05-17 16:35:22.203 22496 22542 I CamX    : [ INFO][HAL    ] camxhaldevice.cpp:831 Notify() type 00000001, frame_number 337, error_code 00000004【buffer错误】, error_stream 0xb400007a89961228

05-17 16:35:22.202 22496 22545 I CamX    : [ INFO][CORE   ] camxsession.cpp:7201 AdvanceMinExpectedResult() Session 0xb400007a6a40d000: pHolder 0xb400007a6d75a000 Can't advance because of buffer[1] for sequence Id: 245, Pipeline Index: 0
05-17 16:35:22.202 22496 22545 I CamX    : [ INFO][CORE   ] camxsession.cpp:7316 AdvanceMinExpectedResult() Session 0xb400007a6a40d000: Results processed, current queue state: minResultIdExpected = 246, maxResultIdExpected= 246, minSequenceIdExpected: 245, maxSequenceIdExpected: 245, and numResultsPending: 1 m_livePendingRequests: 1	
05-17 16:35:22.202 22496 22542 I CamX    : [ INFO][CORE   ] camxsession.cpp:6909 InjectResult() Session 0xb400007a6a40d000 [VideoEIS3PreviewEIS2Offline] Reporting a buffer error during flush to the framework for streamIndex 1 SeqId: 245 <-> ReqId: 246
05-17 16:35:22.203 22496 22542 I CamX    : [ INFO][CORE   ] camxsession.cpp:5133 ProcessResultBuffers() Result buffer for sequence ID 245 framenumber 245 in error state
05-17 16:35:22.203 22496 22542 I CamX    : [ INFO][CORE   ] camxsession.cpp:5140 ProcessResultBuffers()     Result buffer: 0xb400007a6d75a0c0, error:1, valid:0, buffer:0xb400007a6a431bd0, pStream:0xb400007ac97ec180
05-17 16:35:22.203 22496 22542 I CamX    : [ INFO][CORE   ] camxsession.cpp:5149 ProcessResultBuffers()     Message: 0xb400007a72a8a0a8, messageType: 1, messageUnion: 0x7ab6de5330, errorMessageCode: 4, frameworkFrameNum: 245, pErrorStream: 0xb400007ac97ec180
05-17 16:35:22.203 22496 22542 I CamX    : [ INFO][HAL    ] camxhaldevice.cpp:831 Notify() type 00000001, frame_number 337, error_code 00000004【buffer错误】, error_stream 0xb400007a8996122805-17 16:35:22.202 22496 22542 I CamX    : [ INFO][CORE   ] camxsession.cpp:6909 InjectResult() Session 0xb400007a6a40d000 [VideoEIS3PreviewEIS2Offline] Reporting a buffer error during flush to the framework for streamIndex 1 SeqId: 245 <-> ReqId: 246
05-17 16:35:22.209 22933 22933 D OCAM_GalleryHelper: startGallery, thumbnail rect : Rect(108, 1989 - 252, 2133) target rect :Rect(0, 246 - 1080, 2166), Bitmap width:540, height:960,thumbnail.getUri():content://************/231,requestGalleryTransitionType: 0, gallery support early start is true
05-17 16:35:22.251 22496  8602 I CamX    : [ DUMP][CORE   ] camxpipeline.cpp:6514 DumpDebugInfo() +  Pipeline Name: VideoEIS3PreviewEIS2Offline_0_cam_0, Pipeline ID: 0, 0xb400007aa02ad000, CurrentRequestId: 246 cameraid=0
05-17 16:35:22.251 22496  8602 I CamX    : [ INFO][CORE   ] camxpipeline.cpp:7412 LogPendingNodes() |      Requests Range - lastInOrderCompletedRequestId: 246 currentRequest : 246
05-17 16:35:22.251 22496  8602 I CamX    : [ INFO][CORE   ] camxpipeline.cpp:7412 LogPendingNodes() |      Requests Range - lastInOrderCompletedRequestId: 246 currentRequest : 246
05-17 16:35:22.251 22496  8602 I CamX    : [ DUMP][CORE   ] camxpipeline.cpp:6566 DumpDebugInfo() |      Requests Range - lastInOrderMetaCompletedRequestId: 246 currentRequest : 246
05-17 16:35:22.251 22496  8602 I CamX    : [ DUMP][CORE   ] camxpipeline.cpp:6566 DumpDebugInfo() |      Requests Range - lastInOrderMetaCompletedRequestId: 246 currentRequest : 246
05-17 16:35:22.251 22496  8602 I CamX    : [ DUMP][CORE   ] camxmetadatapool.cpp:1697 DumpMetadataSlotDebugInfo() Slot Index = 16 IsValid = 1 Associated ReqId = 246 Metabuffer = 0xb400007b0862a460
05-17 16:35:22.251 22496  8602 I CamX    : [ DUMP][CORE   ] camxmetadatapool.cpp:1697 DumpMetadataSlotDebugInfo() Slot Index = 16 IsValid = 1 Associated ReqId = 246 Metabuffer = 0xb400007b0862a380
05-17 16:35:22.251 22496  8602 I CamX    : [ DUMP][CORE   ] camxnode.cpp:7819 DumpDebugInfo() + Request: 246 Unsuccessful. metaComplete: 1, reqComplete: 1, numUnsigFences: 0, numUnprocFences: 0, status: SUCCESS , currTime 16:35:22:250  statusTransitionTime: 16:35:22:169 
05-17 16:35:22.297 22933 22933 D OCAM_GalleryHelper: startTransitionAnimation, thumbnail rect : Rect(108, 1989 - 252, 2133) target rect :Rect(0, 246 - 1080, 2166)
05-17 16:35:22.855 22496  8602 I CamX    : [ INFO][HAL    ] camxsession.cpp:9242 ProcessMetabufferPendingQueue() Pending Queue pipeline VideoEIS3PreviewEIS2Offline_0_cam_0 request 246 old = 246 last 246 delay 0 sequence 245 old 245 new 245
05-17 16:35:22.855 22496  8602 I CamX    : [ INFO][HAL    ] camxsession.cpp:9242 ProcessMetabufferPendingQueue() Pending Queue pipeline VideoEIS3PreviewEIS2Offline_0_cam_0 request 246 old = 246 last 246 delay 0 sequence 245 old 245 new 245
05-17 16:35:22.855 22496  8602 I CamX    : [ INFO][HAL    ] camxsession.cpp:9242 ProcessMetabufferPendingQueue() Pending Queue pipeline VideoEIS3PreviewEIS2Offline_0_cam_0 request 246 old = 246 last 246 delay 0 sequence 245 old 245 new 245
05-17 16:35:22.855 22496  8602 I CamX    : [ INFO][CORE   ] camxnode.cpp:13427 ClearDependencies() Clearing dependencies for Node: VideoEIS3PreviewEIS2Offline_com.qti.node.gme0_cam0 with lastCompletedRequestId 246 and m_tRequestId 1
05-17 16:35:22.855 22496  8602 I CamX    : [ INFO][CORE   ] camxnode.cpp:13427 ClearDependencies() Clearing dependencies for Node: VideoEIS3PreviewEIS2Offline_com.qti.node.eisv210_cam0 with lastCompletedRequestId 246 and m_tRequestId 1
05-17 16:35:22.855 22496  8602 I CamX    : [ INFO][CORE   ] camxnode.cpp:13427 ClearDependencies() Clearing dependencies for Node: VideoEIS3PreviewEIS2Offline_com.qti.node.eisv311_cam0 with lastCompletedRequestId 246 and m_tRequestId 1
05-17 16:35:22.855 22496  8602 I CamX    : [ INFO][CORE   ] camxnode.cpp:13427 ClearDependencies() Clearing dependencies for Node: VideoEIS3PreviewEIS2Offline_com.qti.node.dewarp13_cam0 with lastCompletedRequestId 246 and m_tRequestId 1
05-17 16:35:22.855 22496  8602 I CamX    : [ INFO][CORE   ] camxnode.cpp:13427 ClearDependencies() Clearing dependencies for Node: VideoEIS3PreviewEIS2Offline_com.qti.node.dewarp14_cam0 with lastCompletedRequestId 246 and m_tRequestId 1
05-17 16:35:22.855 22496  8602 I CamX    : [ INFO][CORE   ] camxnode.cpp:13427 ClearDependencies() Clearing dependencies for Node: VideoEIS3PreviewEIS2Offline_com.qti.node.swhme4_cam0 with lastCompletedRequestId 246 and m_tRequestId 1
05-17 16:35:22.855 22496  8602 I CamX    : [ INFO][CORE   ] camxnode.cpp:13427 ClearDependencies() Clearing dependencies for Node: VideoEIS3PreviewEIS2Offline_IPE2_cam0 with lastCompletedRequestId 246 and m_tRequestId 1
05-17 16:35:22.855 22496  8602 I CamX    : [CORE_CFG][CORE   ] camxpipeline.h:2371 SaveFlushInfo() Pipeline:VideoEIS3PreviewEIS2Offline Saving lastFlushRequestId: 246 flushType: 0

    2.4 :分析buffer error原因

request too much buffers表示请求buffer数超标了最大值21。

05-17 16:35:19.700 22933  8627 I APS_INTERFACE: [INFO][ ALGO_WATERMARK ] APSWaterMarkNode.cpp: 422  watermarkProcess()  watermark process framerId:245, result:0
05-17 16:35:19.734 22933  8627 I watermarkProcess()  watermark process framerId:246, result:0

05-17 16:35:21.295 22495 22533 E Camera3-OutputStream: getBufferLockedCommon: Stream 3: Can't dequeue next output buffer: Function not implemented (-38)
05-17 16:35:21.295 22495 22533 E AidlCamera3-OutputUtils: requestStreamBuffers: Can't get output buffer for stream 3: Function not implemented (-38)
05-17 16:35:21.308 22495 22531 E Camera3-OutputStream: getBufferLockedCommon: Stream 3: Can't dequeue next output buffer: Function not implemented (-38)
05-17 16:35:21.308 22495 22531 E AidlCamera3-OutputUtils: requestStreamBuffers: Can't get output buffer for stream 3: Function not implemented (-38)
05-17 16:35:21.320 22495 22532 E AidlCamera3-OutputUtils: requestStreamBuffers: request too much buffers for stream 3: at HAL: 3 + requesting: 19 > max: 21

    2.5 :解决思路

由于压力测试才出现,性能极差时request buffer最大值无法满足需要,我们将max: 21增加即可解决此问题。

    2.6 :分析request buffer最大值来源

分析思路参考:内存泄漏系列专题分析之十七: Camera HAL3 camera3_stream_t max_buffers和Camera3Stream maxNumBuffers最大buffer数控制FWK原理

    2.7 :解决方案

增加最大值的解决方案参考:

内存泄漏系列专题分析之十八: requestStreamBuffers: request too much buffers for stream 3: 请求内存buffer数超标解决方案

【关注我,后续持续新增专题博文,谢谢!!!】

下一篇讲解

相关文章:

  • 自动驾驶规划控制教程——不确定环境下的决策规划
  • 函数到底有多少细节?
  • Docker+MobaXterm+x11实现容器UI界面转发本地
  • rlemasklib 安装笔记
  • algolia使用配置教程-为SSG静态站增加algolia搜索功能
  • 投影机光源三代发展史:从高压汞灯、白光 LED 到三色光源
  • 【Python】日期计算和自动化运行脚本
  • 2025年我国低空经济产业链研究与梳理
  • IEEE Journal on Selected Areas in Communications 2025年论文整理2(中英文摘要)
  • 某验4无感探针-js逆向
  • 第九章 Java基础-集合
  • Redis数据迁移方案及持久化机制详解
  • Java怎么实现父子线程的值传递?InheritableThreadLocal类和transmittable-thread-local类?
  • MySQL :MySQL基本概念
  • 安全生产例题
  • day2 MySQL表数据操作
  • 大数据分析06 数据排序汇总
  • 常见JDK安装配置
  • 代码随想录算法训练营第60期第四十九天打卡
  • 卷积神经网络(CNN):原理、架构与实战
  • 如何做话费卡回收网站/我要登录百度
  • 关键词没有排名的网站怎么做/网站百度收录要多久
  • 织梦网站英文版怎么做/谷歌应用商店
  • 网站用asp还是php/手机百度官网首页
  • 涡阳网站建设/网页制作
  • 推广产品的软文怎么写/长沙关键词优化费用