From ea7015f1fabbdfdd52a145162c658d2e90161ec5 Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Wed, 9 Aug 2017 13:03:57 +0100 Subject: lib/core: Don't leak dummyloads between subtests If a test fails or skips early, it may not clean up after itself. In lieu of having a framework for test deconstructors, hook igt_terminate_spin_batches() into exit_subtest() itself so that we don't allow a recursive batch from an earlier test to leak into the next and cause an unexpected GPU hang. Similarly, we also want to terminate the dummyload as the first step in our atexit handlers (currently it is at the start of the last step) as some atexit handlers may be unwittingly exposed to dummyloads and so cause another wait on GPU hang. We trust that the core already distinguishes correctly between the principal test process and its children. Signed-off-by: Chris Wilson Cc: Tvrtko Ursulin Reviewed-by: Tvrtko Ursulin --- lib/igt_core.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'lib/igt_core.c') diff --git a/lib/igt_core.c b/lib/igt_core.c index 777687b5..558a538d 100644 --- a/lib/igt_core.c +++ b/lib/igt_core.c @@ -63,6 +63,7 @@ #include "intel_chipset.h" #include "intel_io.h" #include "igt_debugfs.h" +#include "igt_dummyload.h" #include "version.h" #include "config.h" @@ -994,6 +995,8 @@ static void exit_subtest(const char *result) (!__igt_plain_output) ? "\x1b[0m" : ""); fflush(stdout); + igt_terminate_spin_batches(); + in_subtest = NULL; siglongjmp(igt_subtest_jmpbuf, 1); } @@ -1817,6 +1820,8 @@ static void call_exit_handlers(int sig) { int i; + igt_terminate_spin_batches(); + if (!exit_handler_count) { return; } -- cgit v1.2.3