From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id BDBA36E316 for ; Mon, 3 Feb 2020 12:01:16 +0000 (UTC) Date: Mon, 3 Feb 2020 14:01:03 +0200 From: Petri Latvala Message-ID: <20200203120103.GD25209@platvala-desk.ger.corp.intel.com> References: <20200202185649.4105689-1-chris@chris-wilson.co.uk> <20200203111344.GB25209@platvala-desk.ger.corp.intel.com> <158072891643.20090.13007450821769380286@skylake-alporthouse-com> <20200203115007.GC25209@platvala-desk.ger.corp.intel.com> <158073086877.20090.4222798174748260088@skylake-alporthouse-com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <158073086877.20090.4222798174748260088@skylake-alporthouse-com> Subject: Re: [igt-dev] [PATCH i-g-t] lib: Kill residual children at the end of a subtest List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Chris Wilson Cc: igt-dev@lists.freedesktop.org List-ID: On Mon, Feb 03, 2020 at 11:54:28AM +0000, Chris Wilson wrote: > Quoting Petri Latvala (2020-02-03 11:50:07) > > On Mon, Feb 03, 2020 at 11:21:56AM +0000, Chris Wilson wrote: > > > Quoting Petri Latvala (2020-02-03 11:13:44) > > > > On Sun, Feb 02, 2020 at 06:56:49PM +0000, Chris Wilson wrote: > > > > > Ensure that we tidy up all the excess children left behind by a failing > > > > > subtest, we do not want them loitering into the next! > > > > > > > > > > Signed-off-by: Chris Wilson > > > > > --- > > > > > lib/igt_core.c | 4 ++++ > > > > > 1 file changed, 4 insertions(+) > > > > > > > > > > diff --git a/lib/igt_core.c b/lib/igt_core.c > > > > > index a0bf29408..65c80fbba 100644 > > > > > --- a/lib/igt_core.c > > > > > +++ b/lib/igt_core.c > > > > > @@ -1362,6 +1362,10 @@ static void exit_subtest(const char *result) > > > > > > > > > > igt_terminate_spins(); > > > > > > > > > > + for (int c = 0; c < num_test_children; c++) > > > > > + kill(test_children[c], SIGKILL); > > > > > + num_test_children = 0; > > > > > > > > Are the children wait()ed for somewhere? > > > > > > Would be very hard to do from inside the dead subtest. We can leave them > > > as zombies, otherwise how long do you want to wait? As far as the CPU > > > side of things go, they will not make any further progress. > > > > igt_exit() does an assert that waitpid(-1, ...) errors with > > ECHILD. The exit handler that does call wait() only does it if > > num_test_children is nonzero. > > Hah. That doesn't work :) Since it doesn't wait, the children aren't > dead by that point. > > > All tests that fork stuff are already supposed to call > > igt_waitchildren(), right? Should we call igt_waitchildren_timeout() > > here instead, with a 1s timeout? Or __igt_waitchildren() after firing > > off some SIGKILLs. > > The test does call wait, but it has failed before it can do so. If only > we had some subtest closures :) Which test is that? All the tests I checked (a whopping two of them) follow the pattern of igt_fork(..) { .. } igt_waitchildren() -- Petri Latvala _______________________________________________ igt-dev mailing list igt-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/igt-dev