Re: Odd build breakage in 4.9-rc7

From: Jarod Wilson
Date: Thu Dec 01 2016 - 10:23:01 EST


On 2016-12-01 9:03 AM, Prarit Bhargava wrote:


On 11/30/2016 05:41 PM, Nicolas Pitre wrote:
On Wed, 30 Nov 2016, Linus Torvalds wrote:

On Wed, Nov 30, 2016 at 10:50 AM, Prarit Bhargava <prarit@xxxxxxxxxx> wrote:

It comes back. The steps to reproduce this are:

1. checkout latest linux.git
2. make -j112

(IOW, it occurs 100% of the time for me on a clean tree.)

I don't have access to such hardware where -j112 could ever make sense. :-)
In other words, I can't reproduce regardless of the -j value I try.

I suspect it's not new, it's just that you are able to hit the timing
just right (and the new include presumable makes that just be much
easier).

Here's the best fix I can think of. I can't convince myself any other
location would be 100% safe. Obviously I can't confirm if this actually
fixes anything.

----- >8
Subject: kbuild: make sure autoksyms.h exists early

Some people are able to trigger a race where autoksyms.h is used before
its empty version is even created. Let's create it at the same time as
the directory holding it is created.

Signed-off-by: Nicolas Pitre <nico@xxxxxxxxxx>

diff --git a/Makefile b/Makefile
index 694111b43c..9f9c3b577c 100644
--- a/Makefile
+++ b/Makefile
@@ -1019,8 +1019,6 @@ prepare2: prepare3 prepare-compiler-check outputmakefile asm-generic
prepare1: prepare2 $(version_h) include/generated/utsrelease.h \
include/config/auto.conf
$(cmd_crmodverdir)
- $(Q)test -e include/generated/autoksyms.h || \
- touch include/generated/autoksyms.h

archprepare: archheaders archscripts prepare1 scripts_basic

diff --git a/scripts/kconfig/Makefile b/scripts/kconfig/Makefile
index ebced77deb..90a091b6ae 100644
--- a/scripts/kconfig/Makefile
+++ b/scripts/kconfig/Makefile
@@ -35,6 +35,8 @@ nconfig: $(obj)/nconf

silentoldconfig: $(obj)/conf
$(Q)mkdir -p include/config include/generated
+ $(Q)test -e include/generated/autoksyms.h || \
+ touch include/generated/autoksyms.h
$< $(silent) --$@ $(Kconfig)

localyesconfig localmodconfig: $(obj)/streamline_config.pl $(obj)/conf


The testing was successful.

After testing an hour of builds with different -j values, I'm no longer seeing
any compile issues when this patch is applied. When I remove the patch the
compile error returns so I'm going to say that this patch fixed it.

Thanks again Nicolas.

Tested-by: Prarit Bhargava <prarit@xxxxxxxxxx>

Looks good here as well, can do parallel make w/o reverting Tony's patches again.

Tested-by: Jarod Wilson <jarod@xxxxxxxxxx>

--
Jarod Wilson
jarod@xxxxxxxxxx