diff options
| author | Aleksandr Nogikh <nogikh@google.com> | 2025-01-28 19:01:33 +0100 |
|---|---|---|
| committer | Aleksandr Nogikh <nogikh@google.com> | 2025-01-30 11:47:19 +0000 |
| commit | ec434200ebafacb1b16633f766a0501d79e9db99 (patch) | |
| tree | a5be6c84867c159d2ceb2b5b4b7ab253b341e5f6 /pkg/rpcserver/local.go | |
| parent | e961d16c3e35fd78acdfaf5531fc1c1365c24a97 (diff) | |
pkg/fuzzer: collect executor debug logs in tests
It should hopefully let us debug #5674.
Diffstat (limited to 'pkg/rpcserver/local.go')
| -rw-r--r-- | pkg/rpcserver/local.go | 14 |
1 files changed, 10 insertions, 4 deletions
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 } |
