diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2018-06-22 20:32:54 +0200 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2018-06-22 20:32:54 +0200 |
| commit | b9c7c31970e88d97e0d30554e778d35432d84d1d (patch) | |
| tree | 5ddf1bb424038229ec7561e82d547ba276061548 | |
| parent | cb93a59bbf1d3db1aa49e2cfb1bbabdca2f63e94 (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.go | 16 |
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 } |
