[ABRT PATCH 1/2] a-a-a-vmcore: save kernel version in 'kernel' file
Jakub Filak
jfilak at redhat.com
Mon May 27 12:14:11 UTC 2013
Related to rhbz#921949
Signed-off-by: Jakub Filak <jfilak at redhat.com>
---
src/plugins/abrt-action-analyze-vmcore.in | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)
diff --git a/src/plugins/abrt-action-analyze-vmcore.in b/src/plugins/abrt-action-analyze-vmcore.in
index c3f2e2e..c78ba03 100644
--- a/src/plugins/abrt-action-analyze-vmcore.in
+++ b/src/plugins/abrt-action-analyze-vmcore.in
@@ -131,3 +131,27 @@ if __name__ == "__main__":
backtrace_file = open("backtrace", "w")
dump_oops = Popen(["abrt-dump-oops", "-o", "kernel_log"], stdout=backtrace_file, bufsize=-1)
backtrace_file.close()
+
+ ret = dump_oops.wait()
+ if ret != RETURN_OK:
+ sys.exit(ret)
+
+ ret = RETURN_FAILURE
+ # Save kernel version in 'kernel' file (FILENAME_KERNEL)
+ # The code below expects that abrt-dump-oops generates file in the following format:
+ # <empty line>
+ # Version: 3.8.5-201.fc18.x86_64
+ # <oops data>
+ # <EOF>
+ with open("backtrace", "r") as backtrace_file:
+ for line in backtrace_file:
+ # Please excuse the magic constant 9 => len('Version: '). This construction is more readable for me.
+ if line[:9] == "Version: ":
+ with open("kernel", "w") as kernel_file:
+ kernel_file.write(line[9:].rstrip())
+ ret = RETURN_OK # set OK only if it was successfully written
+ break # break the loop, we support only one oops per vmcore
+ if ret != RETURN_OK:
+ print _("Garbled abrt-dump-oops output format. Can't find kernel version.");
+
+ sys.exit(ret)
--
1.8.1.4
More information about the Crash-catcher
mailing list