Android开发过程中,进程打开文件过多的问题(too many open files)

在项目开发过程中,碰到一个问题,设备采用的是RK3399的方案调用的身份证读卡器和摄像头,应用场景中会频繁使用刷身份证然后摄像头拍照进行人脸识别的过程。生产环境中偶发性出现摄像头调用失败或者摄像头预览数据为空,身份证读卡器调用失败,语音文件播放失败等等问题,因为设备使用基数较大,造成很大的售后负担,遂开始排查原因。

1、腾讯BUGly收集的错误日志分析

因为在测试环境下无法复测该问题,因此采用bugly收集的日志作为主要分析工具,在分析日志过程中,发现有一段日志频繁出现,且出现在固定的硬件版本上,重点关注

@ys 05-08 13:36:20.841 10907 11366 W CrashReport-Native: Failed to open file: /system/lib/libcamera_client.so, for: Too many open files 

这个错误。

2、查看进程打开文件

adb shell 连接 设备shell环境,su 切换到 root权限,然后 ps | grep 包名 查看 进程的pid ,lsof | grep 进程pid 查看打开文件,发现如下问题

发现大量的打开的设备文件,经过lsusb 查看,证明是身份证设备。从而基本推测是身份证读卡器在初始化或者打开之后,没有关闭或者释放导致的。找到问题原因下一步检查代码问题。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注