[Zope-Coders] Sovled: [Zope] popen hangs on W2K

Thomas Guettler zopestoller@thomas-guettler.de
Mon, 11 Mar 2002 08:56:17 +0100


Thomas Guettler wrote:

 > Hi!
 >
 > popen3() of the python (2.1.2) which comes with zope hangs on W2K:
 >
 > (stdin, stdout, stderr)=popen3('wvWare -x wvware.xml foo.doc')
 > text=stdout.read()
 >
 > --> read never ends.
 >
I found the problem. It is a race condition which might result in a
deadlock. It only happens
sometimes, so it is something programmers hate.

(stdin, stdout, stderr)=popen3('foo_command')
text=stdout.read()

Imagine foo_command writes a lot to stderr. After some bytes the buffer
is full. foo_commands blocks while
writing to stderr. The application blocks while reading from stdout.
---> Dead lock.

One solution would be to write stderr to a file and only read from stdout.

An other explanation:

http://mail.python.org/pipermail/python-dev/2000-September/009460.html

This neither zope, python or operating system specific.

thomas

PS:
I love to start this week because I found the solution yesterday by change.
  Have a nice day.