aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/rpcserver/rpcserver.go
diff options
context:
space:
mode:
authorAleksandr Nogikh <nogikh@google.com>2024-07-11 11:43:41 +0200
committerAleksandr Nogikh <nogikh@google.com>2024-07-11 10:39:33 +0000
commitbaf24fbe840b2b9fd49636f49fd6fa42f39290b9 (patch)
tree84d4b385c05fc24bf66c3fd73f359ae4e65d8239 /pkg/rpcserver/rpcserver.go
parenteba8394c4eea3a25682631625fea564acc0c0356 (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.go41
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()