X-Spam-Check-By: sourceware.org Date: Fri, 10 Mar 2006 11:13:41 +0100 From: Corinna Vinschen To: cygwin AT cygwin DOT com Subject: Re: listen/accept/fork behavior problem between cygwin1 1.5.18 and cygwin1.dll 1.5.19 Message-ID: <20060310101341.GB3184@calimero.vinschen.de> Reply-To: cygwin AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com References: <20060310015430 DOT 39517 DOT qmail AT web33405 DOT mail DOT mud DOT yahoo DOT com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20060310015430.39517.qmail@web33405.mail.mud.yahoo.com> User-Agent: Mutt/1.4.2i Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm Precedence: bulk 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 Mar 9 17:54, BRC wrote: > Hi, > > I have a perl based server that creates a TCP listen > socket in a parent process, then forks off an N-child > process pool that normally accepts connections > round-robin style alla apache 1.3. Everything worked > great when I was based on cygwin1.dll version 1.5.18. > I would see many requests being simulatenously > sometimes lasting up to a minute. > > Then I did a recent upgrade and suddenly all requests > became serialized. That is, an entire request would > need to be handled before a pending one a child began. > I immediately downgraded perl to 5.8.6-4 from > 5.8.7-5. Nothing changed. Then I did a complete > cygwin rollback and the concurrency went back to > normal. I was then able to advance just the version > of perl back to 5.8.7-5 and everything still works. > After lots of back and forth, I was able to isolate > the behavior difference to cygwin1.dll. > > I would really like to keep up with all cygwin changes > but I am now stuck knowing there is a problem for me > with the latest cygwin version. > > I realize that Perl's fork under cygwin is technically > using threads so I left wondering if this is a > blocking > io problem (that changed with cygwin revs) since it > seems to transcend perl. > > Any help is appreciated. I have no idea how that should happen at all and so I assume I don't understand exactly how your application works. Could you please create a simple testcase in plain C, stripped to the bare minimum of lines, building and working OOTB, which allows to reproduce the problem? That would be most helpful. Another test you could also make is this: Can you easily change your listen/accept/action code so that only the server accepts and then a child is forked for the associated action? Does that maintain concurrency in your server with 1.5.19? 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/