aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/rpcserver
diff options
context:
space:
mode:
authorAleksandr Nogikh <nogikh@google.com>2025-01-28 19:01:33 +0100
committerAleksandr Nogikh <nogikh@google.com>2025-01-30 11:47:19 +0000
commitec434200ebafacb1b16633f766a0501d79e9db99 (patch)
treea5be6c84867c159d2ceb2b5b4b7ab253b341e5f6 /pkg/rpcserver
parente961d16c3e35fd78acdfaf5531fc1c1365c24a97 (diff)
pkg/fuzzer: collect executor debug logs in tests
It should hopefully let us debug #5674.
Diffstat (limited to 'pkg/rpcserver')
-rw-r--r--pkg/rpcserver/local.go14
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
}