[Bug bootstrap/21919] New: make bootstrap-lean gets stuck after between-stages crash.

bmoses-nospam at cits1 dot stanford dot edu gcc-bugzilla@gcc.gnu.org
Sat Jun 4 23:45:00 GMT 2005


System: 200MHz Pentium Pro PC, Windows 2k, Cygwin.
GCC Version: 4.1.0, from cvs 2005-06-02.

Before the bug appeared: I had downloaded a fresh copy of the CVS tree, and was 
attempting to build a copy of gfortran using the following commands (yes, I now 
know that trying to build _in_ the source directory was a bad idea, but that 
doesn't affect this bug).

  setenv CFLAGS '-O2 -g'
  setenv BOOT_CFLAGS '-O2'
  cd gcc/gcc

  ../configure  --enable-threads=posix --enable-sjlj-exceptions \
      --disable-libmudflap --enable-languages=f95

I then ran "make bootstrap-lean", and waited.  After some time (about 26 hours), 
the compilation crashed, due to what we think is bug 21766 (compiler ICE on 
valid code).  This is not the bug that I am reporting.  :)

The bug that I am reporting is what happened when I immediately re-ran "make-
bootstrap-lean" to see if this was repeatable.  What happened instead was a 
string of "tail: cannot open" errors, followed by make exiting with errors.  
Apparently, the make process has gotten wedged into a state from which it can't 
recover.

Some detailed output, to help track down what's happening.  First, the output of 
make bootstrap-lean:

