Summary: | Confusing Junk in the results: Last errno: 25, Inappropriate ioctl for device | ||
---|---|---|---|
Product: | DRI | Reporter: | Arek Hiler <arkadiusz.hiler> |
Component: | IGT | Assignee: | Default DRI bug account <dri-devel> |
Status: | RESOLVED FIXED | QA Contact: | |
Severity: | major | ||
Priority: | medium | CC: | arkadiusz.hiler, petri.latvala |
Version: | unspecified | ||
Hardware: | Other | ||
OS: | All | ||
Whiteboard: | |||
i915 platform: | i915 features: |
Description
Arek Hiler
2019-04-08 11:43:38 UTC
diff --git a/lib/igt_aux.c b/lib/igt_aux.c index 266aa832..b235b18c 100644 --- a/lib/igt_aux.c +++ b/lib/igt_aux.c @@ -984,8 +984,11 @@ void igt_debug_wait_for_keypress(const char *var) { struct termios oldt, newt; - if (!isatty(STDIN_FILENO)) + if (!isatty(STDIN_FILENO)) { + errno = 0; /* otherwise may be ENOTTY */ return; + } + if (!igt_interactive_debug) return; Found the culprit in this particular case. This would suppress most of the weird errno logged in kms tests. The questions is now: do we really want to hunt all similar cases down? A round of gdb through a couple of tests with 'watch errno' shows that it gets set to non-zero value about a dozen times every single subtest. Depending when we hit an assert we may get any of those printed out adding to confusion. I see 3 options: 1. make sure that errno is reset to 0 by everything that touches it and change my nickname to Sisyphus 2. get rid of printing errno in igt_assert(), but then lose valuable information for all those igt_assert(write(...)); 3. change igt_assert*(expr,...) macros so that they 'errno = 0;' before evaluating expr I think that 3 makes the most sense, then we can quickly go through all the 4000-ish of calls we have to make sure that we don't have any weird 'int ret = write(); igt_assert(ret);' for those functions where errno matters. There was a patch merged that resets errno in the few places where errno pollution is likely and in the few places where it may require resetting: commit a558c2e2405473f4157ca71638e5a111ebfa80d1 Author: Arkadiusz Hiler <arkadiusz.hiler@intel.com> Date: Tue Apr 9 17:21:41 2019 +0300 lib: Reset errno to 0 after isatty Since igt_assert family of functions logs last errno we get a lot of those: "Last errno: 25, Inappropriate ioctl for device" isatty() seems to be the biggest offender in that area, so this patch should limit amount of confusing messages significantly. Cc: Martin Peres <martin.peres@linux.intel.com> Cc: Petri Latvala <petri.latvala@intel.com> Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com> Reviewed-by: Petri Latvala <petri.latvala@intel.com> commit 02b1706e8b1ca93a53d4ef0f9c484a6f1a0d18f2 Author: Arkadiusz Hiler <arkadiusz.hiler@intel.com> Date: Thu Apr 4 16:17:40 2019 +0300 lib/igt_kms: Be more verbose about failure in kmstest_wait_for_pageflip First, we set errno to 0 before doing select() to avoid random pollution of the assert message with things like: "Last errno: 25, Inappropriate ioctl for device" Second, we log explicitly if we exceeded the timeout (ret == 0). Third, if we fail the select() we log that with some explanation. Cc: Petri Latvala <petri.latvala@intel.com> Cc: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com> Reviewed-by: Petri Latvala <petri.latvala@intel.com> |
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.