| 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.