diff options
| author | Florent Revest <revest@chromium.org> | 2023-07-19 18:04:08 +0200 |
|---|---|---|
| committer | Aleksandr Nogikh <nogikh@google.com> | 2023-07-26 09:45:29 +0000 |
| commit | 2a509c272e4ec35c770b5ec42f321e66ce525a11 (patch) | |
| tree | 00f6ce2796bfc5448e5fec3c997a068e35252022 /pkg | |
| parent | 71f8554dae7330f8cfa1b22775ebafdff2315623 (diff) | |
pkg/report: gather Go runtime bugs under one bug
When a "fatal error:" bug is reported, this usually means that syzkaller
itself had a memory corruption (except in the gVisor fuzzing case where
this could be an actual bug in gVisor)
Most likely, this is due to a kernel that went wild and corrupted the
syzkaller address space, but in that case the exact details of what part
of the runtime failed are rarely relevant.
This gathers all these go runtime errors under one umbrella so they are
easier to track. Except for gVisor on which the logic is kept the same
as existing.
Add three test cases to the linux reporting:
- 705 (equivalent to the current all/report/7) to make sure Go OOO are
suppressed (they have a different title now but still get suppressed)
- 706 (equivalent to the current all/report/8) to make sure that ALSA
"fatal errors" are not handled as Go fatal errors
- 707 (new) to make sure that reports like
https://syzkaller.appspot.com/bug?extid=3f00d7083c52713ba3b0 are
re-named to "go runtime error"
Diffstat (limited to 'pkg')
| -rw-r--r-- | pkg/report/akaros.go | 1 | ||||
| -rw-r--r-- | pkg/report/darwin.go | 1 | ||||
| -rw-r--r-- | pkg/report/freebsd.go | 1 | ||||
| -rw-r--r-- | pkg/report/fuchsia.go | 1 | ||||
| -rw-r--r-- | pkg/report/gvisor.go | 12 | ||||
| -rw-r--r-- | pkg/report/linux.go | 1 | ||||
| -rw-r--r-- | pkg/report/netbsd.go | 1 | ||||
| -rw-r--r-- | pkg/report/openbsd.go | 1 | ||||
| -rw-r--r-- | pkg/report/report.go | 25 | ||||
| -rw-r--r-- | pkg/report/testdata/gvisor/report/29 (renamed from pkg/report/testdata/all/report/7) | 0 | ||||
| -rw-r--r-- | pkg/report/testdata/linux/report/705 | 15 | ||||
| -rw-r--r-- | pkg/report/testdata/linux/report/706 (renamed from pkg/report/testdata/all/report/8) | 0 | ||||
| -rw-r--r-- | pkg/report/testdata/linux/report/707 | 6 |
13 files changed, 53 insertions, 12 deletions
diff --git a/pkg/report/akaros.go b/pkg/report/akaros.go index b097cc664..e212d608f 100644 --- a/pkg/report/akaros.go +++ b/pkg/report/akaros.go @@ -191,4 +191,5 @@ var akarosOopses = append([]*oops{ []*regexp.Regexp{}, crash.UnknownType, }, + &groupGoRuntimeErrors, }, commonOopses...) diff --git a/pkg/report/darwin.go b/pkg/report/darwin.go index 8b257b9bf..24ec74ab0 100644 --- a/pkg/report/darwin.go +++ b/pkg/report/darwin.go @@ -58,4 +58,5 @@ var darwinOopses = append([]*oops{ []*regexp.Regexp{}, crash.UnknownType, }, + &groupGoRuntimeErrors, }, commonOopses...) diff --git a/pkg/report/freebsd.go b/pkg/report/freebsd.go index b75135e18..99d87b29d 100644 --- a/pkg/report/freebsd.go +++ b/pkg/report/freebsd.go @@ -106,4 +106,5 @@ var freebsdOopses = append([]*oops{ []*regexp.Regexp{}, crash.UnknownType, }, + &groupGoRuntimeErrors, }, commonOopses...) diff --git a/pkg/report/fuchsia.go b/pkg/report/fuchsia.go index 157ae9a4a..c9d7a10c8 100644 --- a/pkg/report/fuchsia.go +++ b/pkg/report/fuchsia.go @@ -323,4 +323,5 @@ var zirconOopses = append([]*oops{ }, crash.UnknownType, }, + &groupGoRuntimeErrors, }, commonOopses...) diff --git a/pkg/report/gvisor.go b/pkg/report/gvisor.go index 268065e59..00c8e927c 100644 --- a/pkg/report/gvisor.go +++ b/pkg/report/gvisor.go @@ -170,4 +170,16 @@ var gvisorOopses = append([]*oops{ []*regexp.Regexp{}, crash.UnknownType, }, + { + []byte("fatal error:"), + []oopsFormat{ + { + title: compile("fatal error:(.*)"), + fmt: "fatal error:%[1]v", + noStackTrace: true, + }, + }, + []*regexp.Regexp{}, + crash.UnknownType, + }, }, commonOopses...) diff --git a/pkg/report/linux.go b/pkg/report/linux.go index 7e7ea0d89..fd63bf7e4 100644 --- a/pkg/report/linux.go +++ b/pkg/report/linux.go @@ -2457,4 +2457,5 @@ var linuxOopses = append([]*oops{ []*regexp.Regexp{}, crash.UnknownType, }, + &groupGoRuntimeErrors, }, commonOopses...) diff --git a/pkg/report/netbsd.go b/pkg/report/netbsd.go index 6097bbf4b..87509ac91 100644 --- a/pkg/report/netbsd.go +++ b/pkg/report/netbsd.go @@ -80,4 +80,5 @@ var netbsdOopses = append([]*oops{ []*regexp.Regexp{}, crash.UnknownType, }, + &groupGoRuntimeErrors, }, commonOopses...) diff --git a/pkg/report/openbsd.go b/pkg/report/openbsd.go index 67a2fc092..f4ea30e3f 100644 --- a/pkg/report/openbsd.go +++ b/pkg/report/openbsd.go @@ -168,4 +168,5 @@ var openbsdOopses = append([]*oops{ }, crash.UnknownType, }, + &groupGoRuntimeErrors, }, commonOopses...) diff --git a/pkg/report/report.go b/pkg/report/report.go index 24029d092..4bf0adead 100644 --- a/pkg/report/report.go +++ b/pkg/report/report.go @@ -804,18 +804,19 @@ var commonOopses = []*oops{ }, crash.UnknownType, }, - { - []byte("fatal error:"), - []oopsFormat{ - { - title: compile("fatal error:(.*)"), - fmt: "fatal error:%[1]v", - noStackTrace: true, - }, - }, - []*regexp.Regexp{ - compile("ALSA"), +} + +var groupGoRuntimeErrors = oops{ + []byte("fatal error:"), + []oopsFormat{ + { + title: compile("fatal error:"), + fmt: "go runtime error", + noStackTrace: true, }, - crash.UnknownType, }, + []*regexp.Regexp{ + compile("ALSA"), + }, + crash.UnknownType, } diff --git a/pkg/report/testdata/all/report/7 b/pkg/report/testdata/gvisor/report/29 index 69be284d9..69be284d9 100644 --- a/pkg/report/testdata/all/report/7 +++ b/pkg/report/testdata/gvisor/report/29 diff --git a/pkg/report/testdata/linux/report/705 b/pkg/report/testdata/linux/report/705 new file mode 100644 index 000000000..4557d1c6b --- /dev/null +++ b/pkg/report/testdata/linux/report/705 @@ -0,0 +1,15 @@ +TITLE: go runtime error +SUPPRESSED: Y + +runtime: out of memory: cannot allocate 1073741824-byte block (6446022656 in use) +fatal error: out of memory + +goroutine 1 [running]: +runtime.throw({0x4772bc?, 0x20000?}) + runtime/panic.go:1047 +0x5d fp=0xc000184e38 sp=0xc000184e08 pc=0x42ea1d +runtime.(*mcache).allocLarge(0xc0000b0a00?, 0x40000000, 0x1) + runtime/mcache.go:236 +0x178 fp=0xc000184e80 sp=0xc000184e38 pc=0x411318 +runtime.mallocgc(0x40000000, 0x46a9c0, 0x1) + runtime/malloc.go:1053 +0x4f7 fp=0xc000184ee8 sp=0xc000184e80 pc=0x40b157 + + diff --git a/pkg/report/testdata/all/report/8 b/pkg/report/testdata/linux/report/706 index 4b7e087b1..4b7e087b1 100644 --- a/pkg/report/testdata/all/report/8 +++ b/pkg/report/testdata/linux/report/706 diff --git a/pkg/report/testdata/linux/report/707 b/pkg/report/testdata/linux/report/707 new file mode 100644 index 000000000..b059e07ea --- /dev/null +++ b/pkg/report/testdata/linux/report/707 @@ -0,0 +1,6 @@ +TITLE: go runtime error + +fatal error: runtimer: bad p + +runtime stack: +fatal: bad g in signal handler
\ No newline at end of file |
