aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Steuck <greg@nest.cx>2022-08-29 11:29:55 +0200
committerAleksandr Nogikh <wp32pw@gmail.com>2022-08-29 12:35:14 +0200
commitf1bbaaa0bb2a52a3bebb2ac75527a795a8d41a72 (patch)
tree70fc9e3efb986fa162a92fc1c9337c7c5a55d356
parent071779164d7640bc97cdb04864e59dbb91db6469 (diff)
pkg/report: use `show panic` output for unscrambled panic message
The original panic: is printed without logging and is often garbled by concurrent printing by another core. OTOH, `show panic` is printed exclusively so we prefer to use that.
-rw-r--r--pkg/report/openbsd.go4
-rw-r--r--pkg/report/testdata/openbsd/report/3730
2 files changed, 34 insertions, 0 deletions
diff --git a/pkg/report/openbsd.go b/pkg/report/openbsd.go
index dc2970c76..13e5a5136 100644
--- a/pkg/report/openbsd.go
+++ b/pkg/report/openbsd.go
@@ -40,6 +40,10 @@ var openbsdOopses = append([]*oops{
[]byte("panic:"),
[]oopsFormat{
{
+ title: compile(`\nddb\{\d+\}> show panic(?Us:.*)[*]cpu\d+: ([^\n]+)(?Us:.*)\nddb\{\d+\}> trace`),
+ fmt: "panic: %[1]v",
+ },
+ {
title: compile("panic: kernel diagnostic assertion (.+) failed: file \".*/([^\"]+)"),
fmt: "assert %[1]v failed in %[2]v",
},
diff --git a/pkg/report/testdata/openbsd/report/37 b/pkg/report/testdata/openbsd/report/37
new file mode 100644
index 000000000..e71392d5e
--- /dev/null
+++ b/pkg/report/testdata/openbsd/report/37
@@ -0,0 +1,30 @@
+TITLE: panic: vop_generic_badop
+
+panic: vop_generic_bapdoapn
+iStopped at db_enter+0x18: addq $0x8,%rsp
+ TID PID UID PRFLAGS PFLAGS CPU COMMAND
+ 398284 22754 0 0 0x4000000 1 syz-executor.5
+*248934 9887 0 0x2 0 0 syz-executor.7
+db_enter() at db_enter+0x18
+panic(ffffffff8259599b) at panic+0x177
+vop_generic_badop(ffff80002b00e378) at vop_generic_badop+0x1b
+VOP_STRATEGY(fffffd807ba95960,fffffd807bc216c8) at VOP_STRATEGY+0x9b
+bwrite(fffffd807bc216c8) at bwrite+0x1f0
+VOP_BWRITE(fffffd807bc216c8) at VOP_BWRITE+0x4a
+ufs_mkdir(ffff80002b00e610) at ufs_mkdir+0x6b4
+VOP_MKDIR(fffffd8069ea92c8,ffff80002b00e770,ffff80002b00e7a0,ffff80002b00e6a0) at VOP_MKDIR+0xbf
+domkdirat(ffff8000212f47f0,ffffff9c,7f7fffff5050,1ff) at domkdirat+0x121
+syscall(ffff80002b00e920) at syscall+0x435
+Xsyscall() at Xsyscall+0x128
+end of kernel
+end trace frame: 0x7f7fffff50c0, count: 4
+https://www.openbsd.org/ddb.html describes the minimum info required in bug
+reports. Insufficient info makes it difficult to find and fix bugs.
+ddb{0}>
+ddb{0}> set $lines = 0
+ddb{0}> set $maxwidth = 0
+ddb{0}> show panic
+*cpu0: vop_generic_badop
+ cpu1: kernel diagnostic assertion "!_kernel_lock_held()" failed: file "/syzkaller/managers/multicore/kernel/sys/kern/kern_fork.c", line 676
+ddb{0}> trace
+db_enter() at db_enter+0x18