diff options
| author | Aleksandr Nogikh <nogikh@google.com> | 2024-04-10 11:34:12 +0200 |
|---|---|---|
| committer | Aleksandr Nogikh <nogikh@google.com> | 2024-04-10 10:01:23 +0000 |
| commit | 20a08e76bdb980262f5760bd4fb61bdf80588edb (patch) | |
| tree | 830ae0d934d585b9b2e7237cc6fb88e5980deb88 /pkg/report/linux.go | |
| parent | f532fe426046975c460a0b19625dc730100fbd0e (diff) | |
pkg/report: add more assertions
It should hopefully help debug #4198.
Diffstat (limited to 'pkg/report/linux.go')
| -rw-r--r-- | pkg/report/linux.go | 17 |
1 files changed, 17 insertions, 0 deletions
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 } |
