From 20a08e76bdb980262f5760bd4fb61bdf80588edb Mon Sep 17 00:00:00 2001 From: Aleksandr Nogikh Date: Wed, 10 Apr 2024 11:34:12 +0200 Subject: pkg/report: add more assertions It should hopefully help debug #4198. --- pkg/report/linux.go | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'pkg/report/linux.go') diff --git a/pkg/report/linux.go b/pkg/report/linux.go index ad3557a0e..8d44893f9 100644 --- a/pkg/report/linux.go +++ b/pkg/report/linux.go @@ -376,7 +376,14 @@ func (ctx *linux) Symbolize(rep *Report) error { } } + oldLen := len(rep.Report) rep.Report = ctx.decompileOpcodes(rep.Report, rep) + if len(rep.Report) > 0 && rep.reportPrefixLen > len(rep.Report) { + // An attempt to catch #4198. + panic(fmt.Sprintf("invalid reportPrefixLen (%d) after decompileOpcodes, report len: %d -> %d, report: %+v", + rep.reportPrefixLen, oldLen, len(rep.Report), rep, + )) + } // Skip getting maintainers for Android fuzzing since the kernel source // directory structure is different. @@ -415,8 +422,18 @@ func (ctx *linux) symbolize(rep *Report) error { } symbolized = append(symbolized, newLine...) } + oldLen := len(rep.Report) rep.Report = symbolized + oldPrefixLen := rep.reportPrefixLen rep.reportPrefixLen = prefix + + if len(rep.Report) > 0 && rep.reportPrefixLen > len(rep.Report) { + // An attempt to catch #4198. + panic(fmt.Sprintf("invalid reportPrefixLen after symbolize: prefix %d -> %d,"+ + "report len: %d -> %d, report: %+v", + oldPrefixLen, rep.reportPrefixLen, oldLen, len(rep.Report), rep, + )) + } return nil } -- cgit mrf-deployment