我有一台运行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问题。
任何想法或调试指导将不胜感激。
答案 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!