美文网首页
【Camera专题】qcom-相机停止运行总结

【Camera专题】qcom-相机停止运行总结

作者: c枫_撸码的日子 | 来源:发表于2019-05-29 15:56 被阅读0次

1、 [通过霍尔传感器]频繁打开关闭相机,出现一次相机停止运行

crash log

05-28 11:27:36.363 22431 22431 E AndroidRuntime: java.lang.RuntimeException: Fail to connect to camera service
05-28 11:27:36.363 22431 22431 E AndroidRuntime:    at android.hardware.Camera.<init>(Camera.java:587)
05-28 11:27:36.363 22431 22431 E AndroidRuntime:    at android.hardware.Camera.open(Camera.java:412)
05-28 11:27:36.363 22431 22431 E AndroidRuntime:    at com.xtc.camera.app.widget.cameraview.core.Camera1.onStart(Camera1.java:255)
05-28 11:27:36.363 22431 22431 E AndroidRuntime:    at com.xtc.camera.app.widget.cameraview.core.CameraController$2.run(CameraController.java:201)
05-28 11:27:36.363 22431 22431 E AndroidRuntime:    at android.os.Handler.handleCallback(Handler.java:751)
05-28 11:27:36.363 22431 22431 E AndroidRuntime:    at android.os.Handler.dispatchMessage(Handler.java:95)
05-28 11:27:36.363 22431 22431 E AndroidRuntime:    at android.os.Looper.loop(Looper.java:154)
05-28 11:27:36.363 22431 22431 E AndroidRuntime:    at android.os.HandlerThread.run(HandlerThread.java:61)

main log
报错原因:130 VIDIOC_MSM_CSID_IO_CFG failed Connection timed out
msm_post_event: Timed out

05-28 11:27:25.779  2944  2944 I input_method: 发送asr.stop事件
05-28 11:27:25.780   411 22688 D mm-camera: c2d_module_start_session:350, info: starting session 2
05-28 11:27:25.780   411 22689 D mm-camera: mct_pipeline_start_session_thread thread_id is 22689
05-28 11:27:25.780   411 22689 E mm-camera-img: module_imglib_start_session:1452 ###Img_Loglevel 0
05-28 11:27:25.785   411 22687 E mm-camera-CORE: af_init: updated HAF func table
05-28 11:27:25.786   411 22687 D mm-camera: gyro_port_init , Enter 
05-28 11:27:25.786   411 22687 D mm-camera: gyro_port_init , EXIT 
05-28 11:27:25.794   411 22691 D mm-camera: c2d_thread_func:45: c2d_thread entering the polling loop... thread_id is 22691
05-28 11:27:25.797   411 22688 D mm-camera: c2d_module_start_session:428, info: session 2 started.

05-28 11:27:25.935   411 22679 E mm-camera-sensor: csid_open:130 VIDIOC_MSM_CSID_IO_CFG failed Connection timed out
05-28 11:27:25.935   411 22679 E mm-camera-sensor: module_sensor_init_session:499 failed rc -1
05-28 11:27:25.935   411 22679 E mm-camera-sensor: eeprom_close:1114 Enter
05-28 11:27:25.935   411 22679 E mm-camera-sensor: eeprom_close:1129 Exit
05-28 11:27:25.935   411 22679 E mm-camera-sensor: sensor_close:3631 VIDIOC_MSM_SENSOR_CFG failed
05-28 11:27:25.936   411 22679 E mm-camera-sensor: module_sensor_init_session:704 failed
05-28 11:27:25.936   411 22679 E mm-camera-sensor: module_sensor_start_session:814 failed
05-28 11:27:25.936   411 22679 E mm-camera-sensor: module_sensor_start_session:828 failed

kernel log

05-28 11:27:25.873368 <3>[46285.965956] wait_for_completion in msm_csid_reset fail rc = 0
05-28 11:27:25.873374 <3>[46285.965962] msm_csid_init:584 msm_csid_reset failed
·
·
·
05-28 11:27:35.703455 <3>[46295.796043] msm_post_event: Timed out
05-28 11:27:35.706273 <3>[46295.798861] Evt_type=8002000 Evt_id=1 Evt_cmd=0
05-28 11:27:35.710640 <3>[46295.803228] Evt_session_id=2 Evt_stream_id=0 Evt_arg=-1
05-28 11:27:35.716013 <3>[46295.808601] camera_v4l2_open : posting of NEW_SESSION event failed
05-28 11:27:35.722169 <3>[46295.814757] camera_v4l2_open : Line 605 rc -110

