From db79ee42aa4ce246143fd292e083ad85441de20d Mon Sep 17 00:00:00 2001 From: Aleksandr Nogikh Date: Mon, 2 Dec 2024 16:28:50 +0100 Subject: 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. --- pkg/bisect/bisect.go | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) (limited to 'pkg/bisect/bisect.go') 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) { -- cgit mrf-deployment