[igt-dev] [PATCH i-g-t 1/2] runner/resultgen: relax results processing
Petri Latvala
adrinael at adrinael.net
Wed Mar 1 13:25:59 UTC 2023
On Tue, Feb 28, 2023 at 10:25:37PM +0100, Kamil Konieczny wrote:
> We observed problems with resume runs when one of tests from
> run fail to respond to SIGKILL and then don't exits, which
> was reported like:
>
> [1415.815247] Child refuses to die, tainted 0x40. Aborting.
>
> After machine was rebooted runs were resumed but at the end
> results from run wasn't processed due to error at comms file
> from failed test. Try to correct that behaviour and count
> results if at least one of files (comms or log) or dmesg was
> successfully processed and fail only when both fail. Also
> print more detailed info about what failed.
What is the comms file error? Are the logs from that run available
somewhere?
--
Petri Latvala
>
> Cc: Petri Latvala <adrinael at adrinael.net>
> Signed-off-by: Kamil Konieczny <kamil.konieczny at linux.intel.com>
> ---
> runner/resultgen.c | 14 +++++++++++---
> 1 file changed, 11 insertions(+), 3 deletions(-)
>
> diff --git a/runner/resultgen.c b/runner/resultgen.c
> index b00bb6ba..ddc2098e 100644
> --- a/runner/resultgen.c
> +++ b/runner/resultgen.c
> @@ -2133,7 +2133,6 @@ static bool parse_test_directory(int dirfd,
> if (commsparsed == COMMSPARSE_ERROR) {
> fprintf(stderr, "Error parsing output files (comms)\n");
> status = false;
> - goto parse_output_end;
> }
>
> if (commsparsed == COMMSPARSE_EMPTY) {
> @@ -2147,14 +2146,22 @@ static bool parse_test_directory(int dirfd,
> !fill_from_output(fds[_F_ERR], entry->binary, "err", &subtests, results->tests)) {
> fprintf(stderr, "Error parsing output files (out.txt, err.txt)\n");
> status = false;
> - goto parse_output_end;
> }
> }
>
> if (!fill_from_dmesg(fds[_F_DMESG], settings, entry->binary, &subtests, results->tests)) {
> fprintf(stderr, "Error parsing output files (dmesg.txt)\n");
> + if (!status) {
> + fprintf(stderr, "resultgen: Error parsing output files and dmesg.txt, bail out\n");
> + goto parse_output_end;
> + }
> +
> status = false;
> - goto parse_output_end;
> + }
> +
> + if (!status) {
> + fprintf(stderr, "resultgen: Warning: results may be incomplete for %s\n", entry->binary);
> + status = true;
> }
>
> override_results(entry->binary, &subtests, results->tests);
> @@ -2302,6 +2309,7 @@ struct json_object *generate_results_json(int dirfd)
>
> if (!parse_test_directory(testdirfd, &job_list.entries[i], &settings, &results)) {
> close(testdirfd);
> + fprintf(stderr, "resultgen: Cannot parse results for: %s testname: %s\n", name, job_list.entries[i].binary);
> return NULL;
> }
> close(testdirfd);
> --
> 2.37.2
>
More information about the igt-dev
mailing list