在linux中,大约有5k行的C++代码会随机挂起。我的代码处理通过原始套接字发送和接收数据包。代码只是随机地停在一个点上,没有任何响应-即使是ctrl+c也没有证明是方便的::每次挂起后,我都会用它来杀死进程。我尝试了GDB,结果是相同的,它挂起了- ctrl+c产生了一个SIGTERM错误信息。在使用valgrind时,代码类似地挂起。
如何调试这个问题?是否存在任何类型的系统错误?
发布于 2014-01-16 14:06:37
使用strace命令,很明显挂起是由于futex_wait_private问题造成的。套接字读取被推入死锁情况。在增加select超时值时-该问题可以解决。
https://stackoverflow.com/questions/20783607
复制相似问题