8154326: bash >(...) construct causes race conditions
authorerikj
Fri, 22 Apr 2016 10:48:12 +0200
changeset 37410 fbab762803ef
parent 37409 b0afcd4282ae
child 37514 4f0dcae6666e
8154326: bash >(...) construct causes race conditions Reviewed-by: tbell, ihse
make/InitSupport.gmk
make/common/MakeBase.gmk
--- a/make/InitSupport.gmk	Thu Apr 21 13:36:00 2016 -0700
+++ b/make/InitSupport.gmk	Fri Apr 22 10:48:12 2016 +0200
@@ -331,7 +331,7 @@
   BUILD_LOG := $(OUTPUT_ROOT)/build.log
   BUILD_TRACE_LOG := $(OUTPUT_ROOT)/build-trace-time.log
 
-  BUILD_LOG_PIPE := > >($(TEE) -a $(BUILD_LOG)) 2> >($(TEE) -a $(BUILD_LOG) >&2)
+  BUILD_LOG_PIPE := > >($(TEE) -a $(BUILD_LOG)) 2> >($(TEE) -a $(BUILD_LOG) >&2) && wait
 
   # Sanity check the spec file, so it matches this source code
   define CheckSpecSanity
--- a/make/common/MakeBase.gmk	Thu Apr 21 13:36:00 2016 -0700
+++ b/make/common/MakeBase.gmk	Fri Apr 22 10:48:12 2016 +0200
@@ -706,10 +706,10 @@
 ExecuteWithLog = \
   $(call LogCmdlines, Exececuting: [$(strip $2)]) \
   $(call WriteFile, $2, $(strip $1).cmdline) \
-  ( $(strip $2) > >($(TEE) $(strip $1).log) 2> >($(TEE) $(strip $1).log >&2) || \
+  ( ( $(strip $2) > >($(TEE) $(strip $1).log) 2> >($(TEE) $(strip $1).log >&2) || \
       ( exitcode=$(DOLLAR)? && \
       $(CP) $(strip $1).log $(MAKESUPPORT_OUTPUTDIR)/failure-logs/$(subst /,_,$(patsubst $(BUILD_OUTPUT)/%,%,$(strip $1))).log && \
-      exit $(DOLLAR)exitcode ) )
+      exit $(DOLLAR)exitcode ) ) && wait )
 
 ################################################################################
 # Find lib dir for module