Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux Python中的死锁&x27;s子流程popen_Linux_Popen_Python 2.7_Subprocess - Fatal编程技术网

Linux Python中的死锁&x27;s子流程popen

Linux Python中的死锁&x27;s子流程popen,linux,popen,python-2.7,subprocess,Linux,Popen,Python 2.7,Subprocess,我有一个问题,波本是死锁。具体而言,运行popen的线程(不是主线程)卡在以下位置: File: "/usr/lib/python2.7/subprocess.py", line 679, in __init__ errread, errwrite) File: "/usr/lib/python2.7/subprocess.py", line 1224, in _execute_child data = _eintr_retry_call(os.read, errpipe_read, 1

我有一个问题,波本是死锁。具体而言,运行popen的线程(不是主线程)卡在以下位置:

File: "/usr/lib/python2.7/subprocess.py", line 679, in __init__
  errread, errwrite)
File: "/usr/lib/python2.7/subprocess.py", line 1224, in _execute_child
  data = _eintr_retry_call(os.read, errpipe_read, 1048576)
File: "/usr/lib/python2.7/subprocess.py", line 478, in _eintr_retry_call
  return func(*args)
有了ps,我可以看到python进程已经分叉了,但它还没有运行os.execvp。这可以通过检查ps看到,在这里我看到主进程的子进程具有相同的名称。终止该进程会导致父进程中被卡住的线程恢复

据我所知,子进程(将execvp)在创建和运行os.execvp之间的50行中锁定。使事情复杂化是罕见的;也许百分之一的人。这种锁定是如何发生的?我怎么修理它?(我无法在简单的python程序中重现这种行为)

我应该注意到,虽然这个程序是难以置信的多线程(数百个线程在运行),但没有其他线程分叉或使用popen。不过,许多其他线程正在使用文件描述符(主要是套接字)

技术说明:

  • 在AmazonEC2上运行
  • Ubuntu11.10中的Linux 3.0.0-14虚拟x86_64
  • python 2.7.2解释器
  • 使用几个库,包括paramiko和boto

看起来像是最近归档的python 2.7.2错误: