diff options
| author | Aleksandr Nogikh <nogikh@google.com> | 2024-07-11 11:43:41 +0200 |
|---|---|---|
| committer | Aleksandr Nogikh <nogikh@google.com> | 2024-07-11 10:39:33 +0000 |
| commit | baf24fbe840b2b9fd49636f49fd6fa42f39290b9 (patch) | |
| tree | 84d4b385c05fc24bf66c3fd73f359ae4e65d8239 /pkg/rpcserver/rpcserver.go | |
| parent | eba8394c4eea3a25682631625fea564acc0c0356 (diff) | |
pkg/rpcserver: debug executor stalls
In some cases, the executor seems to be mysteriously silent when we were
awaiting a reply.
During pkg/runtest tests, give it 1 minute to prepare a reply, then try
to request the current state and abort the connection.
Diffstat (limited to 'pkg/rpcserver/rpcserver.go')
| -rw-r--r-- | pkg/rpcserver/rpcserver.go | 41 |
1 files changed, 22 insertions, 19 deletions
diff --git a/pkg/rpcserver/rpcserver.go b/pkg/rpcserver/rpcserver.go index a6cae67cd..85d4a2bd7 100644 --- a/pkg/rpcserver/rpcserver.go +++ b/pkg/rpcserver/rpcserver.go @@ -41,10 +41,12 @@ type Config struct { // Disabled for gVisor/Starnix which are not Linux. FilterSignal bool PrintMachineCheck bool - Procs int - Slowdown int - pcBase uint64 - localModules []*vminfo.KernelModule + // Abort early on syz-executor not replying to requests and print extra debugging information. + DebugTimeouts bool + Procs int + Slowdown int + pcBase uint64 + localModules []*vminfo.KernelModule } type Manager interface { @@ -393,21 +395,22 @@ func (serv *Server) printMachineCheck(checkFilesInfo []*flatrpc.FileInfo, enable func (serv *Server) CreateInstance(name string, injectExec chan<- bool, updInfo dispatcher.UpdateInfo) { runner := &Runner{ - source: serv.execSource, - cover: serv.cfg.Cover, - coverEdges: serv.cfg.UseCoverEdges, - filterSignal: serv.cfg.FilterSignal, - debug: serv.cfg.Debug, - sysTarget: serv.sysTarget, - injectExec: injectExec, - infoc: make(chan chan []byte), - requests: make(map[int64]*queue.Request), - executing: make(map[int64]bool), - lastExec: MakeLastExecuting(serv.cfg.Procs, 6), - rnd: rand.New(rand.NewSource(time.Now().UnixNano())), - stats: serv.runnerStats, - procs: serv.cfg.Procs, - updInfo: updInfo, + source: serv.execSource, + cover: serv.cfg.Cover, + coverEdges: serv.cfg.UseCoverEdges, + filterSignal: serv.cfg.FilterSignal, + debug: serv.cfg.Debug, + debugTimeouts: serv.cfg.DebugTimeouts, + sysTarget: serv.sysTarget, + injectExec: injectExec, + infoc: make(chan chan []byte), + requests: make(map[int64]*queue.Request), + executing: make(map[int64]bool), + lastExec: MakeLastExecuting(serv.cfg.Procs, 6), + rnd: rand.New(rand.NewSource(time.Now().UnixNano())), + stats: serv.runnerStats, + procs: serv.cfg.Procs, + updInfo: updInfo, } serv.mu.Lock() defer serv.mu.Unlock() |
