[ this analysis is has been superseded by bug #820658 I filed against make ]
Hi, that bug made me curious. On Sun, 10 Apr 2016 10:54:35 +0200 =?UTF-8?B?TMOhc3psw7MgQsO2c3rDtnJtw6lueWkgKEdDUyk=?= <g...@debian.org> wrote: > On Sun, Apr 10, 2016 at 8:51 AM, Tobias Frost <t...@debian.org> wrote: > > Happened again :( > I'm out of ideas. :( Tried to reproduce it many-many times locally > without success. Upstream gave a possible idea and possible fix - then > I do step by step compilation of that part. It still fails randomly > even if it's rare. > May you have information on the kFreeBSD-386 buildd? CPU and memory, > but its average load may be enough alone. The (intersting part of the) diff between [GOOD] https://buildd.debian.org/status/fetch.php?pkg=vice&arch=kfreebsd-i386&ver=2.4.dfsg%2B2.4.26-1&stamp=1458846545 [BAD] https://buildd.debian.org/status/fetch.php?pkg=vice&arch=kfreebsd-i386&ver=2.4.dfsg%2B2.4.26-1%2Bb1&stamp=1460088757 starts with @@ -2959,12 +2990,6 @@ | sed -e '$s/\\$//') > POTFILES-t \ && chmod a-w POTFILES-t \ && mv POTFILES-t POTFILES ) -cd .. \ - && CONFIG_FILES=po/Makefile.in CONFIG_HEADERS= \ - /bin/sh ./config.status -config.status: creating po/Makefile.in -config.status: executing depfiles commands -config.status: executing default-1 commands make[2]: 'intl2po' is up to date. make[2]: Leaving directory '/«BUILDDIR»/vice-2.4.dfsg+2.4.26/po' /usr/bin/make trans-update -C po/ So po/POTFILES has been updated, but po/Makefile has not been regenerated, causing the future breakage due to an empty POTFILES variable. For some reason make thinks that po/Makefile does not need to be regenerated. Of course I could not reproduce that problem :-) But I'd suggest the following for further debugging: * drop try-to-fix-possible-race-condition.patch * collect some timestamps: override_dh_auto_build: ls -lart --time-style=full-iso po/Makefile* po/POTFILES* ./config.status $(MAKE) -C po POTFILES ls -lart --time-style=full-iso po/Makefile* po/POTFILES* ./config.status $(MAKE) -C po Makefile ls -lart --time-style=full-iso po/Makefile* po/POTFILES* ./config.status $(MAKE) trans-update -C po/ $(MAKE) -C po/ dh_auto_build This gave me -rwxr-xr-x 1 root root 5766 2016-03-19 18:18:06.000000000 +0000 po/POTFILES.in -rwxr-xr-x 1 root root 9299 2016-04-10 22:57:29.274942029 +0000 po/Makefile.in.in -rwxr-xr-x 1 root root 73531 2016-04-10 23:44:53.058631525 +0000 ./config.status -r--r--r-- 1 root root 6578 2016-04-10 23:45:36.118689433 +0000 po/POTFILES -rw-r--r-- 1 root root 9294 2016-04-10 23:45:36.262689626 +0000 po/Makefile.in -rw-r--r-- 1 root root 15872 2016-04-10 23:45:36.314689696 +0000 po/Makefile I don't think we have here a "race condition" by some kind of parallelism. I would more suspect a filesystem time resolution problem. Maybe even a bug in make itself. IIRC the file systems used by kfreebsd and hurd only have second resolution, while (most) Linux filesystems have (up to) nanosecond resolution. Andreas