Subject: 23.2; race condition in parallel building might lead to byte-compilation failure

From: Sven Joachim <[email-masked]>
Date: Sat, 14 Aug 2010 22:58:46 +0200

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
`----