aboutsummaryrefslogtreecommitdiffstats
path: root/pkg
diff options
context:
space:
mode:
authorFlorent Revest <revest@chromium.org>2023-07-19 18:04:08 +0200
committerAleksandr Nogikh <nogikh@google.com>2023-07-26 09:45:29 +0000
commit2a509c272e4ec35c770b5ec42f321e66ce525a11 (patch)
tree00f6ce2796bfc5448e5fec3c997a068e35252022 /pkg
parent71f8554dae7330f8cfa1b22775ebafdff2315623 (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.go1
-rw-r--r--pkg/report/darwin.go1
-rw-r--r--pkg/report/freebsd.go1
-rw-r--r--pkg/report/fuchsia.go1
-rw-r--r--pkg/report/gvisor.go12
-rw-r--r--pkg/report/linux.go1
-rw-r--r--pkg/report/netbsd.go1
-rw-r--r--pkg/report/openbsd.go1
-rw-r--r--pkg/report/report.go25
-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/70515
-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/7076
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