From 1fc0e782d56af4df3f21560929176a09103923ad Mon Sep 17 00:00:00 2001 From: Martin Milata Date: Tue, 4 Nov 2014 16:51:24 +0100 Subject: [PATCH] koops: improve 'reason' text for page faults Current : 'general protection fault: 4000 [#1] SMP' Improved: 'general protection fault in i915_gem_do_execbuffer' Resolves rhbz#998887. Signed-off-by: Martin Milata --- src/plugins/oops-utils.c | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/plugins/oops-utils.c b/src/plugins/oops-utils.c index 9e2355e..ea6c639 100644 --- a/src/plugins/oops-utils.c +++ b/src/plugins/oops-utils.c @@ -12,6 +12,8 @@ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. */ +#include + #include "oops-utils.h" #include "libabrt.h" @@ -242,8 +244,24 @@ void abrt_oops_save_data_in_dump_dir(struct dump_dir *dd, char *oops, const char // TODO: add "Kernel oops: " prefix, so that all oopses have recognizable FILENAME_REASON? // kernel oops 1st line may look quite puzzling otherwise... - strchrnul(second_line, '\n')[0] = '\0'; - dd_save_text(dd, FILENAME_REASON, second_line); + char *reason_pretty = NULL; + char *error = NULL; + struct sr_stacktrace *trace = sr_stacktrace_parse(SR_REPORT_KERNELOOPS, second_line, &error); + if (trace) + { + reason_pretty = sr_stacktrace_get_reason(trace); + sr_stacktrace_free(trace); + } + else + free(error); + + if (reason_pretty) + { + dd_save_text(dd, FILENAME_REASON, reason_pretty); + free(reason_pretty); + } + else + dd_save_text(dd, FILENAME_REASON, second_line); } int abrt_oops_signaled_sleep(int seconds) -- 2.1.0