Subject: 23.2; race condition in parallel building might lead to byte-compilation failure
From: Sven Joachim <[email-masked]>
To: [email-masked]
Date: Sat, 14 Aug 2010 22:58:46 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

In bootstrapping, consider the situation where bar.el does
(require 'foo).  It usually does not matter whether bar.el or foo.el are
compiled first, but if they are built in parallel there is a window
where foo.elc is half written, and then byte-compiling bar.el will fail
(or worse, be misbuilt).

If that sounds unlikely because write-region is usually fast: it just
happened for the emacs23 Debian package on amd64 (with "make -j 4"), see
https://buildd.debian.org/fetch.cgi?pkg=emacs23&arch=amd64&ver=23.2%2B1-3&stamp=1281813034&file=log.
The relevant excerpt follows:

,----
| In gnus-summary-limit-to-bodies:
| gnus-sum.el:8359:57:Warning: `save-excursion' defeated by `set-buffer'
| Wrote /build/buildd-emacs23_23.2+1-3-amd64-ofeZOD/emacs23-23.2+1/debian/build-nox/lisp/gnus/gnus-win.elc
| Compiling /build/buildd-emacs23_23.2+1-3-amd64-ofeZOD/emacs23-23.2+1/debian/build-nox/lisp/gnus/gnus.el
| 
| In toplevel form:
| gnus/gnus-vm.el:36:1:Error: Required feature `gnus-sum' was not provided
| make[3]: *** [/build/buildd-emacs23_23.2+1-3-amd64-ofeZOD/emacs23-23.2+1/debian/build-nox/lisp/gnus/gnus-vm.elc] Error 1
| make[3]: *** Waiting for unfinished jobs....
| Wrote /build/buildd-emacs23_23.2+1-3-amd64-ofeZOD/emacs23-23.2+1/debian/build-nox/lisp/gnus/gnus-sum.elc
`----