aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/report/linux.go
diff options
context:
space:
mode:
authorAleksandr Nogikh <nogikh@google.com>2024-10-22 10:00:12 +0200
committerAleksandr Nogikh <nogikh@google.com>2024-10-22 12:58:59 +0000
commit95003e97d969ca5c4637325fdcb4f4b5757b5673 (patch)
tree48359e8cea28f936c59d9aa3d5208845dceaa44a /pkg/report/linux.go
parenta93682b3599755b030b6c0211c22e56f5e0848f1 (diff)
pkg/report: improve Bad page state parsing
Take a frame from the stack trace that is included in the bug report.
Diffstat (limited to 'pkg/report/linux.go')
-rw-r--r--pkg/report/linux.go18
1 files changed, 16 insertions, 2 deletions
diff --git a/pkg/report/linux.go b/pkg/report/linux.go
index 8a6cc7573..ca27c00e0 100644
--- a/pkg/report/linux.go
+++ b/pkg/report/linux.go
@@ -1330,6 +1330,7 @@ var linuxStackParams = &stackParams{
"__fortify_report",
"cleanup_srcu_struct",
"rhashtable_lookup",
+ "extract_(user|iter)_to_sg",
},
corruptedLines: []*regexp.Regexp{
// Fault injection stacks are frequently intermixed with crash reports.
@@ -1634,8 +1635,21 @@ var linuxOopses = append([]*oops{
alt: []string{"BUG: Dentry still in use [%[1]v of %[2]v]"},
},
{
- title: compile("BUG: Bad page state"),
- fmt: "BUG: Bad page state",
+ title: compile("BUG: Bad page (state|cache)"),
+ fmt: "BUG: Bad page %[1]v in %[2]v",
+ stack: &stackFmt{
+ // TODO: on arm64, for some reason we don't see the page origin backtrace.
+ // We see the stack trace where the bug was detected, but we consider it to be
+ // not sufficient to reliably group crashes.
+ // So Bad page reports on arm64 for now will end up marked as corrupted.
+ parts: []*regexp.Regexp{
+ compile(`page last allocated`),
+ parseStackTrace,
+ },
+ skip: []string{"(free|put|get|update|release)_page",
+ "free_unref", "^_*folio", "truncate_inode_pages",
+ "page_frag_free", "alloc", "vmap"},
+ },
},
{
title: compile("BUG: Bad page map"),