X-Recipient: archive-cygwin AT delorie DOT com X-Spam-Check-By: sourceware.org Date: Thu, 13 Nov 2008 15:01:47 +0100 From: Corinna Vinschen To: cygwin AT cygwin DOT com Subject: Re: closing stdout in a child python process means that process doesn't receive bytes from stdin anymore. Message-ID: <20081113140147.GP17719@calimero.vinschen.de> Reply-To: cygwin AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.16 (2007-06-09) Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: 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 On Nov 13 06:30, zooko wrote: > 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. I don't think I ever saw such an effect. I'm not using python, though. If it's really sure that this isn't a problem in python but in Cygwin itself we would really need a self-contained testcase, preferrably in plain C. A simple, really short test script in python would be ok, too, if plain C isn't an option for some reason. Corinna -- Corinna Vinschen Please, send mails regarding Cygwin to Cygwin Project Co-Leader cygwin AT cygwin DOT com Red Hat -- 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/