昨天apk遇到这样的crash
08-18 15:39:00.947 4796 5991 F Looper : Could not create wake pipe. errno=24
08-18 15:39:00.947 4796 5991 F libc : Fatal signal 6 (SIGABRT) at 0x000012bc (code=-6), thread 5991 (ACTWrite)
然后发现是pipe出现了泄露,导致fd增加,当pipe满了无法创建后报上面这个错误。
可是项目中用到pipe的地方就一个,而且确定是释放掉了的。
最终定位发现是几个Thread使用完后没有quit,而Thread通信也使用到了pipe,Thread的泄露导致pipe数量的增加。

本文记录了一次因Thread未正确退出导致pipe泄露的问题排查过程。该问题最终引发了应用崩溃,表现为无法创建新的pipe资源。通过对代码的深入分析,找到了问题根源并解决了此故障。
2660

被折叠的 条评论
为什么被折叠?



