This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Spurious parallel make failures in libgcc.


I occasionally get a build failure in libgcc when doing a scratch build (onx86_64-unknown-linux-gnu) , and if I simply do another make, it works fine. I am always building with make -j16, so its never been easy to spot.

This morning, it happened to fail in such a way that I can sort of see whats going on for a change. well I thought so anyway

The problem is building libgcc.

(small log snippet at the bottom)
compilation of libgcc/libgcov-interface.c is spawned, in particular (1) the _gcov_reset.o portion. meanwhile, a bit later, but presumably in parallel, (2) gthr-default.h is linked to a source file.
but too late!!!! (3), _gcov_reset has already failed looking for it.

Now if I type make, everything builds to completion because the file is there.


However, as I look into it deeper, It doesn't seem to be quite that simple.. Looking at the detailed dates of files in the 32 bit directory (where I think it worked), (sorted using --time-style=full-iso)
<...>
-rw-rw-r--. 1 amacleod amacleod 8129 2015-07-15 08:57:23.745914123 -0400 _gcov_execvp.dep -rw-rw-r--. 1 amacleod amacleod 8128 2015-07-15 08:57:23.745914123 -0400 _gcov_execv.dep -rw-rw-r--. 1 amacleod amacleod 8129 2015-07-15 08:57:23.755914124 -0400 _gcov_execve.dep -rw-rw-r--. 1 amacleod amacleod 8129 2015-07-15 08:57:23.779914126 -0400 _gcov_execle.dep -rw-rw-r--. 1 amacleod amacleod 12520 2015-07-15 08:57:23.781914126 -0400 _gcov_execvp.o -rw-rw-r--. 1 amacleod amacleod 12516 2015-07-15 08:57:23.787914127 -0400 _gcov_execv.o -rw-rw-r--. 1 amacleod amacleod 12552 2015-07-15 08:57:23.823914130 -0400 _gcov_execve.o lrwxrwxrwx. 1 amacleod amacleod 39 2015-07-15 08:57:23.841914132 -0400 gthr-default.h -> /gcc/2015-07-14/gcc/libgcc/gthr-posix.h -rw-rw-r--. 1 amacleod amacleod 8129 2015-07-15 08:57:23.854914133 -0400 _gcov_execlp.dep -rw-rw-r--. 1 amacleod amacleod 13268 2015-07-15 08:57:23.860914134 -0400 _gcov_execle.o -rw-rw-r--. 1 amacleod amacleod 13216 2015-07-15 08:57:23.885914136 -0400 _gcov_execlp.o -rw-rw-r--. 1 amacleod amacleod 8128 2015-07-15 08:57:23.895914137 -0400 _gcov_reset.dep -rw-rw-r--. 1 amacleod amacleod 14184 2015-07-15 08:57:23.954914142 -0400 _gcov_reset.o
<...>

It looks like configure is running WHILE compilation is happening, and _gcov_reset.o just happens to be spawned *late* enough in my case above that the file isnt quite there yet... Although that doesnt make sense either.. although why are some .o's older than the header file.. OR gthr-default.h is being created a second time when configuring for the non-32 bit (or vice versa). But that doesnt make sense either since when I look at the other directory I see something similar.
<...>
-rw-rw-r--. 1 amacleod amacleod 18008 2015-07-15 08:57:22.678914029 -0400 _gcov_execvp.o -rw-rw-r--. 1 amacleod amacleod 19192 2015-07-15 08:57:22.706914031 -0400 _gcov_execl.o -rw-rw-r--. 1 amacleod amacleod 26464 2015-07-15 08:57:22.712914032 -0400 _gcov_indirect_call_topn_profiler.o -rw-rw-r--. 1 amacleod amacleod 8087 2015-07-15 08:57:22.720914032 -0400 _gcov_execve.dep -rw-rw-r--. 1 amacleod amacleod 8086 2015-07-15 08:57:22.720914032 -0400 _gcov_execv.dep lrwxrwxrwx. 1 amacleod amacleod 39 2015-07-15 08:57:22.723914032 -0400 gthr-default.h -> /gcc/2015-07-14/gcc/libgcc/gthr-posix.h -rw-rw-r--. 1 amacleod amacleod 19296 2015-07-15 08:57:22.729914033 -0400 _gcov_execle.o -rw-rw-r--. 1 amacleod amacleod 18688 2015-07-15 08:57:22.730914033 -0400 _gcov_fork.o -rw-rw-r--. 1 amacleod amacleod 18008 2015-07-15 08:57:22.754914035 -0400 _gcov_execv.o -rw-rw-r--. 1 amacleod amacleod 18184 2015-07-15 08:57:22.760914036 -0400 _gcov_execve.o
<...>

