[igt-dev] [PATCH i-g-t] runner/resultgen: Explain why json creation might have failed
Arkadiusz Hiler
arkadiusz.hiler at intel.com
Tue Jun 9 14:21:37 UTC 2020
Sometimes creating the string representation fails. This usually happens
when we have a huge logs (e.g.: something was spamming the dmesg) or the
result generation was run on a very low-end system (e.g. embedded board
with 256 megs of RAM).
Sadly json-c call returns us NULL and provides no explanation
whatsoever. Let's fix a NULL pointer dereference in such cases and print
a mesage that should help people make sense out of what have just
happened.
Cc: Swati Sharma <swati2.sharma at intel.com>
Cc: Petri Latvala <petri.latvala at intel.com>
Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler at intel.com>
---
runner/resultgen.c | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/runner/resultgen.c b/runner/resultgen.c
index add4aad5..e2e162b0 100644
--- a/runner/resultgen.c
+++ b/runner/resultgen.c
@@ -1661,6 +1661,19 @@ bool generate_results(int dirfd)
}
json_string = json_object_to_json_string_ext(obj, JSON_C_TO_STRING_PRETTY);
+
+ if (json_string == NULL) {
+ fprintf(stderr, "resultgen: Failed to create json representation of the results.\n");
+ fprintf(stderr, " This usually means that the results are too big\n");
+ fprintf(stderr, " to fit in the memory as the text representation\n");
+ fprintf(stderr, " is being created.\n\n");
+ fprintf(stderr, " Either something was spamming the logs or your\n");
+ fprintf(stderr, " system is very low on free mem.\n");
+
+ close(resultsfd);
+ return false;
+ }
+
write(resultsfd, json_string, strlen(json_string));
close(resultsfd);
return true;
--
2.25.4
More information about the igt-dev
mailing list