[Bug c++/24217] New: filebuf.open call sets the error bits incorrectly

2005-10-05 Thread hemasai at yahoo dot com
We are using filebuf.open call to open a file in readonly mode in a
multi-threaded application.  The result of the open call is checked with
is_open.  The truss log shows that the file was opened successfully giving the
file handle.  However, the application log shows that the open call failed and
that fail() was true with rdstate=4.  This behaviour is seen only after a few
minutes of application running (during which time it successfully opens the
same file).


-- 
   Summary: filebuf.open call sets the error bits incorrectly
   Product: gcc
   Version: 3.3.2
Status: UNCONFIRMED
  Severity: normal
  Priority: P2
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: hemasai at yahoo dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24217



[Bug libstdc++/24217] filebuf.open call sets the error bits incorrectly

2005-10-06 Thread hemasai at yahoo dot com


--- Comment #2 from hemasai at yahoo dot com  2005-10-06 18:12 ---
sample code:
fn(const char* fname)
{
   ifstream fstr;

   if (!fname)
  return;

   fstr.clear();
  fstr.open(fname, ios::in | ios::nocreate);
   if (!(fstr.is_open())) {
cout << "rdstate():" << fstr.rdstate();
cout << "bad():" << fstr.bad();
cout << "fail():" << fstr.fail();
return;
   }
//Read the file contents
}

As you can see, the fstr is a stack variable that is used to access the file. 
The flags were cleared before the open call. When it failed rdstate was set to
4.
This function call successfully opened the file multiple times before the
failure.


-- 

hemasai at yahoo dot com changed:

   What|Removed |Added

 Status|WAITING |UNCONFIRMED


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24217