kdump/kdump-recover-from-missing-CRASHTIME.patch

50 lines
1.8 KiB
Diff

From: Petr Tesarik <ptesarik@suse.com>
Subject: Recover from missing CRASHTIME= in VMCOREINFO
References: bsc#1112387
Upstream: merged
Git-commit: 0bc94943a1df4d923aa20b9bd1ff01ed2e49d70c
CRASHTIME= may be missing in Xen Dom0 dumps.
Vmcoreinfo::getLLongValue throws an exception in that case, but then
OSRELEASE will not even be attempted. Consequently, kernel and
system map files are not copied, producing the following message:
INFO: Don't copy the kernel and System.map because of missing crash kernel release.
Signed-off-by: Petr Tesarik <ptesarik@suse.com>
---
kdumptool/savedump.cc | 20 +++++++++++++++-----
1 file changed, 15 insertions(+), 5 deletions(-)
--- a/kdumptool/savedump.cc
+++ b/kdumptool/savedump.cc
@@ -469,13 +469,23 @@ void SaveDump::fillVmcoreinfo()
{
Vmcoreinfo vm;
vm.readFromELF(m_dump.c_str());
- unsigned long long time = vm.getLLongValue("CRASHTIME");
+ unsigned long long crashtime;
- m_crashtime = Stringutil::formatUnixTime("%Y-%m-%d %H:%M (%z)", time);
+ try {
+ crashtime = vm.getLLongValue("CRASHTIME");
+ } catch (const KError &error) {
+ Debug::debug()->dbg("Error getting CRASHTIME: %s", error.what());
+ crashtime = time(NULL);
+ }
+ m_crashtime = Stringutil::formatUnixTime("%Y-%m-%d %H:%M (%z)", crashtime);
- // don't overwrite m_crashrelease from command line
- if (m_crashrelease.size() == 0)
- m_crashrelease = vm.getStringValue("OSRELEASE");
+ try {
+ // don't overwrite m_crashrelease from command line
+ if (m_crashrelease.size() == 0)
+ m_crashrelease = vm.getStringValue("OSRELEASE");
+ } catch (const KError &error) {
+ Debug::debug()->dbg("Error getting OSRELEASE: %s", error.what());
+ }
Debug::debug()->dbg("Using crashtime: %s, crashrelease: %s",
m_crashtime.c_str(), m_crashrelease.c_str());