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