searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

gdb命令卡主

2024-11-21 09:10:57
0
0

现象

线上排查问题时发现,有一组机器上docker里面的gdb程序有异常,执行gdb run或者gdb attch命令时,其中一台机器会卡主,其余机器会报一些错误。

 

 

查看卡主时候gdb进程的堆栈,发现gdb进程再等某个锁

 

执行 lsof -p <进程pid> 发现gdb进程锁住了/var/lib/rpm/.dbenv.lock,锁住了rpm db的锁

 

再到进程中执行rpm -qa这个命令也会卡主。推测是rpm db损坏或者锁损坏导致。

 

到gdb不卡主,但报错db打开失败的机器容器里,执行rpm -qa,会报db打开失败的信息,但不会卡主。

 

猜测原因

容器内rpm的db损坏,在容器内执行rpm -qa可能有2个后果
1.命令卡主
2.命令返回打开db异常,报错

 

gdb调试一个程序的时候,会打开rpm db做一些动作。可能要找debuginfo包之类的。
当rpm db损坏的时候,gdb run调试程序,同样会发生2种情况
1.gdb命令卡主
2.命令返回打开db异常,报错

 

解决

再上网根据资料重建rpm db。删除/var/lib/rpm/.dbenv.lock。

修复完成后,再次执行gdb 命令,不会卡主也不会报错,问题解决

 

 

 

 

 

0条评论
作者已关闭评论
z****n
4文章数
0粉丝数
z****n
4 文章 | 0 粉丝
原创

gdb命令卡主

2024-11-21 09:10:57
0
0

现象

线上排查问题时发现,有一组机器上docker里面的gdb程序有异常,执行gdb run或者gdb attch命令时,其中一台机器会卡主,其余机器会报一些错误。

 

 

查看卡主时候gdb进程的堆栈,发现gdb进程再等某个锁

 

执行 lsof -p <进程pid> 发现gdb进程锁住了/var/lib/rpm/.dbenv.lock,锁住了rpm db的锁

 

再到进程中执行rpm -qa这个命令也会卡主。推测是rpm db损坏或者锁损坏导致。

 

到gdb不卡主,但报错db打开失败的机器容器里,执行rpm -qa,会报db打开失败的信息,但不会卡主。

 

猜测原因

容器内rpm的db损坏,在容器内执行rpm -qa可能有2个后果
1.命令卡主
2.命令返回打开db异常,报错

 

gdb调试一个程序的时候,会打开rpm db做一些动作。可能要找debuginfo包之类的。
当rpm db损坏的时候,gdb run调试程序,同样会发生2种情况
1.gdb命令卡主
2.命令返回打开db异常,报错

 

解决

再上网根据资料重建rpm db。删除/var/lib/rpm/.dbenv.lock。

修复完成后,再次执行gdb 命令,不会卡主也不会报错,问题解决

 

 

 

 

 

文章来自个人专栏
zengjj的专栏
4 文章 | 1 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0