The only other thing I can think of is maybe the configure bits are being run in parallel somehow with the build? , or maybe re-run more than once and my file got unlucky enough to be looking for this one at eactly the wrong moment? To be fair, the config output isnt obvious whether its creating gthr-default in the 64 or 32 bit directory.. making it difficult to figure whats going on, but it does seem interleaved and the timestamps are fishy looking to me.

Im not very good with configure and Makefiles and how we parallelize this... Anyone with any bright ideas?


Andrew



config.status: linking /gcc/2015-07-14/gcc/libgcc/unwind-generic.h to unwind.h /gcc/2015-07-14/build/./gcc/xgcc -B/gcc/2015-07-14/build/./gcc/ -B/gcc/2015-07-14/install/x86_64-unknown-linux-gnu/bin/ -B/gcc/2015-07-14/install/x86_64-unknown-linux-gnu/lib/ -isystem /gcc/2015-07-14/install/x86_64-unknown-linux-gnu/include -isystem /gcc/2015-07-14/install/x86_64-unknown-linux-gnu/sys-include -g -O2 -O2 -g -O2 -DIN_GCC -fPIC -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fpic -mlong-double-80 -DUSE_ELF_SYMVER -g -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector -fpic -mlong-double-80 -DUSE_ELF_SYMVER -I. -I. -I../.././gcc -I/gcc/2015-07-14/gcc/libgcc -I/gcc/2015-07-14/gcc/libgcc/. -I/gcc/2015-07-14/gcc/libgcc/../gcc -I/gcc/2015-07-14/gcc/libgcc/../include -I/gcc/2015-07-14/gcc/libgcc/config/libbid -DENABLE_DECIMAL_BID_FORMAT -DHAVE_CC_TLS -DUSE_TLS -o _gcov_execve.o -MT _gcov_execve.o -MD -MP -MF _gcov_execve.dep -DL_gcov_execve -c /gcc/2015-07-14/gcc/libgcc/libgcov-interface.c

(1)

/gcc/2015-07-14/build/./gcc/xgcc -B/gcc/2015-07-14/build/./gcc/ -B/gcc/2015-07-14/install/x86_64-unknown-linux-gnu/bin/ -B/gcc/2015-07-14/install/x86_64-unknown-linux-gnu/lib/ -isystem /gcc/2015-07-14/install/x86_64-unknown-linux-gnu/include -isystem /gcc/2015-07-14/install/x86_64-unknown-linux-gnu/sys-include -g -O2 -O2 -g -O2 -DIN_GCC -fPIC -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fpic -mlong-double-80 -DUSE_ELF_SYMVER -g -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector -fpic -mlong-double-80 -DUSE_ELF_SYMVER -I. -I. -I../.././gcc -I/gcc/2015-07-14/gcc/libgcc -I/gcc/2015-07-14/gcc/libgcc/. -I/gcc/2015-07-14/gcc/libgcc/../gcc -I/gcc/2015-07-14/gcc/libgcc/../include -I/gcc/2015-07-14/gcc/libgcc/config/libbid -DENABLE_DECIMAL_BID_FORMAT -DHAVE_CC_TLS -DUSE_TLS -o _gcov_reset.o -MT _gcov_reset.o -MD -MP -MF _gcov_reset.dep -DL_gcov_reset -c /gcc/2015-07-14/gcc/libgcc/libgcov-interface.c /gcc/2015-07-14/build/./gcc/xgcc -B/gcc/2015-07-14/build/./gcc/ -B/gcc/2015-07-14/install/x86_64-unknown-linux-gnu/bin/ -B/gcc/2015-07-14/install/x86_64-unknown-linux-gnu/lib/ -isystem /gcc/2015-07-14/install/x86_64-unknown-linux-gnu/include -isystem /gcc/2015-07-14/install/x86_64-unknown-linux-gnu/sys-include -g -O2 -O2 -g -O2 -DIN_GCC -fPIC -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fpic -mlong-double-80 -DUSE_ELF_SYMVER -g -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector -fpic -mlong-double-80 -DUSE_ELF_SYMVER -I. -I. -I../.././gcc -I/gcc/2015-07-14/gcc/libgcc -I/gcc/2015-07-14/gcc/libgcc/. -I/gcc/2015-07-14/gcc/libgcc/../gcc -I/gcc/2015-07-14/gcc/libgcc/../include -I/gcc/2015-07-14/gcc/libgcc/config/libbid -DENABLE_DECIMAL_BID_FORMAT -DHAVE_CC_TLS -DUSE_TLS -o _gcov.o -MT _gcov.o -MD -MP -MF _gcov.dep -DL_gcov -c /gcc/2015-07-14/gcc/libgcc/libgcov-driver.c config.status: linking /gcc/2015-07-14/gcc/libgcc/config/i386/linux-unwind.h to md-unwind-support.h /gcc/2015-07-14/build/./gcc/xgcc -B/gcc/2015-07-14/build/./gcc/ -B/gcc/2015-07-14/install/x86_64-unknown-linux-gnu/bin/ -B/gcc/2015-07-14/install/x86_64-unknown-linux-gnu/lib/ -isystem /gcc/2015-07-14/install/x86_64-unknown-linux-gnu/include -isystem /gcc/2015-07-14/install/x86_64-unknown-linux-gnu/sys-include -g -O2 -O2 -g -O2 -DIN_GCC -fPIC -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fpic -mlong-double-80 -DUSE_ELF_SYMVER -g -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector -fpic -mlong-double-80 -DUSE_ELF_SYMVER -I. -I. -I../.././gcc -I/gcc/2015-07-14/gcc/libgcc -I/gcc/2015-07-14/gcc/libgcc/. -I/gcc/2015-07-14/gcc/libgcc/../gcc -I/gcc/2015-07-14/gcc/libgcc/../include -I/gcc/2015-07-14/gcc/libgcc/config/libbid -DENABLE_DECIMAL_BID_FORMAT -DHAVE_CC_TLS -DUSE_TLS -o unwind-dw2.o -MT unwind-dw2.o -MD -MP -MF unwind-dw2.dep -fexceptions -c /gcc/2015-07-14/gcc/libgcc/unwind-dw2.c -fvisibility=hidden -DHIDE_EXPORTS
if [ -z "32" ]; then \
  true; \