make[1]: Entering directory `/cygdrive/e/gfortran/gcc/gcc/build-i686-pc-cygwin/
libiberty'
make[2]: Entering directory `/cygdrive/e/gfortran/gcc/gcc/build-i686-pc-cygwin/
libiberty/testsuite'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/cygdrive/e/gfortran/gcc/gcc/build-i686-pc-cygwin/
libiberty/testsuite'
make[1]: Leaving directory `/cygdrive/e/gfortran/gcc/gcc/build-i686-pc-cygwin/
libiberty'
make[1]: Entering directory `/cygdrive/e/gfortran/gcc/gcc/build-i686-pc-cygwin/
fixincludes'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/cygdrive/e/gfortran/gcc/gcc/build-i686-pc-cygwin/
fixincludes'
make[1]: Entering directory `/cygdrive/e/gfortran/gcc/gcc/intl'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/cygdrive/e/gfortran/gcc/gcc/intl'
make[1]: Entering directory `/cygdrive/e/gfortran/gcc/gcc/libiberty'
make[2]: Entering directory `/cygdrive/e/gfortran/gcc/gcc/libiberty/testsuite'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/cygdrive/e/gfortran/gcc/gcc/libiberty/testsuite'
make[1]: Leaving directory `/cygdrive/e/gfortran/gcc/gcc/libiberty'
make[1]: Entering directory `/cygdrive/e/gfortran/gcc/gcc/libcpp'
test -f config.h || (rm -f stamp-h1 && make stamp-h1)
test -d po || mkdir po
: --statistics -o po/be.gmo ../../libcpp/po/be.po
test -d po || mkdir po
: --statistics -o po/ca.gmo ../../libcpp/po/ca.po
test -d po || mkdir po
: --statistics -o po/da.gmo ../../libcpp/po/da.po
test -d po || mkdir po
: --statistics -o po/de.gmo ../../libcpp/po/de.po
test -d po || mkdir po
: --statistics -o po/el.gmo ../../libcpp/po/el.po
test -d po || mkdir po
: --statistics -o po/es.gmo ../../libcpp/po/es.po
test -d po || mkdir po
: --statistics -o po/fr.gmo ../../libcpp/po/fr.po
test -d po || mkdir po
: --statistics -o po/ja.gmo ../../libcpp/po/ja.po
test -d po || mkdir po
: --statistics -o po/nl.gmo ../../libcpp/po/nl.po
test -d po || mkdir po
: --statistics -o po/rw.gmo ../../libcpp/po/rw.po
test -d po || mkdir po
: --statistics -o po/sv.gmo ../../libcpp/po/sv.po
test -d po || mkdir po
: --statistics -o po/tr.gmo ../../libcpp/po/tr.po
test -d po || mkdir po
: --statistics -o po/vi.gmo ../../libcpp/po/vi.po
make[1]: Leaving directory `/cygdrive/e/gfortran/gcc/gcc/libcpp'
Bootstrapping the compiler
make[1]: Entering directory `/cygdrive/e/gfortran/gcc/gcc/gcc'

Bootstrap complete - make "quickstrap" to redo last build,
or "cleanstrap" to redo the bootstrap from scratch.
make[1]: Leaving directory `/cygdrive/e/gfortran/gcc/gcc/gcc'
Comparing stage2 and stage3 of the compiler
make[1]: Entering directory `/cygdrive/e/gfortran/gcc/gcc/gcc'
rm -f .bad_compare
case "gnucompare-lean" in *compare | *compare-lean ) stage=2 ;; * ) stage=`echo 
gnucompare-lean | sed -e 's,^[a-z]*compare\([0-9][0-9]*\).*,\1,'` ;; esac; \
for dir in . fortran build libgcc; do \
  if [ "`echo $dir/*.o`" != "$dir/*.o" ] ; then \
    for file in $dir/*.o; do \
      case $file in \
	./cc*-checksum.o | libgcc/* ) \
	    tail +16c ./$file > tmp-foo1 \
	    && tail +16c stage$stage/$file > tmp-foo2 \
	    && ( cmp tmp-foo1 tmp-foo2 > /dev/null 2>&1 \
		 || echo warning: $file differs || true ) \
	  ;; \
	*)  case "gnucompare-lean" in \
	  slowcompare* ) \
	    tail +16c ./$file > tmp-foo1; \
	    tail +16c stage$stage/$file > tmp-foo2 \
	      && (cmp tmp-foo1 tmp-foo2 > /dev/null 2>&1 \
		  || echo $file differs >> .bad_compare) || true; \
	    ;; \
	  fastcompare* ) \
	    cmp $file stage$stage/$file 16 16 > /dev/null 2>&1; \
	    test $? -eq 1 && echo $file differs >> .bad_compare || true; \
	    ;; \
	  gnucompare* ) \
	    cmp --ignore-initial=16 $file stage$stage/$file > /dev/null 2>&1; \
	    test $? -eq 1 && echo $file differs >> .bad_compare || true; \
	    ;; \
        esac ; \
      esac ; \
    done; \
  else true; fi; \
done
tail: cannot open `stage2/./cc1-checksum.o' for reading: No such file or 
directory
make[1]: Leaving directory `/cygdrive/e/gfortran/gcc/gcc/gcc'
tail: cannot open `stage2/libgcc/__gcc_bcmp.o' for reading: No such file or 
directory
tail: cannot open `stage2/libgcc/__main.o' for reading: No such file or 
directory
tail: cannot open `stage2/libgcc/_absvdi2.o' for reading: No such file or 
directory
tail: cannot open `stage2/libgcc/_absvsi2.o' for reading: No such file or 
directory
tail: cannot open `stage2/libgcc/_addvdi3.o' for reading: No such file or 
directory
tail: cannot open `stage2/libgcc/_addvsi3.o' for reading: No such file or 
directory
tail: cannot open `stage2/libgcc/_ashldi3.o' for reading: No such file or 
directory
tail: cannot open `stage2/libgcc/_ashrdi3.o' for reading: No such file or 
directory
tail: cannot open `stage2/libgcc/_chkstk.o' for reading: No such file or 
directory
tail: cannot open `stage2/libgcc/_clear_cache.o' for reading: No such file or 
directory
tail: cannot open `stage2/libgcc/_clz.o' for reading: No such file or directory
tail: cannot open `stage2/libgcc/_clzdi2.o' for reading: No such file or 
directory
tail: cannot open `stage2/libgcc/_clzsi2.o' for reading: No such file or 
directory
tail: cannot open `stage2/libgcc/_cmpdi2.o' for reading: No such file or 
directory

[...]

tail: cannot open `stage2/libgcc/_udivmoddi4.o' for reading: No such file or 
directory
tail: cannot open `stage2/libgcc/_umoddi3.o' for reading: No such file or 
directory
tail: cannot open `stage2/libgcc/gthr-gnat.o' for reading: No such file or 
directory
tail: cannot open `stage2/libgcc/unwind-c.o' for reading: No such file or 
directory
tail: cannot open `stage2/libgcc/unwind-dw2-fde.o' for reading: No such file or 
directory
tail: cannot open `stage2/libgcc/unwind-dw2.o' for reading: No such file or 
directory
tail: cannot open `stage2/libgcc/unwind-sjlj.o' for reading: No such file or 
directory
make[1]: *** [gnucompare-lean] Error 1
make: *** [bootstrap-lean] Error 2

A check of the build directory finds that the entire "stage2" directory has 
already been deleted at this point, which would explain why tail can't find the 
files.  FWIW, the various "stage" files that exist are "stage1_build", 
"stage1_copy", "stage2_build", "stage2_copy", and "stage3_build".

Second, the tail end of the output from the first failed make (to help indicate 
where in the process it crashed):

Adding multilib support to Makefile in ../../../libgfortran
multidirs=
with_multisubdir=
make[2]: Entering directory `/cygdrive/e/gfortran/gcc/gcc/i686-pc-cygwin/
libgfortran'
/bin/sh ../../../libgfortran/mk-sik-inc.sh '/cygdrive/e/gfortran/gcc/gcc/./gcc/
gfortran -B/cygdrive/
e/gfortran/gcc/gcc/./gcc/ -B/usr/local/i686-pc-cygwin/bin/ -B/usr/local/i686-pc-
cygwin/lib/ -isystem
 /usr/local/i686-pc-cygwin/include -isystem /usr/local/i686-pc-cygwin/sys-
include -Wall -g -O2 -Wall
 -fno-repack-arrays -fno-underscoring' > selected_int_kind.inc
/bin/sh ../../../libgfortran/mk-srk-inc.sh '/cygdrive/e/gfortran/gcc/gcc/./gcc/
gfortran -B/cygdrive/
e/gfortran/gcc/gcc/./gcc/ -B/usr/local/i686-pc-cygwin/bin/ -B/usr/local/i686-pc-
cygwin/lib/ -isystem
 /usr/local/i686-pc-cygwin/include -isystem /usr/local/i686-pc-cygwin/sys-
include -Wall -g -O2 -Wall
 -fno-repack-arrays -fno-underscoring' > selected_real_kind.inc
make  all-am
make[3]: Entering directory `/cygdrive/e/gfortran/gcc/gcc/i686-pc-cygwin/
libgfortran'
/bin/sh ./libtool --mode=compile /cygdrive/e/gfortran/gcc/gcc/./gcc/xgcc -B/
cygdrive/e/gfortran/gcc/
gcc/./gcc/ -B/usr/local/i686-pc-cygwin/bin/ -B/usr/local/i686-pc-cygwin/lib/ -
isystem /usr/local/i68
6-pc-cygwin/include -isystem /usr/local/i686-pc-cygwin/sys-include -
DHAVE_CONFIG_H -I. -I../../../li
bgfortran -I.  -iquote../../../libgfortran/io  -std=gnu99 -Wall -Wstrict-
prototypes -Wmissing-protot
ypes -Wold-style-definition -Wextra -Wwrite-strings -O2 -g -O2 -c -o environ.lo 
`test -f 'runtime/en
viron.c' || echo '../../../libgfortran/'`runtime/environ.c
/cygdrive/e/gfortran/gcc/gcc/./gcc/xgcc -B/cygdrive/e/gfortran/gcc/gcc/./gcc/ -
B/usr/local/i686-pc-c
ygwin/bin/ -B/usr/local/i686-pc-cygwin/lib/ -isystem /usr/local/i686-pc-cygwin/
include -isystem /usr
/local/i686-pc-cygwin/sys-include -DHAVE_CONFIG_H -I. -I../../../libgfortran -I. 
-iquote../../../lib
gfortran/io -std=gnu99 -Wall -Wstrict-prototypes -Wmissing-prototypes -Wold-
style-definition -Wextra
 -Wwrite-strings -O2 -g -O2 -c ../../../libgfortran/runtime/environ.c -o 
environ.o
../../../libgfortran/runtime/environ.c: In function 'init_integer':
../../../libgfortran/runtime/environ.c:104: error: invariant not recomputed when 
ADDR_EXPR changed
&_ctype_D.1970[1];

../../../libgfortran/runtime/environ.c:104: internal compiler error: 
verify_stmts failed.
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.
make[3]: *** [environ.lo] Error 1
make[3]: Leaving directory `/cygdrive/e/gfortran/gcc/gcc/i686-pc-cygwin/
libgfortran'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/cygdrive/e/gfortran/gcc/gcc/i686-pc-cygwin/
libgfortran'
make[1]: *** [all-target-libgfortran] Error 2
make[1]: Leaving directory `/cygdrive/e/gfortran/gcc/gcc'
make: *** [bootstrap-lean] Error 2

Finally, I'll note that I'll leave the build directory untouched for a few days, 
in case there are other files in it that would be useful to look at.

-- 
           Summary: make bootstrap-lean gets stuck after between-stages
                    crash.
           Product: gcc
           Version: 4.1.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: bootstrap
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: bmoses-nospam at cits1 dot stanford dot edu
                CC: gcc-bugs at gcc dot gnu dot org
 GCC build triplet: i686-pc-cygwin
  GCC host triplet: i686-pc-cygwin
GCC target triplet: i686-pc-cygwin


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



More information about the Gcc-bugs mailing list