delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2002/10/17/20:32:37

Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sources.redhat.com/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sources.redhat.com/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
Date: Fri, 18 Oct 2002 10:32:16 +1000
From: Anurag Sharma <anurag AT proximity DOT com DOT au>
To: cygwin AT cygwin DOT com
Subject: Re: errno reset when using thread enabled gcc
Message-Id: <20021018103216.0884da9b.anurag@proximity.com.au>
In-Reply-To: <Pine.GSO.4.44.0210171008050.6818-100000@slinky.cs.nyu.edu>
References: <20021017141643 DOT 0356fc8a DOT anurag AT proximity DOT com DOT au>
<Pine DOT GSO DOT 4 DOT 44 DOT 0210171008050 DOT 6818-100000 AT slinky DOT cs DOT nyu DOT edu>
Organization: Proximity
Mime-Version: 1.0

On Thu, 17 Oct 2002 10:09:26 -0400 (EDT)
Igor Pechtchanski <pechtcha AT cs DOT nyu DOT edu> wrote:

> On Thu, 17 Oct 2002, Anurag Sharma wrote:
> 
> > Hi All,
> >
> > I have come across a strange behaviour using native gcc on cygwin. I
> > understand that this issue is not 100% relevant to this list, but I am
> > hoping some one might have come across this issue before. Apologies
> > for any incovinience. I have posted the same on newlib mailing list
> > too.
> >
> > Consider this short code:
> >
> >    int fd = ::open("/tmp/errnotest", O_RDONLY | O_BINARY);
> >
> >     if (fd == -1) {
> >         std::cerr << "open failed, errno=" << errno << ", strerror="
> >         << strerror(errno) << std::endl; std::cerr << "open failed,
> >         errno=" << errno << ", strerror=" << strerror(errno) <<
> >         std::endl;
> >     }
> >
> > If I build the gcc compiler by providing --enable-threads=single
> > option in the configure stage, following is the output :
> >
> > open failed, errno=2, strerror=No such file or directory
> > open failed, errno=2, strerror=No such file or directory
> >
> > This is of course expected.
> >
> > Hoewever if I build the compiler by providing --enable-threads=posix
> > option in the configure stage, the output is as follows :
> >
> > open failed, errno=2, strerror=No such file or directory
> > open failed, errno=0, strerror=No error
> >
> > That is , after the first call to errno, it is reset!!
> >
> > Has anyone else experiened this before? Can anyone please help find
> > out what exactly is going wrong?
> >
> > Regards,
> >
> > Anurag
> 
> Anurag,
> 
> While I don't know for sure that this is what's happening, have you
> considered that operator<< or endl may (re)set errno?
> 	Igor

Yes Igor,

It is the STL iostream operators which are resetting it. Using the
threading model of posix does make the STL thread safe, but why should it
affect errno? 

Thanks for your response.

Reagrds,
Anurag

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Bug reporting:         http://cygwin.com/bugs.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