C++ 大约 5k 行的代码随机挂起 - 在 Linux 中。我的代码处理通过RAW套接字发送和接收数据包。 代码只是随机停止在一点上没有任何响应 - 甚至 [ctrl+c] 都证明很方便::每次挂起后我都会杀死进程。我尝试了GDB,结果是一样的,它挂起了 - ctrl + c产生了SIGTERM错误消息。在使用 valgrind 时,代码同样挂起。
如何调试此问题?是任何类型的系统错误吗?
使用 strace 命令 ,很明显挂起是由于futex_wait_private问题。套接字读取被推入死锁场景。在增加选择超时值时 - 问题可以解决。