From 51d87b80493169f68bf1cda0eb2f6715310fe45c Mon Sep 17 00:00:00 2001 From: Thomas Daniel Date: Mon, 19 Jan 2015 16:34:51 +0000 Subject: tests/prime_self_import: further fix object counts A previous commit: commit 2f2c491cf3167befe7c79e4b17afb4f6284dfc84 Author: Mika Kuoppala Date: Fri Mar 28 10:52:46 2014 +0200 lib/drmtest: don't dup quiescent fd introduced a regression for drm object leak checking. A following commit: commit 8741c2289f17e9bcb740a01cad4764a71c918eea Author: Mika Kuoppala Date: Wed May 7 16:46:19 2014 +0300 tests/gem_flink_race,prime_self_import: fix object counts fixed the regression for some cases but missed the export-vs-gem_close-race subtest. Note that test behaviour depends on whether the subtest is run as part of the whole prime_self_import test (fail), or as a single subtest (pass). Using execlists on Gen8+ reverses the pass/fail due to lazy context allocation which is presumably why this has now been noticed. This commit applies the same fix to the export-vs-gem_close-race subtest. Cc: Mika Kuoppala Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=87627 Signed-off-by: Thomas Daniel Reviewed-by: Mika Kuoppala Signed-off-by: Mika Kuoppala --- tests/prime_self_import.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'tests/prime_self_import.c') diff --git a/tests/prime_self_import.c b/tests/prime_self_import.c index 1eb5a04a..ded92cfc 100644 --- a/tests/prime_self_import.c +++ b/tests/prime_self_import.c @@ -342,15 +342,20 @@ static void test_export_close_race(void) int fd; int obj_count; void *status; + int fake; num_threads = sysconf(_SC_NPROCESSORS_ONLN); threads = calloc(num_threads, sizeof(pthread_t)); - fd = drm_open_any(); + /* Allocate exit handler fds in here so that we dont screw + * up the counts */ + fake = drm_open_any(); obj_count = get_object_count(); + fd = drm_open_any(); + for (i = 0; i < num_threads; i++) { r = pthread_create(&threads[i], NULL, thread_fn_export_vs_close, @@ -372,6 +377,9 @@ static void test_export_close_race(void) obj_count = get_object_count() - obj_count; igt_info("leaked %i objects\n", obj_count); + + close(fake); + igt_assert_eq(obj_count, 0); } -- cgit v1.2.3