[Intel-gfx] [PATCH igt 20/24] lib/core: Don't leak dummyloads between subtests
Daniel Vetter
daniel at ffwll.ch
Tue Aug 15 08:01:55 UTC 2017
On Mon, Aug 14, 2017 at 09:18:44PM +0100, Chris Wilson wrote:
> 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 <chris at chris-wilson.co.uk>
> ---
> lib/igt_core.c | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/lib/igt_core.c b/lib/igt_core.c
> index ce8482a1..e96fd4e6 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 "igt_ftrace.h"
> #include "version.h"
> #include "config.h"
> @@ -1039,6 +1040,8 @@ static void exit_subtest(const char *result)
> (!__igt_plain_output) ? "\x1b[0m" : "");
> fflush(stdout);
>
> + igt_terminate_spin_batches();
Sounds like time for a subtest exit handler infrastructure?
On that, before I start typing: Can we make a simple assumption like:
- exit handler registered from fixture -> clean up in exit handler
- exit handler registered within subtest -> clean up at end of subtest
- do we need anything special for subtest_group?
I guess this also means that we need to properly stack exit handlers.
Sprinkling this all over manually doesn't really feel good ...
-Daniel
> +
> in_subtest = NULL;
> siglongjmp(igt_subtest_jmpbuf, 1);
> }
> @@ -1859,6 +1862,8 @@ static void call_exit_handlers(int sig)
> {
> int i;
>
> + igt_terminate_spin_batches();
> +
> if (!exit_handler_count) {
> return;
> }
> --
> 2.13.3
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
More information about the Intel-gfx
mailing list