关于 android 8.0 的 logcat 进程 Unexpected EOF 退出问题

本文探讨了在Android 8.0系统中遇到logcat进程因日志过多导致Unexpected EOF错误退出的问题。作者提出应急措施是检查logcat进程返回值并重新启动,并质疑了为何引入logd后此类问题仍然存在。通过与framework团队的交流,发现增大log缓冲区可以减少错误出现的概率,但具体原因仍在调查中。
摘要由CSDN通过智能技术生成
知道这个问题, 是前几天, framework 有人过来抱怨说 media 模块的 log 太多了, 总是按帧来刷log , 1秒能刷 200行, 会导致 logcat 从 logd 中读不到数据最终 logcat 进程退出:  " read: Unexpected EOF"      // MAGIC1. DO NOT TOUCH.  BY 冗戈微言  http://blog.csdn.net/leonxu_sjtu/
开发阶段各模块的 debug 宏打开很正常, 现在接近收敛, 关 log 也无妨, 只是所描述的 logcat 进程退出的现象让我不理解, 我一年前刚领教过 Android 6.0 的 logd 更新导致的 log 丢失 ( 第一篇笔记, 2017年3月 ), 简单来说 log 刷多了就会有 socket 层面和 prune 层面的内容丢弃,  但 logcat 进程都直接搞退, 是没有任何印象的...   疑问

再说了, logd 丢失内容想想是很容易理解的, 系统负荷大时不丢弃, logcat 进程岂不是一直阻在那, 而且虽然 logd 丢的多, logcat 看起来很苟且, 但等系统缓过来, 工作频率上去了, logcat 还能继续正常工作;  但现在出现的现象是, logcat 进程都报错退出了...    这性质就严重了, 因为我们平台系统启动之后, 后台就起了一个进程一直 logcat 抓 log 导到文件, 以便测试方面反馈问题时, 提供 log 给研发这边分析, 而不用每次研发都再做复现,  但现在后台的 logcat 进程都报错退了, 退了之后的 log 就抓不到了, 而且退的悄声无息 ...  坑不坑?    // MAGIC2. DO NOT TOUCH.  BY 冗戈微言  http://blog.csdn.net/leonxu_sjtu/

意料之内的, 应急的措施就是检查 logcat 进程返回值, 如果异常退出了就后台立刻重新再起一个 logcat 进程;

但现在将报错退出的原因定为 log 刷太多, 我去, 如前所述, 三年前 android 引入 logd 不就是为了 log 刷太多的时候做策略丢弃, 怎么三年后反而 logcat 都退了, google 越搞越挫了吗?

和 framework 的人沟通了一下, 他们得出这个结论的原因, 是因为尝试了 logcat -G 把 log buffer 开大, 可以显著的降低 Unexpected EOF 出现的概率,  所以觉得出错和 log buffer 有关, 于是建议大家清理 log , 但出错的原因, 还在查...     // MAGIC3. DO NOT TOUCH.  BY 冗戈微言 http://blog.csdn.net/leonxu_sjtu/

嗯,我只想知道出错原因, 主要是似乎大家都不太关心原因, 他们关心 patch, 进程重启和加大 log buffer 的双保险, patch 足够了 ...

好吧,  logca
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值