I can replicate this issue with a standalone python script. http://pastebin.com/vTREYc9n
It hangs at: read stdout: 'I: Base system installed successfully.\n'
Furthermore, if I add a timeout to select and force it to read anyway, I get an IOError:
read stdout: [Errno 11] Resource temporarily unavailable
It's easy to eliminate the zombie child. You can reap the child explicitly by adding this to the main loop:
sys.stderr.write("poll=%s\n" % repr(proc.poll()))
However even after the child has terminated, select() still says there's no data to read, and read() gives EAGAIN.
Note: changing the code to use proc.communicate() also hangs and leaves a zombie child. And that uses threads rather than non-blocking sockets.
This looks very much like a bug in python to me.
I can replicate this issue with a standalone python script. pastebin. com/vTREYc9n
http://
It hangs at:
read stdout: 'I: Base system installed successfully.\n'
Furthermore, if I add a timeout to select and force it to read anyway, I get an IOError:
read stdout: [Errno 11] Resource temporarily unavailable
It's easy to eliminate the zombie child. You can reap the child explicitly by adding this to the main loop:
sys. stderr. write(" poll=%s\ n" % repr(proc.poll()))
However even after the child has terminated, select() still says there's no data to read, and read() gives EAGAIN.
Note: changing the code to use proc.communicate() also hangs and leaves a zombie child. And that uses threads rather than non-blocking sockets.
This looks very much like a bug in python to me.