报错根源:

static int msm_csid_reset(struct csid_device *csid_dev)
{
    int32_t rc = 0; 
    //写寄存器
    msm_camera_io_w(csid_dev->ctrl_reg->csid_reg.csid_rst_stb_all,
        csid_dev->base +
        csid_dev->ctrl_reg->csid_reg.csid_rst_cmd_addr);
    //等待信号量
    rc = wait_for_completion_timeout(&csid_dev->reset_complete,
        CSID_TIMEOUT);
    if (rc <= 0) { 
        pr_err("wait_for_completion in msm_csid_reset fail rc = %d\n",
            rc); 
        if (rc == 0)
            rc = -ETIMEDOUT;
    }    
    return rc;
}
这里
#define CSID_TIMEOUT msecs_to_jiffies(100)

问题在于连接超时超时错误。
解决方案:
#define CSID_TIMEOUT msecs_to_jiffies(100)
改成
#define CSID_TIMEOUT msecs_to_jiffies(500)

2.【拍照崩溃】java.lang.RuntimeException: takePicture failed

遇到一个概率性拍照崩溃的bug,目前遇到一次。
java.lang.RuntimeException: takePicture failed
报错根源:
E QCameraHWI_Mem: get_min_undequeued_buffer_count failed: Invalid argument (22)

修改方案

The error is due to fail of calling mHalCamCtrl->mPreviewWindow->get_min_undequeued_buffer_count() 
which implemented in Android framework and realized by display side
, which may related to your application behavior.

But you could try the following workaround to avoid it:

diff --git a/QCamera2/HAL/QCameraMem.cpp b/QCamera2/HAL/QCameraMem.cpp
index 55ebf43..4803592 100644
--- a/QCamera2/HAL/QCameraMem.cpp
+++ b/QCamera2/HAL/QCameraMem.cpp
@@ -1648,6 +1648,8 @@ int QCameraGrallocMemory::allocate(uint8_t count, size_t /*size*/)
}

// Increment buffer count by min undequeued buffer.
+ mMinUndequeuedBuffers = 2;
+ /*
err = mWindow->get_min_undequeued_buffer_count(mWindow,&mMinUndequeuedBuffers);
if (err != 0) {
ALOGE("get_min_undequeued_buffer_count failed: %s (%d)",
@@ -1655,6 +1657,7 @@ int QCameraGrallocMemory::allocate(uint8_t count, size_t /*size*/)
ret = UNKNOWN_ERROR;
goto end;
}
+ */

