小弟最近需要处理一个 bug,没有思路,想咨询下大家
问题可以抽象为:同一 Linux 主机的两个进程,使用 AF LOCAL 的 UDP socket 互相发送消息,但是发送快到一定程度几 s 后,两个进程就都会卡住,重启 A 后工作正常。
根据日志和定位,情况是进程 A 执行到 sendto 后卡住,B 如果准备向 A 发消息,就也会在 sendto 函数里出不来,然后串口就安静了。
看起来很像是两个进程的缓冲区都满了,同时等待对方接收,形成死锁。但是我记得 UDP 没有发缓冲区,如果接收方的收缓冲区满了,发送方应该也不会管,而是任接收方丢弃,为什么会陷在函数里出不来呢?
有没有一些查找问题根源的思路
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.