【Qcom Camera】DumpDebugInfo分析

2024-04-23 03:52

本文主要是介绍【Qcom Camera】DumpDebugInfo分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

DumpDebugInfo:

DumpDebugInfo主要包括Session::DumpDebugInfo、Pipeline::Dumpdebuginfo、Node::Dumpdebuginfo、DRQ::Dumpdebuginfo、Usecase::DumpDebugInfo

log:Hit SOF threshold of [xx] consecutive frames
      CamX: [ERROR][CORE ] camxpipeline.cpp:3248 CheckForRecovery() Hit SOF threshold of [17] consecutive frames with invalidrequestId; triggering watchdog recovery for pipeline RealTimeFeatureZSLPreviewRawYUV_0
      以上log表明kernel丢失连续的17帧,也意味着UMD 长时间没有向kernel发送sensor或 IFE request
ProcessCaptureRequest reset UMD
      CamX : [CONFIG][CORE ] camxsession.cpp:1689 ProcessCaptureRequest() Lets do a Reset:UMD
      当request queue已满时,Camx session需要等待至少一个live pending requests(待处理请求)完成。 如果等待超时,就会出现以上log
      意味着所有live pending requests的result都没有完成。 应该检查reslut是否卡在某个地方
Kernel requests recovery
       CamX : [ERROR][CSL ] camxcslhwinternal.cpp:1232 CSLHwInternalSendRequestManagerEvent() frame error: type 4, requestID 0, device hdl 0 04-10 00:12:39.463 11687 11689 E CamX : [ERROR][CORE ] camxpipeline.cpp:3435 CSLMessageHandler() request id 0, error type = 4, device handle = 0, resource index = 0
       首先check kernel问题
Flush timeout
      CamX: [ERROR][CORE ] camxsession.cpp:151 WaitTillFlushResultsAvailable() TimedWait for results timed out at 255 ms with error CamxResultETimeout! Pending results: 1249511 03-25 05:28:08:118452867 939 939 I CamX: [ DUMP][CORE ] camxsession.cpp:6108 DumpDebugInfo() + Stuck on Sequence Id: 201 Request Id: 87
      以上log表明flush 卡住,后面的session dump可能会有帮助
      

 CamX    : [ DUMP][CORE   ] camxnode.cpp:8417 DumpDebugInfo() + Request: 1 Unsuccessful. metaComplete: 1, reqComplete: 0, numUnsigFences: 1, numUnprocFences: 1, status: SUBMIT , currTime 03:45:42:764  statusTransitionTime: 03:45:37:659
request:该node中未处理完成的request id
metaComplete:该request的meta是否处理完成。0表示没有处理完成,1表示处理完成
reqComplete: 该request的buffer是否处理完成。0表示没有处理完成,1表示处理完成
numUnsigFences: 该request中unsigned fences的个数,这个值随着 fence在node中被触发而减少。该值为0时,表示所有output都是可用的。
numUnprocFences:该request中的还没有处理的fence的个数
status:该request的状态


camxsession.cpp  DumpDebugInfo
                    Stuck on Sequence Id: 0 Request Id: 1     //卡在了Request Id:
camxpipeline.cpp  DumpDebugInfo
                    isSofdispatched: 0                        //sensor没有出帧(如果DRQ处于DEFERRED状态,也就是request尚未满足dependency,所以request还没有发到HW,需要再往下分析sensor node还有哪些dependency尚未满足)
                                                                              (如果DRQ处于SUBMIT状态,说明request已经提交给硬件,这时候就需要看sensor driver(kernel)的log,看是不是有硬件操作失败的相关log了)

                    numNodes: 23                              //request 要经过23个node处理
                    numNodesRequestIdDone: 22                 //request 已经在22个node处理完,还有一个没处理完
camxnode.cpp   DumpDebugInfo
                    status: SUBMIT    //request已经提交给硬件,说明这个request的相关依赖已经得到满足,并且执行了该node 的ExecuteProcessRequest,等待结果的返回
                    status: DEFERRED  //说明当前node还缺少依赖的property或者buffer,相关request还没有发到HW