err = mWindow->set_buffer_count(mWindow, count);
if (err != 0) {

3.WARNING Backtrace

02-19 17:49:59.358     0     0 W         : c3   533 [android.hardwar] WARNING: CPU: 3 PID: 533 at /data1/home/zengchuanfeng/qcom/i20/HLOS/kernel/msm-4.9/drivers/clk/msm/clock.c:420 clk_disable+0xdc/0xe0
02-19 17:49:59.358     0     0 W         : c3   533 [android.hardwar] gcc_camss_mclk0_clk: Never called prepare or calling disable after unprepare
02-19 17:49:59.358     0     0 W         : c0   533 [android.hardwar] Modules linked in: machine_ext_dlkm(O) machine_dlkm(O) wcd9335_dlkm(O) cpe_lsm_dlkm(O) wcd_cpe_dlkm(O) analog_cdc_dlkm(O) digital_cdc_dlkm(O) stub_dlkm(O) mbhc_dlkm(O) wsa881x_analog_dlkm(O) wsa881x_dlkm(O) wcd9xxx_dlkm(O) wcd_core_dlkm(O) swr_ctrl_dlkm(O) swr_dlkm(O) pinctrl_wcd_dlkm(O) native_dlkm(O) platform_dlkm(O) usf_dlkm(O) q6_dlkm(O) adsp_loader_dlkm(O) apr_dlkm(O) q6_notifier_dlkm(O)
02-19 17:49:59.358     0     0 W         : c3   533 [android.hardwar] CPU: 3 PID: 533 Comm: android.hardwar Tainted: G           O    4.9.193 #3
02-19 17:49:59.358     0     0 W         : c3   533 [android.hardwar] Hardware name: Qualcomm Technologies, Inc. SDM429 (Flattened Device Tree)
02-19 17:49:59.358     0     0 W         : c0   533 [android.hardwar] Backtrace:
02-19 17:49:59.358     0     0 W         : c3   533 [android.hardwar] [<c010c668>] (dump_backtrace) from [<c010c960>] (show_stack+0x18/0x1c)
02-19 17:49:59.358     0     0 W         : c3   533 [android.hardwar]  r6:600f0193 r5:c132d7b8 r4:00000000 r3:000409c1
02-19 17:49:59.358     0     0 W         : c3   533 [android.hardwar] [<c010c948>] (show_stack) from [<c0446704>] (dump_stack+0x94/0xa8)
02-19 17:49:59.358     0     0 W         : c3   533 [android.hardwar] [<c0446670>] (dump_stack) from [<c012aa7c>] (__warn+0xec/0x104)
02-19 17:49:59.358     0     0 W         : c3   533 [android.hardwar]  r6:c107efdc r5:00000000 r4:d9207c4c r3:000409c1
02-19 17:49:59.358     0     0 W         : c3   533 [android.hardwar] [<c012a990>] (__warn) from [<c012aae4>] (warn_slowpath_fmt+0x50/0x6c)
02-19 17:49:59.358     0     0 W         : c3   533 [android.hardwar]  r9:c4a28000 r8:00000000 r7:c10814a8 r6:800f0113 r5:c107f02c r4:c130e588
02-19 17:49:59.358     0     0 W         : c3   533 [android.hardwar] [<c012aa98>] (warn_slowpath_fmt) from [<c053934c>] (clk_disable+0xdc/0xe0)
02-19 17:49:59.358     0     0 W         : c3   533 [android.hardwar]  r3:c10814a8 r2:c107f02c
02-19 17:49:59.358     0     0 W         : c3   533 [android.hardwar]  r5:c134c7f0 r4:c134c7a4
02-19 17:49:59.358     0     0 W         : c3   533 [android.hardwar] [<c0539270>] (clk_disable) from [<c08abba4>] (msm_camera_clk_enable+0xa0/0x270)
02-19 17:49:59.358     0     0 W         : c3   533 [android.hardwar]  r7:c134c7a4 r6:dae33328 r5:00000000 r4:dae33a98
02-19 17:49:59.358     0     0 W         : c3   533 [android.hardwar] [<c08abb04>] (msm_camera_clk_enable) from [<c08bbcd0>] (msm_camera_power_down+0x23c/0x37c)
02-19 17:49:59.358     0     0 W         : c3   533 [android.hardwar]  r10:d9dc3800 r9:c4a28000 r8:00000000 r7:d9dc3bc0 r6:00000005 r5:00000118
02-19 17:49:59.358     0     0 W         : c3   533 [android.hardwar]  r4:dae32108
02-19 17:49:59.358     0     0 W         : c3   533 [android.hardwar] [<c08bba94>] (msm_camera_power_down) from [<c08c6254>] (msm_eeprom_subdev_ioctl+0x454/0xb6c)
02-19 17:49:59.358     0     0 W         : c3   533 [android.hardwar]  r8:c4a28788 r7:d91a7b53 r6:00000b54 r5:dad02c00 r4:00000000
02-19 17:49:59.358     0     0 W         : c3   533 [android.hardwar] [<c08c5e00>] (msm_eeprom_subdev_ioctl) from [<c0856154>] (subdev_do_ioctl+0xdc/0xd50)
02-19 17:49:59.358     0     0 W         : c3   533 [android.hardwar]  r10:00000000 r9:d9e70b00 r8:d4199000 r7:d9207df4 r6:dad02cd0 r5:c130e588
02-19 17:49:59.358     0     0 W         : c3   533 [android.hardwar]  r4:c02856c8
02-19 17:49:59.358     0     0 W         : c3   533 [android.hardwar] [<c0856078>] (subdev_do_ioctl) from [<c084ae14>] (video_usercopy+0x1e0/0x564)
02-19 17:49:59.358     0     0 W         : c3   533 [android.hardwar]  r10:00000000 r9:d9207df4 r8:00000000 r7:c130e588 r6:00000028 r5:00000000
02-19 17:49:59.358     0     0 W         : c3   533 [android.hardwar]  r4:c02856c8
02-19 17:49:59.358     0     0 W         : c3   533 [android.hardwar] [<c084ac34>] (video_usercopy) from [<c0856074>] (subdev_ioctl+0x18/0x1c)
02-19 17:49:59.358     0     0 W         : c3   533 [android.hardwar]  r10:00000036 r9:00000009 r8:00000000 r7:c02856c8 r6:beeabe68 r5:d4199000
02-19 17:49:59.358     0     0 W         : c3   533 [android.hardwar]  r4:db9b3400
02-19 17:49:59.358     0     0 W         : c3   533 [android.hardwar] [<c085605c>] (subdev_ioctl) from [<c08450bc>] (v4l2_ioctl+0xb0/0xe0)
02-19 17:49:59.358     0     0 W         : c3   533 [android.hardwar] [<c084500c>] (v4l2_ioctl) from [<c0278e3c>] (do_vfs_ioctl+0xb8/0x9bc)
02-19 17:49:59.358     0     0 W         : c3   533 [android.hardwar]  r8:c02856c8 r7:d4199000 r6:dad8b008 r5:0000fdfd r4:c130e588 r3:c084500c
02-19 17:49:59.358     0     0 W         : c3   533 [android.hardwar] [<c0278d84>] (do_vfs_ioctl) from [<c02797b4>] (SyS_ioctl+0x74/0x84)
02-19 17:49:59.358     0     0 W         : c3   533 [android.hardwar]  r10:00000036 r9:00000009 r8:c02856c8 r7:beeabe68 r6:d4199000 r5:d4199001
02-19 17:49:59.358     0     0 W         : c3   533 [android.hardwar]  r4:00000000
02-19 17:49:59.358     0     0 W         : c3   533 [android.hardwar] [<c0279740>] (SyS_ioctl) from [<c01082e0>] (ret_fast_syscall+0x0/0x54)
02-19 17:49:59.358     0     0 W         : c3   533 [android.hardwar]  r9:d9206000 r8:c01084e4 r7:00000036 r6:beeabe64 r5:beeabe90 r4:ad5953ac
02-19 17:49:59.358     0     0 W         : c3   533 [android.hardwar] ---[ end trace 5fb16c7e2b98f666 ]---
02-19 17:49:59.358     0     0 W         : c3   533 [android.hardwar] ------------[ cut here ]------------

解决方案:
下电时 size配多了,修改为正确的size即可.

4.拍照回调失败:: mct_stream_get_metadata_buffer: Failed to get_buf

Line 91828: 04-22 15:48:17.035 533 4122 I QCamera : <HAL><INFO> cancel_auto_focus: 869: [KPI Perf] : E PROFILE_CANCEL_AUTO_FOCUS camera id 0
Line 91829: 04-22 15:48:17.037 533 4122 I QCamera : <HAL><INFO> cancel_auto_focus: 879: [KPI Perf] : X ret = 0
Line 91830: 04-22 15:48:17.058 533 9576 I QCamera : <HAL><INFO> createJpegSession: 491: [KPI Perf] : call jpeg create_session
Line 91850: 04-22 15:48:17.202 533 9626 E mm-camera: <STATS_AF ><ERROR> 4414: af_port_handle_pdaf_stats: Fail to init buf divert ack ctrl
Line 91855: 04-22 15:48:17.252 533 9626 E mm-camera: <STATS_AF ><ERROR> 4414: af_port_handle_pdaf_stats: Fail to init buf divert ack ctrl
Line 91868: 04-22 15:48:17.415 1785 1785 D CameraProxy: play shutter click count = 1
Line 92618: 04-22 15:48:55.806 533 9615 E mm-camera: <MCT ><ERROR> 2514: mct_stream_get_metadata_buffer: Failed to get_buf - errno: Invalid argument!!!
Line 92619: 04-22 15:48:55.806 533 9615 E mm-camera: <MCT ><ERROR> 996: mct_controller_proc_bus_msg_internal: Failed to issue SOF cmd to all modules.
Line 94439: 04-22 15:49:59.555 533 9677 E mm-camera: <ISP ><ERROR> 597: isp_bundled_stats_buf_mgr_get_buf: failed: cannot find free bundled stats buffer
Line 94440: 04-22 15:49:59.555 533 9677 E mm-camera: <ISP ><ERROR> 871: isp_parser_thread_save_stats_nofity_event: failed

一般是内存不足导致的。
解决方案,改用ZSL

Stay hungry,Stay foolish!

相关文章

网友评论

      本文标题:【Camera专题】qcom-相机停止运行总结

      本文链接:https://www.haomeiwen.com/subject/aeuytctx.html