On Fri, 2010-05-14 at 07:35 -0400, Jinxin Zheng wrote: > In a client control file calling a lot of times of job.run_test(), the > system's pid_max could be reached and the pids are recycled for the > tests run in child processes, causing the parent process mistakenly > determines the status of the child test. > > This change fixes the problem by renaming the serialized > client/results/default/debug/error-pid file so that they are not seen by > the parent process after first use.
LGTM, see thread "client control test has problem with recycled process-ids". Commited as http://autotest.kernel.org/changeset/4501 > Signed-off-by: Jinxin Zheng <[email protected]> > --- > client/bin/parallel.py | 12 +++++++++++- > 1 files changed, 11 insertions(+), 1 deletions(-) > > diff --git a/client/bin/parallel.py b/client/bin/parallel.py > index cae897f..1ecc75f 100644 > --- a/client/bin/parallel.py > +++ b/client/bin/parallel.py > @@ -51,7 +51,17 @@ def fork_start(tmp, l): > def _check_for_subprocess_exception(temp_dir, pid): > ename = temp_dir + "/debug/error-%d" % pid > if os.path.exists(ename): > - raise pickle.load(file(ename, 'r')) > + e = pickle.load(file(ename, 'r')) > + # rename the error-pid file so that they do not affect later child > + # processes that use recycled pids. > + i = 0 > + while True: > + pename = ename + ('-%d' % i) > + i += 1 > + if not os.path.exists(pename): > + break > + os.rename(ename, pename) > + raise e > > > def fork_waitfor(tmp, pid): _______________________________________________ Autotest mailing list [email protected] http://test.kernel.org/cgi-bin/mailman/listinfo/autotest
