aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/report/linux.go
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2022-10-02 13:35:55 +0200
committerDmitry Vyukov <dvyukov@google.com>2022-10-04 10:53:17 +0200
commit2b1c88827ab90892e2437a0054b16587defe089e (patch)
tree1802b8791021de454ca70feb99a61d1c064c1220 /pkg/report/linux.go
parentcf4bf0b8b145eb256d10861a5f1ed3e4c6a37c2f (diff)
pkg/report: improve parsing of "nested lock was not taken"
Parse the stack trace for the WARNING since the guilty frame is not necessary the first one. Skip iput/ihold functions. They are called dozens of times throughout the kernel and the bug is more likely to be in the caller.
Diffstat (limited to 'pkg/report/linux.go')
-rw-r--r--pkg/report/linux.go9
1 files changed, 6 insertions, 3 deletions
diff --git a/pkg/report/linux.go b/pkg/report/linux.go
index 57d2ad10a..5626c0569 100644
--- a/pkg/report/linux.go
+++ b/pkg/report/linux.go
@@ -1206,6 +1206,9 @@ var linuxStackParams = &stackParams{
"^crc\\d+",
"__might_resched",
"assertfail",
+ "^iput$",
+ "^iput_final$",
+ "^ihold$",
},
corruptedLines: []*regexp.Regexp{
// Fault injection stacks are frequently intermixed with crash reports.
@@ -1634,9 +1637,9 @@ var linuxOopses = append([]*oops{
fmt: "WARNING: still has locks held in %[1]v",
},
{
- title: compile("WARNING: Nested lock was not taken"),
- report: compile("WARNING: Nested lock was not taken(?:.*\\n)+?.*at: {{FUNC}}"),
- fmt: "WARNING: nested lock was not taken in %[1]v",
+ title: compile("WARNING: Nested lock was not taken"),
+ fmt: "WARNING: nested lock was not taken in %[1]v",
+ stack: warningStackFmt(),
},
{
title: compile("WARNING: lock held when returning to user space"),