protobuf 异常死锁分析
最近在开发中,有个模块在测试时偶尔会出现卡死现象,进程状态处于futex状态。网络搜索发现这种状态下,进程大概率发生了死锁。最近的代码修改不涉及到锁的使用,可能是其它方面引入的问题。
在日常开发中,死锁并不陌生。只要能有堆栈就很容易解决。使用stace 命令发现进程处于FUTEX_WAIT_PRIVATE 状态,明确发生了死锁。
stace -p + 进程ID
接下来要需要gdb分析进程的堆栈,明确出现死锁的原因。可以使用gdb attach + 命令。
中间有个插曲,一开始用gdb分析时,提[……]