From 66ff894ef51e506037882bd6e24e5cc5ec258448 Mon Sep 17 00:00:00 2001 From: Anton Lindqvist Date: Sat, 26 Jan 2019 09:09:31 +0100 Subject: openbsd: more witness handling * pkg/report: symbolize witness trace on OpenBSD * vm/vmimpl: show witness locks on panic * vm/vmimpl: show memory stats on panic * fixup! pkg/report: symbolize witness trace on OpenBSD --- pkg/report/openbsd.go | 15 +++++++++++++-- pkg/report/openbsd_test.go | 9 +++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) (limited to 'pkg') diff --git a/pkg/report/openbsd.go b/pkg/report/openbsd.go index b821398b6..a88da33d2 100644 --- a/pkg/report/openbsd.go +++ b/pkg/report/openbsd.go @@ -25,7 +25,12 @@ type openbsd struct { } var ( - openbsdSymbolizeRe = regexp.MustCompile(` at ([A-Za-z0-9_]+)\+0x([0-9a-f]+)`) + openbsdSymbolizeRe = []*regexp.Regexp{ + // stack + regexp.MustCompile(` at ([A-Za-z0-9_]+)\+0x([0-9a-f]+)`), + // witness + regexp.MustCompile(`#[0-9]+ +([A-Za-z0-9_]+)\+0x([0-9a-f]+)`), + } ) func ctorOpenbsd(target *targets.Target, kernelSrc, kernelObj string, @@ -93,7 +98,13 @@ func (ctx *openbsd) Symbolize(rep *Report) error { func (ctx *openbsd) symbolizeLine(symbFunc func(bin string, pc uint64) ([]symbolizer.Frame, error), line []byte) []byte { - match := openbsdSymbolizeRe.FindSubmatchIndex(line) + var match []int + for _, re := range openbsdSymbolizeRe { + match = re.FindSubmatchIndex(line) + if match != nil { + break + } + } if match == nil { return line } diff --git a/pkg/report/openbsd_test.go b/pkg/report/openbsd_test.go index f4adaac57..e8fc7dfe3 100644 --- a/pkg/report/openbsd_test.go +++ b/pkg/report/openbsd_test.go @@ -31,6 +31,15 @@ func TestOpenbsdSymbolizeLine(t *testing.T) { "foo(ffffffff,ffffffff) at foo+0x1e", "foo(ffffffff,ffffffff) at foo+0x1e", }, + // Witness symbolization. + { + "#4 closef+0xaf\n", + "#4 closef+0xaf kern_descrip.c:1241\n", + }, + { + "#10 closef+0xaf\n", + "#10 closef+0xaf kern_descrip.c:1241\n", + }, } symbols := map[string][]symbolizer.Symbol{ "closef": { -- cgit mrf-deployment