最近碰到一个看似很怪异的问题, 在两个APP上调用同样的本地指令得到的结果却大相径庭; 看源代码, 这个本地进程做的事情其实并不复杂:
- 从一个串口
/dev/ttyUSBX
读取数据 - 将数据写入到本地目录(读缓存大小为1KB)
本地进程的代码逻辑其实相当简单: 主线程起来后主动创建一个负责读/写的子线程, 然后通过pthread_join
主动等待子线程完成后退出.
问题是, 应用A调用的时保存的日志大小雷打不动的停留在不到4M就停止了, 而应用B可以一直写数据. 看应用A调用时, 通过debuggerd -b <tid>
查看本地进程的堆栈, 大概是这样的: