From b8b0c9f7d8f02415beab09246ddf66b021dfdc06 Mon Sep 17 00:00:00 2001 From: Aleksandr Nogikh Date: Wed, 3 Jan 2024 18:41:44 +0100 Subject: syz-fuzzer: export pprof endpoints This will let us have a better understanding of what's going on inside a fuzzed VM. --- syz-fuzzer/fuzzer.go | 11 +++++++++++ vm/vmimpl/vmimpl.go | 3 +++ 2 files changed, 14 insertions(+) diff --git a/syz-fuzzer/fuzzer.go b/syz-fuzzer/fuzzer.go index f0b6d9c23..99d04f57f 100644 --- a/syz-fuzzer/fuzzer.go +++ b/syz-fuzzer/fuzzer.go @@ -7,6 +7,8 @@ import ( "flag" "fmt" "math/rand" + "net/http" + _ "net/http/pprof" "os" "runtime" "runtime/debug" @@ -28,6 +30,7 @@ import ( "github.com/google/syzkaller/prog" _ "github.com/google/syzkaller/sys" "github.com/google/syzkaller/sys/targets" + "github.com/google/syzkaller/vm/vmimpl" ) type Fuzzer struct { @@ -194,6 +197,14 @@ func main() { os.Exit(1) }() + // Necessary for pprof handlers. + go func() { + err := http.ListenAndServe(fmt.Sprintf("0.0.0.0:%v", vmimpl.PprofPort), nil) + if err != nil { + log.SyzFatalf("failed to setup a server: %v", err) + } + }() + checkArgs := &checkArgs{ target: target, sandbox: sandbox, diff --git a/vm/vmimpl/vmimpl.go b/vm/vmimpl/vmimpl.go index 0a4ada028..8b63ca77e 100644 --- a/vm/vmimpl/vmimpl.go +++ b/vm/vmimpl/vmimpl.go @@ -186,6 +186,9 @@ func Multiplex(cmd *exec.Cmd, merger *OutputMerger, console io.Closer, timeout t return merger.Output, errc, nil } +// On VMs, pprof will be listening to this port. +const PprofPort = 6060 + func RandomPort() int { n, err := rand.Int(rand.Reader, big.NewInt(64<<10-1<<10)) if err != nil { -- cgit mrf-deployment