aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/report/linux.go
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2020-07-07 12:04:22 +0200
committerDmitry Vyukov <dvyukov@google.com>2020-07-07 12:04:22 +0200
commit08fc4ef14dba2f94415f292691af61af28b71195 (patch)
treeb7ef18a8c0438692105878c2d424906d3c75375b /pkg/report/linux.go
parentf7b01f08a31f0ab533410a3ba3b74f781674e059 (diff)
pkg/report: make smp_call_function anchor instead of on_each_cpu
Right after committing the on_each_cpu change, another report come in where smp_call_function is not called from on_each_cpu. And there are actually more such callers in code, and also as existing tests show. smp_call_function seems to be the better root cause indication.
Diffstat (limited to 'pkg/report/linux.go')
-rw-r--r--pkg/report/linux.go8
1 files changed, 3 insertions, 5 deletions
diff --git a/pkg/report/linux.go b/pkg/report/linux.go
index d66350bd2..b480651f1 100644
--- a/pkg/report/linux.go
+++ b/pkg/report/linux.go
@@ -590,12 +590,10 @@ func linuxStallFrameExtractor(frames []string) (string, string) {
prev := frames[0]
for _, frame := range frames {
if matchesAny([]byte(frame), linuxStallAnchorFrames) {
- if strings.HasPrefix(frame, "on_each_cpu") {
+ if strings.Contains(frame, "smp_call_function") {
// In this case we want this function rather than the previous one
// (there can be several variations on the next one).
- // This one can also be called "on_each_cpu_cond",
- // normalize it to "on_each_cpu".
- prev = "on_each_cpu"
+ prev = "smp_call_function"
}
for _, prefix := range []string{
"__x64_",
@@ -723,7 +721,7 @@ var linuxStallAnchorFrames = []*regexp.Regexp{
compile("__fput"),
compile("task_work_run"),
compile("exit_to_usermode"),
- compile("on_each_cpu"),
+ compile("smp_call_function"),
}
// nolint: lll