aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/bisect/bisect.go
diff options
context:
space:
mode:
authorAleksandr Nogikh <nogikh@google.com>2024-12-02 16:28:50 +0100
committerAleksandr Nogikh <nogikh@google.com>2024-12-03 09:29:37 +0000
commitdb79ee42aa4ce246143fd292e083ad85441de20d (patch)
tree8ef94927e33c3d38aeed15e876375e6d2b476a64 /pkg/bisect/bisect.go
parent0706496528cdecd6a01ca847e3deb0a223c425d8 (diff)
pkg/bisect: ignore irrelevant lost connection crashes
These have been the cause of too many invalid bisection results recently. This is the first step towards the more universal approach of #5414.
Diffstat (limited to 'pkg/bisect/bisect.go')
-rw-r--r--pkg/bisect/bisect.go22
1 files changed, 17 insertions, 5 deletions
diff --git a/pkg/bisect/bisect.go b/pkg/bisect/bisect.go
index e8f85c47f..73a1971c8 100644
--- a/pkg/bisect/bisect.go
+++ b/pkg/bisect/bisect.go
@@ -1014,12 +1014,24 @@ func mostFrequentReports(reports []*report.Report) (*report.Report, []crash.Type
func (env *env) isTransientError(rep *report.Report) bool {
// If we're not chasing a SYZFATAL error, ignore them.
// Otherwise it indicates some transient problem of the tested kernel revision.
- hadSyzFailure := false
- for _, t := range env.reportTypes {
- hadSyzFailure = hadSyzFailure || t == crash.SyzFailure
+ if rep.Type == crash.SyzFailure {
+ hadSyzFailure := false
+ for _, t := range env.reportTypes {
+ hadSyzFailure = hadSyzFailure || t == crash.SyzFailure
+ }
+ return len(env.reportTypes) > 0 && !hadSyzFailure
+ }
+ // Lost connection is a frequent source of flaky results.
+ // Ignore if it is was not in the canonical crash types set.
+ if rep.Type == crash.LostConnection {
+ hadLostConnection := false
+ for _, t := range env.reportTypes {
+ hadLostConnection = hadLostConnection || t == crash.LostConnection
+ }
+ return len(env.reportTypes) > 0 && !hadLostConnection
}
- return rep.Type == crash.SyzFailure &&
- len(env.reportTypes) > 0 && !hadSyzFailure
+ // All other errors are okay.
+ return false
}
func (env *env) saveDebugFile(hash string, idx int, data []byte) {