From ec434200ebafacb1b16633f766a0501d79e9db99 Mon Sep 17 00:00:00 2001 From: Aleksandr Nogikh Date: Tue, 28 Jan 2025 19:01:33 +0100 Subject: pkg/fuzzer: collect executor debug logs in tests It should hopefully let us debug #5674. --- pkg/rpcserver/local.go | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'pkg/rpcserver') diff --git a/pkg/rpcserver/local.go b/pkg/rpcserver/local.go index e4e128dcf..de6dba592 100644 --- a/pkg/rpcserver/local.go +++ b/pkg/rpcserver/local.go @@ -6,6 +6,7 @@ package rpcserver import ( "context" "fmt" + "io" "os" "os/exec" @@ -28,9 +29,11 @@ type LocalConfig struct { // Handle ctrl+C and exit. HandleInterrupts bool // Run executor under gdb. - GDB bool - MaxSignal []uint64 - CoverFilter []uint64 + GDB bool + // Can be used to intercept stdout/stderr output. + OutputWriter io.Writer + MaxSignal []uint64 + CoverFilter []uint64 // RunLocal exits when the context is cancelled. Context context.Context MachineChecked func(features flatrpc.Feature, syscalls map[*prog.Syscall]bool) queue.Source @@ -82,7 +85,10 @@ func RunLocal(cfg *LocalConfig) error { } cmd := exec.CommandContext(ctx, bin, args...) cmd.Dir = cfg.Dir - if cfg.Debug || cfg.GDB { + if cfg.OutputWriter != nil { + cmd.Stdout = cfg.OutputWriter + cmd.Stderr = cfg.OutputWriter + } else if cfg.Debug || cfg.GDB { cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr } -- cgit mrf-deployment