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: text/binmode endless loop


On Fri, Jul 30, 2004 at 12:14:54PM +0200, Corinna Vinschen wrote:
> On Jul 30 09:33, Alexander Gottwald wrote:
> > Christopher Faylor wrote:
> > > 
> > > This shows write() being called repeatedly.  The fact that
> > > setmode_helper shows up a bunch of time doesn't mean that it is caught
> > > in a loop.  You can't infer that from strace.  You'd need to confirm
> > > that with gdb.
> > 
> > But why does it change repeatedly from text to bin and back to text?
> 
> That's a good question.  The output is generated by calls to the setmode
> function.  Since setmode isn't called from inside Cygwin, it must be
> called from the application.  It looks like a race but actually that's
> something you will have to debug.  Concentrate on calls to getmode and
> setmode for the beginning.

I think it's because newlib handles textmode itself, instead of relying
on Cygwin. So before every write it changes the mode to binmode, then it
calls write, and finally puts the mode back into text mode.
In addition setmode calls setmode_helper in syscalls.cc, and it walks all
file descriptors. The word "improbable" in the strace output should be
removed! However the loop seems to be run twice, not sure why.

Pierre

--
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]