diff options
| author | Anton Lindqvist <anton@basename.se> | 2019-01-26 09:09:31 +0100 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2019-01-26 09:09:31 +0100 |
| commit | 66ff894ef51e506037882bd6e24e5cc5ec258448 (patch) | |
| tree | 6baa80b28e7ef17e0ff13d60f3644a9ab2e7a06d /pkg | |
| parent | ebf7a37c5bba2cd3884e0e05beb99714fbf432e7 (diff) | |
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
Diffstat (limited to 'pkg')
| -rw-r--r-- | pkg/report/openbsd.go | 15 | ||||
| -rw-r--r-- | pkg/report/openbsd_test.go | 9 |
2 files changed, 22 insertions, 2 deletions
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": { |
