aboutsummaryrefslogtreecommitdiffstats
path: root/pkg
diff options
context:
space:
mode:
authorAnton Lindqvist <anton@basename.se>2019-01-26 09:09:31 +0100
committerDmitry Vyukov <dvyukov@google.com>2019-01-26 09:09:31 +0100
commit66ff894ef51e506037882bd6e24e5cc5ec258448 (patch)
tree6baa80b28e7ef17e0ff13d60f3644a9ab2e7a06d /pkg
parentebf7a37c5bba2cd3884e0e05beb99714fbf432e7 (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.go15
-rw-r--r--pkg/report/openbsd_test.go9
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": {