delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2006/03/10/05:13:58

X-Spam-Check-By: sourceware.org
Date: Fri, 10 Mar 2006 11:13:41 +0100
From: Corinna Vinschen <corinna-cygwin AT cygwin DOT com>
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
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
List-Unsubscribe: <mailto:cygwin-unsubscribe-archive-cygwin=delorie DOT com AT cygwin DOT com>
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
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/

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019