[PATCH] xlat: avoid fork bombing the build system

Mike Frysinger vapier at gentoo.org
Thu Feb 26 23:06:16 UTC 2015


When there were fewer xlat headers, this didn't matter as much.
But now with >200, trying to run them all in parallel can easily
fork bomb smaller systems.

* xlat/gen.sh (main): Do not more jobs than # of cpus.
---
 xlat/gen.sh | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/xlat/gen.sh b/xlat/gen.sh
index 1484fb5..921f9fe 100755
--- a/xlat/gen.sh
+++ b/xlat/gen.sh
@@ -147,6 +147,8 @@ main()
 	local input="$1"
 	local output="$2"
 	local name
+	local jobs=0
+	local ncpus=$(getconf _NPROCESSORS_ONLN)
 
 	if [ -d "${input}" ]; then
 		local f names=
@@ -156,6 +158,11 @@ main()
 			name=${name%.in}
 			gen_header "${f}" "${output}/${name}.h" "${name}" &
 			names="${names} ${name}"
+			: $(( jobs += 1 ))
+			if [ ${jobs} -ge ${ncpus} ]; then
+				jobs=0
+				wait
+			fi
 		done
 		gen_git "${output}/.gitignore" ${names}
 		gen_make "${output}/Makemodule.am" ${names}
-- 
2.3.0





More information about the Strace-devel mailing list