camxdeferredrequestqueue.cpp  DumpDebugInfo()
                    Property[0] = 0x30000024 PropertyIDSensorProperties offset 18446744073709551615 contextType 0 on Pipeline = 0 is not published  
                                      //在node上还没满足的是PropertyIDSensorProperties这个tag没有被publish出来。需要分析代码为什么这个property没有被published
                                      
---------------------------------------------

-----------------------------------
发现连续丢帧  --> check session dump确定 first sutck的request --> Check pipeline dump确定出问题的pipeline以及first sutck的request和它的pending node
--> Check node dump看sensor 和IFE 分别stuck在哪里(sensor request n ready则IFE request n-1也必须ready 否则report invalid)确定丢帧是否因为UMD stuck,找到 deferred的request
--> Check 相应request的DRQ dump看它未满足的prop,确定这些prop由哪个node publish --> 继续追踪相应request 会publish prop的DRQ dump -->...

1.3.3 ISP apply fail Issue
Issue description
   Take a video with 4K@60fps, move the phone to keep the preview moving , and sometimes the preview freezes.(4K video 预览卡住)
Log analysis:
    1. Still recovery triggered by kernel consecutive invalid frames
     CamX : [ERROR][CORE ] camxpipeline.cpp:2698 CheckForRecovery() Hit SOF threshold of [17] consecutive frames with invalidrequestId; triggering watchdog recovery for pipeline PreviewVideo_0
    
    2. Always check sensor and IFE’s node dump for ‘Hit SOF threshold’ first
     CamX : [ DUMP][CORE ] camxsession.cpp:4960 DumpDebugInfo() + Stuck on Sequence Id: 1240 Request Id: 1241
     CamX : [ DUMP][CORE ] camxpipeline.cpp:3429 DumpDebugInfo() + Pipeline Name: PreviewVideo_0, Pipeline ID: 0, 0x7604a31800, CurrentRequestId: 1246
    
    //Pipeline PreviewVideo_0 is stuck on request 1241
     CamX : [ DUMP][CORE ] camxnode.cpp:4410 DumpDebugInfo() + NODE:[PreviewVideo_Sensor0]:Type:0 0x75da2ff6c0
     CamX : [ DUMP][CORE ] camxnode.cpp:4425 DumpDebugInfo() + Request: 1246 Unsuccessful. metadataComplete: 0, requestComplete: 0, numUnsignaledFences: 0, status: Deferred
    
    //Sensor:Request 1246 status deferred
     CamX : [ DUMP][CORE ] camxnode.cpp:4410 DumpDebugInfo() + NODE:[PreviewVideo_IFE0]:Type:65536 0x75f50195c0
     CamX : [ DUMP][CORE ] camxnode.cpp:4425 DumpDebugInfo() + Request: 1241 Unsuccessful. metadataComplete: 1, requestComplete: 0, numUnsignaledFences: 4, status: Submit
    
    //IFE:Request 1241 status Submit, but it still has 4 fences un-signaled
    3. 需要check IFE request 1241的fence为什么没有从kernel signal
     CAM_INFO: CAM-ISP: __cam_isp_ctx_epoch_in_applied: 1145 ctx:1 Report Bubble flag 1 req id:1238
     CAM_WARN: CAM-CRM: cam_req_mgr_process_trigger: 2290 Error recovery idx 1 status 1
     CAM_WARN: CAM-CRM: __cam_req_mgr_process_req: 1282 Err recovery done idx 1
     CAM_ERR : CAM-CRM: __cam_req_mgr_send_req: 565 APPLY FAILED pd 1 req_id 1241
     CAM_ERR : CAM-ISP: __cam_isp_ctx_apply_req: 4120 Apply failed in active substate 3
    //request 1238 Report Bubble,recovery done //ISP apply request 1241失败在它之后,并且没有为request 1241生成buffer,所以UMD不能获取request 1241的 IFE fence callbacks
