aboutsummaryrefslogtreecommitdiffstats
path: root/vm/vmimpl/freebsd.go
blob: 4272781ffb47f7d04b2fee77c8559e6e3f879ae7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
// Copyright 2018 syzkaller project authors. All rights reserved.
// Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.

package vmimpl

import (
	"io"
	"time"
)

// DiagnoseFreeBSD sends the debug commands to the given writer which
// is expected to be connected to a panicked FreeBSD kernel. If kernel
// just hanged, we've lost connection or detected some non-panic error,
// console still shows normal login prompt.
func DiagnoseFreeBSD(w io.Writer) ([]byte, bool) {
	commands := []string{
		"",
		"set $lines = 0",    // disable pagination
		"set $maxwidth = 0", // disable line continuation
		"show registers",
		"show proc",
		"ps",
		"show all locks",
		"show malloc",
		"show uma",
		"show all tcpcbs/l",
	}
	for _, c := range commands {
		w.Write([]byte(c + "\n"))
		time.Sleep(1 * time.Second)
	}
	return nil, true
}