-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 06/02/2012 10:08 PM, Mike Frysinger wrote: > # @FUNCTION: _multijob_fork # @INTERNAL # @DESCRIPTION: # Do the > actual book keeping. _multijob_fork() { [[ $# -eq 1 ]] || die > "incorrect number of arguments" > > local ret=0 [[ $1 == "pre" ]] && : $(( ++mj_num_jobs )) if [[ > ${mj_num_jobs} -ge ${mj_max_jobs} ]] ; then multijob_finish_one > ret=$? fi [[ $1 == "post" ]] && : $(( ++mj_num_jobs )) return > ${ret} }
The "pre" logic seems wrong. Consider an initial state of mj_num_jobs=0 and mj_max_jobs=1. It will increment mj_num_jobs to 1, so [[ 1 -ge 1 ]] is true, and then call multijob_finish_one even though no jobs have started yet? Wouldn't that deadlock multijob_finish_one, as it waits for a reply from a job that doesn't exist yet? - -- Thanks, Zac -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.19 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAk/L4j4ACgkQ/ejvha5XGaPyuQCfSHRUHA1KoVc97yRZa8FlF+TS n04An1/c7IQaH4mqUtm8P305WKKDOgvE =EgJz -----END PGP SIGNATURE-----