From 4ebd1f1e835dc6ee7a5bf44561eb68af9732874a Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Sun, 30 Dec 2018 10:04:42 +0100 Subject: pkg/report: improve double fault parsing Ignore double faults as start of a second report. Double fault can happen during handling of paging faults if memory is badly corrupted. Also it usually happens synchronously, which means that maybe the report is not corrupted. But of course it can come from another CPU as well. Add more interesting test cases. --- pkg/report/linux.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'pkg/report/linux.go') diff --git a/pkg/report/linux.go b/pkg/report/linux.go index 76a090195..411f91867 100644 --- a/pkg/report/linux.go +++ b/pkg/report/linux.go @@ -87,8 +87,13 @@ func ctorLinux(target *targets.Target, kernelSrc, kernelObj string, ignores []*r // These pattern do _not_ start a new report, i.e. can be in a middle of another report. ctx.reportStartIgnores = []*regexp.Regexp{ compile(`invalid opcode: 0000`), - compile(`Kernel panic - not syncing: panic_on_warn set`), + compile(`Kernel panic - not syncing`), compile(`unregister_netdevice: waiting for`), + // Double fault can happen during handling of paging faults + // if memory is badly corrupted. Also it usually happens + // synchronously, which means that maybe the report is not corrupted. + // But of course it can come from another CPU as well. + compile(`PANIC: double fault`), } // These pattern math kernel reports which are not bugs in itself but contain stack traces. // If we see them in the middle of another report, we know that the report is potentially corrupted. -- cgit mrf-deployment