aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2018-06-22 20:32:54 +0200
committerDmitry Vyukov <dvyukov@google.com>2018-06-22 20:32:54 +0200
commitb9c7c31970e88d97e0d30554e778d35432d84d1d (patch)
tree5ddf1bb424038229ec7561e82d547ba276061548
parentcb93a59bbf1d3db1aa49e2cfb1bbabdca2f63e94 (diff)
syz-fuzzer: prevent not output crashes during machine checking
Machine checking can be very slow on some machines (qemu without kvm, KMEMLEAK linux, etc), so print periodic heartbeats for vm.MonitorExecution so that it does not decide that we are dead.
-rw-r--r--syz-fuzzer/testing.go16
1 files changed, 16 insertions, 0 deletions
diff --git a/syz-fuzzer/testing.go b/syz-fuzzer/testing.go
index 5887c9bbc..f5f3158ab 100644
--- a/syz-fuzzer/testing.go
+++ b/syz-fuzzer/testing.go
@@ -41,6 +41,22 @@ func testImage(hostAddr string, args *checkArgs) {
}
func checkMachine(args *checkArgs) (*rpctype.CheckArgs, error) {
+ // Machine checking can be very slow on some machines (qemu without kvm, KMEMLEAK linux, etc),
+ // so print periodic heartbeats for vm.MonitorExecution so that it does not decide that we are dead.
+ done := make(chan bool)
+ defer close(done)
+ go func() {
+ ticker := time.NewTicker(3 * time.Second)
+ defer ticker.Stop()
+ for {
+ select {
+ case <-done:
+ return
+ case <-ticker.C:
+ fmt.Printf("executing program\n")
+ }
+ }
+ }()
if err := checkRevisions(args); err != nil {
return nil, err
}