aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/report/linux.go
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2018-12-30 10:04:42 +0100
committerDmitry Vyukov <dvyukov@google.com>2018-12-30 10:04:42 +0100
commit4ebd1f1e835dc6ee7a5bf44561eb68af9732874a (patch)
tree9787d316749b800436a8162a506148d3c3a0650a /pkg/report/linux.go
parent2ccf0adec3e674aae4c144c7357b3668e4266341 (diff)
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.
Diffstat (limited to 'pkg/report/linux.go')
-rw-r--r--pkg/report/linux.go7
1 files changed, 6 insertions, 1 deletions
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.