else \
  rootpre=`${PWDCMD-pwd}`/; export rootpre; \
srcrootpre=`cd /gcc/2015-07-14/gcc/libgcc; ${PWDCMD-pwd}`/; export srcrootpre; \
  lib=`echo "${rootpre}" | sed -e 's,^.*/\([^/][^/]*\)/$,\1,'`; \
compiler="/gcc/2015-07-14/build/./gcc/xgcc -B/gcc/2015-07-14/build/./gcc/ -B/gcc/2015-07-14/install/x86_64-unknown-linux-gnu/bin/ -B/gcc/2015-07-14/install/x86_64-unknown-linux-gnu/lib/ -isystem /gcc/2015-07-14/install/x86_64-unknown-linux-gnu/include -isystem /gcc/2015-07-14/install/x86_64-unknown-linux-gnu/sys-include "; \
  for i in `${compiler} --print-multi-lib 2>/dev/null`; do \
    dir=`echo $i | sed -e 's/;.*$//'`; \
    if [ "${dir}" = "." ]; then \
      true; \
    else \
      if [ -d ../${dir}/${lib} ]; then \
    flags=`echo $i | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`; \
if (cd ../${dir}/${lib}; make "AR=ar" "AR_FLAGS=rc" "CC=/gcc/2015-07-14/build/./gcc/xgcc -B/gcc/2015-07-14/build/./gcc/ -B/gcc/2015-07-14/install/x86_64-unknown-linux-gnu/bin/ -B/gcc/2015-07-14/install/x86_64-unknown-linux-gnu/lib/ -isystem /gcc/2015-07-14/install/x86_64-unknown-linux-gnu/include -isystem /gcc/2015-07-14/install/x86_64-unknown-linux-gnu/sys-include " "CFLAGS=-g -O2" "DESTDIR=" "EXTRA_OFILES=" "HDEFINES=" "INSTALL=/usr/bin/install -c" "INSTALL_DATA=/usr/bin/install -c -m 644" "INSTALL_PROGRAM=/usr/bin/install -c" "LDFLAGS=" "LOADLIBES=" "RANLIB=ranlib" "SHELL=/bin/sh" "prefix=/gcc/2015-07-14/install" "exec_prefix=/gcc/2015-07-14/install" "libdir=/gcc/2015-07-14/install/lib" "libsubdir=/gcc/2015-07-14/install/lib/gcc/x86_64-unknown-linux-gnu/6.0.0" "tooldir=/gcc/2015-07-14/install/x86_64-unknown-linux-gnu" \
            CFLAGS="-g -O2 ${flags}" \
            CCASFLAGS=" ${flags}" \
            FCFLAGS=" ${flags}" \
            FFLAGS=" ${flags}" \
            ADAFLAGS=" ${flags}" \
            prefix="/gcc/2015-07-14/install" \
            exec_prefix="/gcc/2015-07-14/install" \
            GCJFLAGS=" ${flags}" \
            GOCFLAGS="-O2 -g ${flags}" \
            CXXFLAGS="-g -O2 -D_GNU_SOURCE ${flags}" \
            LIBCFLAGS="-g -O2 ${flags}" \
LIBCXXFLAGS="-g -O2 -D_GNU_SOURCE -fno-implicit-templates ${flags}" \
            LDFLAGS=" ${flags}" \
            MULTIFLAGS="${flags}" \
            DESTDIR="" \
            INSTALL="/usr/bin/install -c" \
            INSTALL_DATA="/usr/bin/install -c -m 644" \
            INSTALL_PROGRAM="/usr/bin/install -c" \
            INSTALL_SCRIPT="/usr/bin/install -c" \
            all); then \
      true; \
    else \
      exit 1; \
    fi; \
      else true; \
      fi; \
    fi; \
  done; \
