SurfaceFlinger文件句柄泄露,触发Too many open files,在执行monkey测试时导致应用crash
- 确认进程最大文件数限制
- adb shell进入命令行
- ps -A | grep xxx确认进程pid
- cd /proc/proc_pid/
- cat limits查看max open files限制,一般应用都是1024,surfaceflinger是2048
- 查看出问题前进程fd详情
- cd /proc/proc_pid/fd
- ls -l查看对应的fd占用
- 执行复现问题对应操作,然后再ls看一下哪些fd增长异常
本次问题发现surfaceflinger的sync_fence fd明显增长异常,需要进一步确认sync_fence增长的原因,使用Qcom的leak_detector工具跟踪分析。
相关知识点:
- 线程是否泄漏: ps -AT | grep pid,查看pid对应进程所有线程信息