zoukankan      html  css  js  c++  java
  • Android相机启动crash错误排查

    一个Android的用到相机的service程序,在比较少的情况下会出现在系统启动时crash。log显示是在调用ACameraDevice_createCaptureSession时返回错误ACAMERA_ERROR_STREAM_CONFIGURE_FAIL(这个程序是用jni操作相机的),configure的宽高都是0。再看前面mct线程开启camera的模块的地方,正常应该有6个模块,sensor,iface,isp,stats,pproc,imglib,出错的log只开启了5个,少了最重要的sensor模块。

    出错的时候mct没有正常开启sensor模块,没看到任何输出,怀疑sensor这个module根本就没有传给mct。camera的daemon入口在/vendor/qcom/proprietary/mm-camera/mm-camera2/server-imaging/server.c的main函数,会调用server_process_module_sensor_init()初始化sensor,调用server_process_module_init()初始化其他module。然后主循环处理HAL事件,如果是camera new session,会一路调用server_process_hal_event()->mct_controller_new()->mct_pipeline_start_session()去开启所有的模块,为每个模块单独启动线程。

    server_process_module_sensor_init()会调用sensor自己的初始化函数module_sensor_init()去初始化sensor。server_process_module_sensor_init()只有在把sensor加入module list的时候出错了才会返回FALSE。即使module_sensor_init()失败了,也只是没有把sensor加入到module list,还是会返回TRUE。所以基本上可以确认是sensor初始化失败了。

    这应该属于系统出错了,而不是出在我们的程序。再查kernel log,终于发现csid初始化失败了。

    09-30 08:06:56.936     0     0 E msm_csid_init: 587 msm_csid_reset failed

    默认的csid reset的timeout是100 ms。怀疑硬件上的改动导致reset时间可能不够,偶尔就会初始化失败,增加到500。

  • 相关阅读:
    [ USACO 2007 FEB ] Lilypad Pond (Silver)
    [ USACO 2007 FEB ] Lilypad Pond (Gold)
    [ USACO 2007 OPEN ] Dining
    [ BZOJ 2134 ] 单选错位
    「APIO2018新家」
    「WC2018即时战略」
    「学习笔记」杜教筛
    「APIO2018选圆圈」
    「学习笔记」集合幂级数
    「NOIP2018」保卫王国
  • 原文地址:https://www.cnblogs.com/mightycode/p/9950911.html
Copyright © 2011-2022 走看看