diff --git a/vm/bhyve/bhyve.go b/vm/bhyve/bhyve.go
index 36177da..0000e2c 100644
--- a/vm/bhyve/bhyve.go
+++ b/vm/bhyve/bhyve.go
@@ -49,6 +49,7 @@
 	merger   *vmimpl.OutputMerger
 	vmName   string
 	bhyve    *exec.Cmd
+	consolew io.WriteCloser
 }
 
 var ipRegex = regexp.MustCompile(`bound to (([0-9]+\.){3}[0-9]+) `)
@@ -177,17 +178,28 @@
 	if err != nil {
 		return err
 	}
+	inr, inw, err := osutil.LongPipe()
+	if err != nil {
+		outr.Close()
+		outw.Close()
+		return err
+	}
 
 	bhyve := osutil.Command("bhyve", bhyveArgs...)
+	bhyve.Stdin = inr
 	bhyve.Stdout = outw
 	bhyve.Stderr = outw
 	if err := bhyve.Start(); err != nil {
 		outr.Close()
 		outw.Close()
+		inr.Close()
+		inw.Close()
 		return err
 	}
 	outw.Close()
 	outw = nil
+	inst.consolew = inw
+	inr.Close()
 	inst.bhyve = bhyve
 
 	var tee io.Writer
@@ -245,6 +257,9 @@
 }
 
 func (inst *instance) Close() {
+	if inst.consolew != nil {
+		inst.consolew.Close()
+	}
 	if inst.bhyve != nil {
 		inst.bhyve.Process.Kill()
 		inst.bhyve.Wait()
@@ -331,7 +346,7 @@
 }
 
 func (inst *instance) Diagnose() ([]byte, bool) {
-	return nil, false
+	return nil, vmimpl.DiagnoseFreeBSD(inst.consolew)
 }
 
 func parseIP(output []byte) string {
diff --git a/vm/gce/gce.go b/vm/gce/gce.go
index cad34ad..98ab494 100644
--- a/vm/gce/gce.go
+++ b/vm/gce/gce.go
@@ -370,6 +370,9 @@
 }
 
 func (inst *instance) Diagnose() ([]byte, bool) {
+	if inst.env.OS == "freebsd" {
+		return nil, vmimpl.DiagnoseFreeBSD(inst.consolew)
+	}
 	if inst.env.OS == "openbsd" {
 		return nil, vmimpl.DiagnoseOpenBSD(inst.consolew)
 	}
diff --git a/vm/vmimpl/freebsd.go b/vm/vmimpl/freebsd.go
new file mode 100644
index 0000000..c607402
--- /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
+}
