We are not nice parents and would sacrifice any one of our children so
that the core process can report the failure neatly.

Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk>
---
 lib/igt_core.c | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)

diff --git a/lib/igt_core.c b/lib/igt_core.c
index e292ca24c..2bee0831b 100644
--- a/lib/igt_core.c
+++ b/lib/igt_core.c
@@ -564,17 +564,27 @@ static void print_usage(const char *help_str, bool 
output_on_stderr)
                fprintf(f, "%s\n", help_str);
 }
 
-
 static void oom_adjust_for_doom(void)
 {
+       const char always_kill[] = "900"; /* leave room for children! */
        int fd;
-       const char always_kill[] = "1000";
 
        fd = open("/proc/self/oom_score_adj", O_WRONLY);
        igt_assert(fd != -1);
        igt_assert(write(fd, always_kill, sizeof(always_kill)) == 
sizeof(always_kill));
        close(fd);
+}
 
+static void oom_adjust_for_greater_doom(void)
+{
+       const char always_kill[] = "1000";
+       int fd;
+
+       fd = open("/proc/self/oom_score_adj", O_WRONLY);
+       if (fd != -1) {
+               igt_ignore_warn(write(fd, always_kill, sizeof(always_kill)));
+               close(fd);
+       }
 }
 
 #ifdef HAVE_GLIB
@@ -1618,7 +1628,7 @@ bool __igt_fork_helper(struct igt_helper_process *proc)
                igt_assert(0);
        case 0:
                reset_helper_process_list();
-               oom_adjust_for_doom();
+               oom_adjust_for_greater_doom();
 
                return true;
        default:
@@ -1721,7 +1731,7 @@ bool __igt_fork(void)
                test_child = true;
                exit_handler_count = 0;
                reset_helper_process_list();
-               oom_adjust_for_doom();
+               oom_adjust_for_greater_doom();
 
                return true;
        default:
-- 
2.17.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to