什么会导致python挂起异常?

时间:2019-09-15 09:01:50

标签: python python-2.7 centos7

我有一台运行python 2.7.5的CentOS 7计算机。服务器用尽了磁盘空间和内存,我不得不重新启动它,现在,如果遇到未捕获的异常,则python将挂起。

示例:

echo "raise Exception()" > /tmp/test.py
python /tmp/test.py
# (hangs until killed with kill -9)

如果在try..except子句内,则异常没有问题。我在交互式外壳程序中也没有问题。

奇怪的是,如果我运行python -c,我什至看不到问题,例如:

# python -c "raise Exception()"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
Exception

我认为问题与创建回溯有关,但是该程序可以正常工作:

import traceback
traceback.print_stack()

我还安装了python 3.6,效果很好,但对我的情况没有帮助。我遇到了yum问题,可能是因为python问题。

任何想法或调试指导将不胜感激。

1 个答案:

答案 0 :(得分:0)

使用strace之后,很明显我的问题是损坏的rpm数据库,因为它在此行之后不久卡住了:

open("/var/lib/rpm/__db.003", O_RDWR|O_CREAT, 0644) = 6

我能够使用以下命令重建数据库:

rm -f /var/lib/rpm/__db*        
/usr/lib/rpm/rpmdb_verify /var/lib/rpm/Packages

现在一切正常。谢谢@ klaus-d!