I have seen bug 21198. My understanding is that refers to an operating system limit on the number of simultaneous files open. However if we attempt to reuse the same stream using fclose to close it before fopen is called again we still hit a limit. Under gentoo gcc runtime fails to open the file on the 1022th attempt.
Example source: gcc-bug.c/* W. B. Langdon, Crest, King's College, London 16 Jan 2009 gcc fails to open file 1021 times */ #include <stdio.h> main(argc, argv) int argc; char *argv[]; { int j; FILE *fpt1; for(j=1;j<=1024;j++) { fpt1 = fopen("any_file.txt","r"); if(!fpt1) { fprintf(stderr, "failed to open `any_file.txt',`r' %0x\n",fpt1); return; } close(fpt1); fprintf(stdout, "loop %d done\n",j); } } out put fragment: loop 1017 done loop 1018 done loop 1019 done loop 1020 done loop 1021 done failed to open `any_file.txt',`r' 0 Contents of any_file.txt: here is a line of text Request disgnostic output from compiler Using built-in specs. Target: i686-pc-linux-gnu Configured with: /var/tmp/portage/sys-devel/gcc-4.1.2/work/gcc-4.1.2/configure --prefix=/usr --bindir=/usr/i686-pc-linux-gnu/gcc-bin/4.1.2 --includedir=/usr/lib/gcc/i686-pc-linux-gnu/4.1.2/include --datadir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.2 --mandir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.2/man --infodir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.2/info --with-gxx-include-dir=/usr/lib/gcc/i686-pc-linux-gnu/4.1.2/include/g++-v4 --host=i686-pc-linux-gnu --build=i686-pc-linux-gnu --disable-altivec --enable-nls --without-included-gettext --with-system-zlib --disable-checking --disable-werror --enable-secureplt --disable-libunwind-exceptions --disable-multilib --enable-libmudflap --disable-libssp --disable-libgcj --with-arch=i686 --enable-languages=c,c++,treelang,fortran --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu Thread model: posix gcc version 4.1.2 (Gentoo 4.1.2 p1.0.2) /usr/libexec/gcc/i686-pc-linux-gnu/4.1.2/cc1 -E -quiet -v gcc-bug.c -march=i686 -fpch-preprocess -o gcc-bug.i ignoring nonexistent directory "/usr/lib/gcc/i686-pc-linux-gnu/4.1.2/../../../../i686-pc-linux-gnu/include" #include "..." search starts here: #include <...> search starts here: /usr/local/include /usr/lib/gcc/i686-pc-linux-gnu/4.1.2/include /usr/include End of search list. /usr/libexec/gcc/i686-pc-linux-gnu/4.1.2/cc1 -fpreprocessed gcc-bug.i -quiet -dumpbase gcc-bug.c -march=i686 -auxbase gcc-bug -version -o gcc-bug.s GNU C version 4.1.2 (Gentoo 4.1.2 p1.0.2) (i686-pc-linux-gnu) compiled by GNU C version 4.1.2 (Gentoo 4.1.2 p1.0.2). GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: 4765ab829ec24257bff495f3c6370d71 /usr/lib/gcc/i686-pc-linux-gnu/4.1.2/../../../../i686-pc-linux-gnu/bin/as -V -Qy -o gcc-bug.o gcc-bug.s GNU assembler version 2.18 (i686-pc-linux-gnu) using BFD version (GNU Binutils) 2.18 /usr/libexec/gcc/i686-pc-linux-gnu/4.1.2/collect2 --eh-frame-hdr -m elf_i386 -dynamic-linker /lib/ld-linux.so.2 /usr/lib/gcc/i686-pc-linux-gnu/4.1.2/../../../crt1.o /usr/lib/gcc/i686-pc-linux-gnu/4.1.2/../../../crti.o /usr/lib/gcc/i686-pc-linux-gnu/4.1.2/crtbegin.o -L/usr/lib/gcc/i686-pc-linux-gnu/4.1.2 -L/usr/lib/gcc/i686-pc-linux-gnu/4.1.2 -L/usr/lib/gcc/i686-pc-linux-gnu/4.1.2/../../../../i686-pc-linux-gnu/lib -L/usr/lib/gcc/i686-pc-linux-gnu/4.1.2/../../.. gcc-bug.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/lib/gcc/i686-pc-linux-gnu/4.1.2/crtend.o /usr/lib/gcc/i686-pc-linux-gnu/4.1.2/../../../crtn.o -- Summary: cannot reuse input stream 1022 times on same file Product: gcc Version: 4.1.2 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: william dot langdon at kcl dot ac dot uk http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38876