(1)出现原因 / Log分析
测试在进行压力测试的过程中,快速的对Mtk Camera进行多次拍照,Camera App偶现无法连接到相机的问题。
从Main Log中可以看到最后一次拍照时间是03-14 14:27:56.130678:
main_log_2__2022_0314_142837:23726: 03-14 14:27:54.167785 4016 5385 I CamAp_PhotoDevice2Controller: [takePicture] mSession= com.mediatek.camera.common.device.v2.Camera2CaptureSessionProxy@6c60e09
main_log_2__2022_0314_142837:27298: 03-14 14:27:54.424088 4016 5385 I CamAp_PhotoDevice2Controller: [takePicture] mSession= com.mediatek.camera.common.device.v2.Camera2CaptureSessionProxy@6c60e09
main_log_2__2022_0314_142837:31916: 03-14 14:27:54.716107 4016 5385 I CamAp_PhotoDevice2Controller: [takePicture] mSession= com.mediatek.camera.common.device.v2.Camera2CaptureSessionProxy@6c60e09
main_log_2__2022_0314_142837:35143: 03-14 14:27:54.939082 4016 5385 I CamAp_PhotoDevice2Controller: [takePicture] mSession= com.mediatek.camera.common.device.v2.Camera2CaptureSessionProxy@6c60e09
main_log_2__2022_0314_142837:38871: 03-14 14:27:55.149465 4016 5385 I CamAp_PhotoDevice2Controller: [takePicture] mSession= com.mediatek.camera.common.device.v2.Camera2CaptureSessionProxy@6c60e09
main_log_2__2022_0314_142837:42546: 03-14 14:27:55.356804 4016 5385 I CamAp_PhotoDevice2Controller: [takePicture] mSession= com.mediatek.camera.common.device.v2.Camera2CaptureSessionProxy@6c60e09
main_log_2__2022_0314_142837:46250: 03-14 14:27:55.554694 4016 5385 I CamAp_PhotoDevice2Controller: [takePicture] mSession= com.mediatek.camera.common.device.v2.Camera2CaptureSessionProxy@6c60e09
main_log_2__2022_0314_142837:49748: 03-14 14:27:55.736368 4016 5385 I CamAp_PhotoDevice2Controller: [takePicture] mSession= com.mediatek.camera.common.device.v2.Camera2CaptureSessionProxy@6c60e09
main_log_2__2022_0314_142837:55293: 03-14 14:27:56.130678 4016 5385 I CamAp_PhotoDevice2Controller: [takePicture] mSession= com.mediatek.camera.common.device.v2.Camera2CaptureSessionProxy@6c60e09
而发生NE的时间点为03-14 14:27:56.582261:
03-14 14:27:56.582261 500 500 D AEE_AED : $===AEE===AEE===AEE===$
03-14 14:27:56.582392 500 500 D AEE_AED : p 2 poll events 1 revents 1
03-14 14:27:56.583053 500 500 D AEE_AED : PPM cpu cores:8, online:8
03-14 14:27:56.583542 500 500 D AEE_AED : aed_main_fork_worker: generator 0xb400007d062096a0, worker 0x7fe61fb1d0, recv_fd 12
03-14 14:27:56.584626 8905 8905 I AEE_AED : handle_request(12)
03-14 14:27:56.585047 8905 8905 D AEE_AED : check_socket, check socket successful!
03-14 14:27:56.585940 8905 8905 I AEE_AED : pid: 948, tid: 948, >>> /vendor/bin/hw/camerahalserver <<<
03-14 14:27:56.585988 8905 8905 I AEE_AED : read_request: receive requirement from aee_core_forwar
03-14 14:27:56.586180 8905 8905 D AEE_AED : u:r:mtk_hal_camera:s0
03-14 14:27:56.586228 8905 8905 V AEE_AED : dashboard_record_update() : rec->module = /vendor/bin/hw/camerahalserver
03-14 14:27:56.586248 8905 8905 V AEE_AED : Update record[1]
03-14 14:27:56.586264 8905 8905 D AEE_AED : i, Cls, count, last_time, module
03-14 14:27:56.586278 8905 8905 D AEE_AED : ====================================================================
03-14 14:27:56.586295 8905 8905 D AEE_AED : 0, 3, 1, 1647239060, /vendor/bin/hw/mtkfusionrild
03-14 14:27:56.586309 8905 8905 D AEE_AED : 1, 3, 1, 1647239276, /vendor/bin/hw/camerahalserver
03-14 14:27:56.586323 8905 8905 D AEE_AED : 2, -1, 0, 0,
03-14 14:27:56.586337 8905 8905 D AEE_AED : 3, -1, 0, 0,
03-14 14:27:56.586351 8905 8905 D AEE_AED : 4, -1, 0, 0,
03-14 14:27:56.586365 8905 8905 D AEE_AED : 5, -1, 0, 0,
03-14 14:27:56.586380 8905 8905 D AEE_AED : 6, -1, 0, 0,
03-14 14:27:56.586409 8905 8905 D AEE_AED : 7, -1, 0, 0,
03-14 14:27:56.586501 8905 8905 W AEE_AED : DAL feature is off, just return
03-14 14:27:56.586604 8905 8905 E AEE_AED : aed_ne_core_session: Failed to notify aed driver dump status for /vendor/bin/hw/camerahalserver, error: Invalid argument
03-14 14:27:56.586644 8905 8905 I AEE_AED : Dumping EXP/Native (NE)
03-14 14:27:56.586697 8905 8905 I AEE_AED : aed_wait_decrypt done! file base encryption
03-14 14:27:56.586762 8905 8905 I AEE_AED : db base:/data/aee_exp
通过解析db文件和addr2line工具可以查看出错的文件和行数,如果不清楚可以查看如下文章利用addr2line命令定位backtrace的Error行数,但是这种方式对于本题并没有什么用处。
我们接着从Kernel Log来看:
//223.010310
<6>[ 223.010310] -(0)[790:Dispatcher_0][thread:790] 2022-03-14 06:27:50.542626 UTC;android time 2022-03-14 14:27:50.542626
//228.642311
<6>[ 228.642311] (6)[5537:IspDeqThd_TG1][ISP][ISP_WaitIrq] interrupted by system signal,return value(-512),irq Type/User/Sts(0x0/0/0x4000)
<5>[ 228.642322] (6)[5537:IspDeqThd_TG1][ISP][ISP_ioctl] Fail, Cmd(1077439235), Pid(5523), (process, pid, tgid)=(IspDeqThd_TG1, 5537, 948)
//228.642346
<6>[ 228.642346] (6)[5536:IspEnqThd_TG1][ISP][ISP_WaitIrq] interrupted by system signal,return value(-512),irq Type/User/Sts(0x0/4/0x40)
<5>[ 228.642350] (6)[5536:IspEnqThd_TG1][ISP][ISP_ioctl] Fail, Cmd(1077439235), Pid(5523), (process, pid, tgid)=(IspEnqThd_TG1, 5536, 948)
//228.642466
<6>[ 228.642466] (3)[5568:AAOBufThread_2][ISP][ISP_WaitIrq] interrupted by system signal,return value(-512),irq Type/User/Sts(0x0/0/0x40)
<5>[ 228.642476] (3)[5568:AAOBufThread_2][ISP][ISP_ioctl] Fail, Cmd(1077439235), Pid(5523), (process, pid, tgid)=(AAOBufThread_2, 5568, 948)
从Log可以看到,223s的时间对应的是14:27:50.542626,而发生NE的时间是14:27:56.582261,也就是6s后出现的NE,而再此时间的5s多后,可以从Kernel Log看到发生了ISP_WaitIrq。
本文主要是为了串通logcat Log和kernel Log发生问题的时间线。