已解决:重新启动机器似乎已解决问题。如果问题再次出现,我会更新。
我遇到了Python2.6
在引发异常后挂起的问题,特别foo.py
是在使用绝对路径 ( /home/user/bar/foo.py
) 调用时。然后我被要求ctrl+c
退出该计划。如果从bar
目录 as./foo.py
或从根目录 as调用./home/user/bar/foo.py
,程序正确终止。
foo.py:
#!/usr/bin/env python2.6
print 'begin'
x = [0, 1, undefined]
print 'x'
或者
#!/usr/bin/env python2.6
print 'begin'
raise Exception('stopping here')
我还可以提到 asys.exit()
工作正常,没有问题。
#!/usr/bin/env python2.6
import sys
print 'begin'
sys.exit(0)
无法终止程序的异常发生了什么?这可能特定于我的配置。我应该从哪里开始寻找解决方案?
编辑: execfile('/home/user/bar/foo.py')
如果运行交互模式,工作正常。此外,运行nohup /home/user/bar/foo.py &
会导致必须终止的挂起进程。
运行 CentOS 6.3 版(最终版)。这个问题并不总是存在。这只是大约一个月前的一个周末才开始的(当时我没有使用这台机器)。
更新:使用 GDB 进行调试,回溯指向libpthread.so.0
.
#0 0x000000364340e890 in __connect_nocancel () from /lib64/libpthread.so.0
#1 0x00007ffff18960d8 in ?? () from /usr/lib64/python2.6/lib-dynload/_socketmodule.so
#2 0x00007ffff189815c in ?? () from /usr/lib64/python2.6/lib-dynload/_socketmodule.so
#3 0x00007ffff7d0a706 in PyEval_EvalFrameEx () from /usr/lib64/libpython2.6.so.1.0
#4 0x00007ffff7d0c797 in PyEval_EvalCodeEx () from /usr/lib64/libpython2.6.so.1.0
#5 0x00007ffff7d0abe4 in PyEval_EvalFrameEx () from /usr/lib64/libpython2.6.so.1.0
#6 0x00007ffff7d0bccf in PyEval_EvalFrameEx () from /usr/lib64/libpython2.6.so.1.0
#7 0x00007ffff7d0bccf in PyEval_EvalFrameEx () from /usr/lib64/libpython2.6.so.1.0
#8 0x00007ffff7d0c797 in PyEval_EvalCodeEx () from /usr/lib64/libpython2.6.so.1.0
#9 0x00007ffff7c9adb0 in ?? () from /usr/lib64/libpython2.6.so.1.0
#10 0x00007ffff7c70303 in PyObject_Call () from /usr/lib64/libpython2.6.so.1.0
#11 0x00007ffff7d04dd3 in PyEval_CallObjectWithKeywords () from /usr/lib64/libpython2.6.so.1.0
#12 0x00007ffff7d28cd2 in PyErr_PrintEx () from /usr/lib64/libpython2.6.so.1.0
#13 0x00007ffff7d29297 in PyRun_SimpleFileExFlags () from /usr/lib64/libpython2.6.so.1.0
#14 0x00007ffff7d35c32 in Py_Main () from /usr/lib64/libpython2.6.so.1.0
#15 0x000000364281ecdd in __libc_start_main () from /lib64/libc.so.6
#16 0x0000000000400649 in _start ()
有人知道这是什么意思吗?