aboutsummaryrefslogtreecommitdiffstats
path: root/vm/vmimpl
diff options
context:
space:
mode:
Diffstat (limited to 'vm/vmimpl')
-rw-r--r--vm/vmimpl/freebsd.go32
1 files changed, 32 insertions, 0 deletions
diff --git a/vm/vmimpl/freebsd.go b/vm/vmimpl/freebsd.go
new file mode 100644
index 000000000..c6074028a
--- /dev/null
+++ b/vm/vmimpl/freebsd.go
@@ -0,0 +1,32 @@
+// 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) 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 ktr",
+ }
+ for _, c := range commands {
+ w.Write([]byte(c + "\n"))
+ time.Sleep(1 * time.Second)
+ }
+ return true
+}