fi
/gcc/2015-07-14/build/./gcc/xgcc -B/gcc/2015-07-14/build/./gcc/ -B/gcc/2015-07-14/install/x86_64-unknown-linux-gnu/bin/ -B/gcc/2015-07-14/install/x86_64-unknown-linux-gnu/lib/ -isystem /gcc/2015-07-14/install/x86_64-unknown-linux-gnu/include -isystem /gcc/2015-07-14/install/x86_64-unknown-linux-gnu/sys-include -g -O2 -O2 -g -O2 -DIN_GCC -fPIC -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fpic -mlong-double-80 -DUSE_ELF_SYMVER -g -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector -fpic -mlong-double-80 -DUSE_ELF_SYMVER -I. -I. -I../.././gcc -I/gcc/2015-07-14/gcc/libgcc -I/gcc/2015-07-14/gcc/libgcc/. -I/gcc/2015-07-14/gcc/libgcc/../gcc -I/gcc/2015-07-14/gcc/libgcc/../include -I/gcc/2015-07-14/gcc/libgcc/config/libbid -DENABLE_DECIMAL_BID_FORMAT -DHAVE_CC_TLS -DUSE_TLS -o unwind-dw2-fde-dip.o -MT unwind-dw2-fde-dip.o -MD -MP -MF unwind-dw2-fde-dip.dep -fexceptions -c /gcc/2015-07-14/gcc/libgcc/unwind-dw2-fde-dip.c -fvisibility=hidden -DHIDE_EXPORTS /gcc/2015-07-14/build/./gcc/xgcc -B/gcc/2015-07-14/build/./gcc/ -B/gcc/2015-07-14/install/x86_64-unknown-linux-gnu/bin/ -B/gcc/2015-07-14/install/x86_64-unknown-linux-gnu/lib/ -isystem /gcc/2015-07-14/install/x86_64-unknown-linux-gnu/include -isystem /gcc/2015-07-14/install/x86_64-unknown-linux-gnu/sys-include -g -O2 -O2 -g -O2 -DIN_GCC -fPIC -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fpic -mlong-double-80 -DUSE_ELF_SYMVER -g -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector -fpic -mlong-double-80 -DUSE_ELF_SYMVER -I. -I. -I../.././gcc -I/gcc/2015-07-14/gcc/libgcc -I/gcc/2015-07-14/gcc/libgcc/. -I/gcc/2015-07-14/gcc/libgcc/../gcc -I/gcc/2015-07-14/gcc/libgcc/../include -I/gcc/2015-07-14/gcc/libgcc/config/libbid -DENABLE_DECIMAL_BID_FORMAT -DHAVE_CC_TLS -DUSE_TLS -o unwind-sjlj.o -MT unwind-sjlj.o -MD -MP -MF unwind-sjlj.dep -fexceptions -c /gcc/2015-07-14/gcc/libgcc/unwind-sjlj.c -fvisibility=hidden -DHIDE_EXPORTS config.status: linking /gcc/2015-07-14/gcc/libgcc/config/i386/sfp-machine.h to sfp-machine.h /gcc/2015-07-14/build/./gcc/xgcc -B/gcc/2015-07-14/build/./gcc/ -B/gcc/2015-07-14/install/x86_64-unknown-linux-gnu/bin/ -B/gcc/2015-07-14/install/x86_64-unknown-linux-gnu/lib/ -isystem /gcc/2015-07-14/install/x86_64-unknown-linux-gnu/include -isystem /gcc/2015-07-14/install/x86_64-unknown-linux-gnu/sys-include -g -O2 -O2 -g -O2 -DIN_GCC -fPIC -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fpic -mlong-double-80 -DUSE_ELF_SYMVER -g -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector -fpic -mlong-double-80 -DUSE_ELF_SYMVER -I. -I. -I../.././gcc -I/gcc/2015-07-14/gcc/libgcc -I/gcc/2015-07-14/gcc/libgcc/. -I/gcc/2015-07-14/gcc/libgcc/../gcc -I/gcc/2015-07-14/gcc/libgcc/../include -I/gcc/2015-07-14/gcc/libgcc/config/libbid -DENABLE_DECIMAL_BID_FORMAT -DHAVE_CC_TLS -DUSE_TLS -o emutls.o -MT emutls.o -MD -MP -MF emutls.dep -fexceptions -c /gcc/2015-07-14/gcc/libgcc/emutls.c -fvisibility=hidden -DHIDE_EXPORTS /gcc/2015-07-14/build/./gcc/xgcc -B/gcc/2015-07-14/build/./gcc/ -B/gcc/2015-07-14/install/x86_64-unknown-linux-gnu/bin/ -B/gcc/2015-07-14/install/x86_64-unknown-linux-gnu/lib/ -isystem /gcc/2015-07-14/install/x86_64-unknown-linux-gnu/include -isystem /gcc/2015-07-14/install/x86_64-unknown-linux-gnu/sys-include -g -O2 -O2 -g -O2 -DIN_GCC -fPIC -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fpic -mlong-double-80 -DUSE_ELF_SYMVER -g -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector -fpic -mlong-double-80 -DUSE_ELF_SYMVER -I. -I. -I../.././gcc -I/gcc/2015-07-14/gcc/libgcc -I/gcc/2015-07-14/gcc/libgcc/. -I/gcc/2015-07-14/gcc/libgcc/../gcc -I/gcc/2015-07-14/gcc/libgcc/../include -I/gcc/2015-07-14/gcc/libgcc/config/libbid -DENABLE_DECIMAL_BID_FORMAT -DHAVE_CC_TLS -DUSE_TLS -o _muldi3_s.o -MT _muldi3_s.o -MD -MP -MF _muldi3_s.dep -DSHARED -DL_muldi3 -c /gcc/2015-07-14/gcc/libgcc/libgcc2.c

