diff options
| author | Aleksandr Nogikh <nogikh@google.com> | 2024-01-03 18:41:44 +0100 |
|---|---|---|
| committer | Aleksandr Nogikh <nogikh@google.com> | 2024-01-10 12:06:51 +0000 |
| commit | b8b0c9f7d8f02415beab09246ddf66b021dfdc06 (patch) | |
| tree | e0d52eaa420ab82c4300f34eede999a9415cfbdc | |
| parent | 22263b07f5df14a974bcb00d286ab178891c0891 (diff) | |
syz-fuzzer: export pprof endpoints
This will let us have a better understanding of what's going on inside a
fuzzed VM.
| -rw-r--r-- | syz-fuzzer/fuzzer.go | 11 | ||||
| -rw-r--r-- | vm/vmimpl/vmimpl.go | 3 |
2 files changed, 14 insertions, 0 deletions
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 { |
