This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: listen/accept/fork behavior problem between cygwin1 1.5.18 and cygwin1.dll 1.5.19


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/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]