Solution:
   Bubble and ISP apply 失败通常是因为performance低或者system schedule问题

这篇关于【Qcom Camera】DumpDebugInfo分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/927717

相关文章

Apache 高级配置实战之从连接保持到日志分析的完整指南

《Apache高级配置实战之从连接保持到日志分析的完整指南》本文带你从连接保持优化开始,一路走到访问控制和日志管理,最后用AWStats来分析网站数据,对Apache配置日志分析相关知识感兴趣的朋友... 目录Apache 高级配置实战:从连接保持到日志分析的完整指南前言 一、Apache 连接保持 - 性

Linux中的more 和 less区别对比分析

《Linux中的more和less区别对比分析》在Linux/Unix系统中,more和less都是用于分页查看文本文件的命令,但less是more的增强版,功能更强大,:本文主要介绍Linu... 目录1. 基础功能对比2. 常用操作对比less 的操作3. 实际使用示例4. 为什么推荐 less?5.

spring-gateway filters添加自定义过滤器实现流程分析(可插拔)

《spring-gatewayfilters添加自定义过滤器实现流程分析(可插拔)》:本文主要介绍spring-gatewayfilters添加自定义过滤器实现流程分析(可插拔),本文通过实例图... 目录需求背景需求拆解设计流程及作用域逻辑处理代码逻辑需求背景公司要求,通过公司网络代理访问的请求需要做请

Java集成Onlyoffice的示例代码及场景分析

《Java集成Onlyoffice的示例代码及场景分析》:本文主要介绍Java集成Onlyoffice的示例代码及场景分析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 需求场景:实现文档的在线编辑,团队协作总结:两个接口 + 前端页面 + 配置项接口1:一个接口,将o

IDEA下"File is read-only"可能原因分析及"找不到或无法加载主类"的问题

《IDEA下Fileisread-only可能原因分析及找不到或无法加载主类的问题》:本文主要介绍IDEA下Fileisread-only可能原因分析及找不到或无法加载主类的问题,具有很好的参... 目录1.File is read-only”可能原因2.“找不到或无法加载主类”问题的解决总结1.File

Dubbo之SPI机制的实现原理和优势分析

《Dubbo之SPI机制的实现原理和优势分析》:本文主要介绍Dubbo之SPI机制的实现原理和优势,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Dubbo中SPI机制的实现原理和优势JDK 中的 SPI 机制解析Dubbo 中的 SPI 机制解析总结Dubbo中

C#继承之里氏替换原则分析

《C#继承之里氏替换原则分析》:本文主要介绍C#继承之里氏替换原则,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#里氏替换原则一.概念二.语法表现三.类型检查与转换总结C#里氏替换原则一.概念里氏替换原则是面向对象设计的基本原则之一:核心思想:所有引py

基于Go语言实现Base62编码的三种方式以及对比分析

《基于Go语言实现Base62编码的三种方式以及对比分析》Base62编码是一种在字符编码中使用62个字符的编码方式,在计算机科学中,,Go语言是一种静态类型、编译型语言,它由Google开发并开源,... 目录一、标准库现状与解决方案1. 标准库对比表2. 解决方案完整实现代码(含边界处理)二、关键实现细

PostgreSQL 序列(Sequence) 与 Oracle 序列对比差异分析

《PostgreSQL序列(Sequence)与Oracle序列对比差异分析》PostgreSQL和Oracle都提供了序列(Sequence)功能,但在实现细节和使用方式上存在一些重要差异,... 目录PostgreSQL 序列(Sequence) 与 oracle 序列对比一 基本语法对比1.1 创建序

慢sql提前分析预警和动态sql替换-Mybatis-SQL

《慢sql提前分析预警和动态sql替换-Mybatis-SQL》为防止慢SQL问题而开发的MyBatis组件,该组件能够在开发、测试阶段自动分析SQL语句,并在出现慢SQL问题时通过Ducc配置实现动... 目录背景解决思路开源方案调研设计方案详细设计使用方法1、引入依赖jar包2、配置组件XML3、核心配