This is the mail archive of the
mailing list for the Cygwin project.
Re: listen/accept/fork behavior problem between cygwin1 1.5.18 and cygwin1.dll 1.5.19
- From: Corinna Vinschen <corinna-cygwin at cygwin dot com>
- To: cygwin at cygwin dot com
- Date: Fri, 10 Mar 2006 11:13:41 +0100
- Subject: Re: listen/accept/fork behavior problem between cygwin1 1.5.18 and cygwin1.dll 1.5.19
- References: <firstname.lastname@example.org>
- Reply-to: cygwin at cygwin dot com
On Mar 9 17:54, BRC wrote:
> 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
> 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 Vinschen Please, send mails regarding Cygwin to
Cygwin Project Co-Leader cygwin AT cygwin DOT com
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html