Hello, I believe I have found a bug in GCC, but I am unable to report it for lack of a bugzilla account. I'm including below the text of the bug report that I'd like to add. At minimum, this issue needs to be discussed or documented. Would you please create a GCC bugzilla account for me? -Alex istream::seekg should not reset eofbit if -std=c++98 According to N3168 [1], as recently as 2010 the C++ standards did not permit istream::seekg to reset istream::eof. When the change to the standard was approved, libstdc++ started using the new behavior, even for programs compiled with -std=c++98. This caused the bioinformatics program GERMLINE [2] to break. In PEDIndividualsExtractor.cpp [3] we see: void PEDIndividualsExtractor::loadInput() { ... while (!stream.eof() ) { getIndividuals(); stream.seekg(numberOfMarkers*4 + 1,ios::cur); } ... } void PEDIndividualsExtractor::getIndividuals() { string discard, ID, famID; stream >> famID >> ID >> discard >> discard >> discard >> discard; if(!stream.good()) return; ... } This code stopped working sometime between GCC 4.4.5 / libstdc++ 6.0.13 and GCC 4.6.3 / libstdc++ 6.0.16. With the change to libstdc++, stream.eof() is always false, so loadInput() goes into an infinite loop. An simple test program is attached. I realize that I could petition the GERMLINE authors to change the loop condition (and I eventually will), but the fact that you can't get the old behavior even with -std=c++98 is a bug in GCC. [1] http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3168.htm [2] http://www.cs.columbia.edu/~gusev/germline/ [3] http://www.cs.columbia.edu/~gusev/germline/germline-1-5-1.tar.gz