(2)

config.status: linking /gcc/2015-07-14/gcc/libgcc/gthr-posix.h to gthr-default.h /gcc/2015-07-14/build/./gcc/xgcc -B/gcc/2015-07-14/build/./gcc/ -B/gcc/2015-07-14/install/x86_64-unknown-linux-gnu/bin/ -B/gcc/2015-07-14/install/x86_64-unknown-linux-gnu/lib/ -isystem /gcc/2015-07-14/install/x86_64-unknown-linux-gnu/include -isystem /gcc/2015-07-14/install/x86_64-unknown-linux-gnu/sys-include -g -O2 -O2 -g -O2 -DIN_GCC -fPIC -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fpic -mlong-double-80 -DUSE_ELF_SYMVER -g -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector -fpic -mlong-double-80 -DUSE_ELF_SYMVER -I. -I. -I../.././gcc -I/gcc/2015-07-14/gcc/libgcc -I/gcc/2015-07-14/gcc/libgcc/. -I/gcc/2015-07-14/gcc/libgcc/../gcc -I/gcc/2015-07-14/gcc/libgcc/../include -I/gcc/2015-07-14/gcc/libgcc/config/libbid -DENABLE_DECIMAL_BID_FORMAT -DHAVE_CC_TLS -DUSE_TLS -o _negdi2_s.o -MT _negdi2_s.o -MD -MP -MF _negdi2_s.dep -DSHARED -DL_negdi2 -c /gcc/2015-07-14/gcc/libgcc/libgcc2.c

(3)

In file included from /gcc/2015-07-14/gcc/libgcc/libgcov-interface.c:27:0:
/gcc/2015-07-14/gcc/libgcc/gthr.h:148:26: fatal error: gthr-default.h: No such file or directory
compilation terminated.
Makefile:883: recipe for target '_gcov_reset.o' failed
make[3]: *** [_gcov_reset.o] Error 1
make[3]: *** Waiting for unfinished jobs....
config.status: executing default commands


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]