X-Recipient: archive-cygwin AT delorie DOT com X-Spam-Check-By: sourceware.org Mime-Version: 1.0 (Apple Message framework v753.1) Content-Transfer-Encoding: 7bit Message-Id: Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed To: cygwin AT cygwin DOT com From: zooko Subject: closing stdout in a child python process means that process doesn't receive bytes from stdin anymore. Date: Thu, 13 Nov 2008 06:30:10 -0700 X-Mailer: Apple Mail (2.753.1) X-IsSubscribed: yes Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com Folks: When someone runs "bin/trial --reactor=select twisted.internet.test.test_process.ProcessTestsBuilder_PollReactor.test_ childConnectionLost" on cygwin, using the cygwin version of Python, either manually (which I've done on two cygwin installations), or from the twisted buildbot -- http://buildbot.twistedmatrix.com/ builders/cygwin-py2.5-select -- then once the child process closes its fd #2, it subsequently receives no further bytes from its fd #1, even though the parent process has written some bytes to that pipe. I can reproduce this by running the Twisted unit tests, like this: step 1: get twisted: svn co svn://svn.twistedmatrix.com/svn/Twisted/trunk twisted step 2: cd into the top-level directory, and run trial: cd twisted && python ./bin/trial --reactor=select twisted.internet.test.test_process.ProcessTestsBuilder_PollReactor.test_ childConnectionLost On other platforms that cygwin (see the Twisted buildbot -- http:// buildbot.twistedmatrix.com/supported?branch=trunk -- then this test exits quickly with success. On cygwin, using cygwin python.exe, this test instead enter an infinite loop as the child waits to receive further bytes on its stdin, and the parent waits for the child to respond to those bytes. (This doesn't happen on cygwin with the standard Win32 build of python.exe, of course, anymore than it happens on a Windows system without cygwin installed when using that executable.) I've opened a ticket about this on the twisted issue tracker as well: http://twistedmatrix.com/trac/ticket/3529 # closing stdout in a child process on cygwin means that process doesn't receive bytes from stdin anymore. I think. I've opened a ticket about this on the python issue tracker as well: http://bugs.python.org/issue4295 # closing stdout in a child process on cygwin means that process doesn't receive bytes from stdin anymore. I think. The version of the cygwin package of python is 2.5.1-2. Regards, Zooko --- http://allmydata.org -- Tahoe, the Least-Authority Filesystem http://allmydata.com -- back up all your files for $10/month -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/