Documentation ¶
Index ¶
Constants ¶
const ( FlagDebug = uint64(1) << iota // debug output from executor FlagSignal // collect feedback signals (coverage) FlagThreaded // use multiple threads to mitigate blocked syscalls FlagCollide // collide syscalls to provoke data races FlagSandboxSetuid // impersonate nobody user FlagSandboxNamespace // use namespaces for sandboxing FlagEnableTun // initialize and use tun in executor FlagEnableFault // enable fault injection support )
Configuration flags for Config.Flags.
const ( FlagCollectCover = uint64(1) << iota // collect coverage FlagDedupCover // deduplicate coverage in executor FlagInjectFault // inject a fault in this execution (see ExecOpts) FlagCollectComps // collect KCOV comparisons )
Per-exec flags for ExecOpts.Flags:
Variables ¶
This section is empty.
Functions ¶
func GetCompMaps ¶
Types ¶
type CallInfo ¶
type CallInfo struct { Signal []uint32 // feedback signal, filled if FlagSignal is set Cover []uint32 // per-call coverage, filled if FlagSignal is set and cover == true, //if dedup == false, then cov effectively contains a trace, otherwise duplicates are removed Comps prog.CompMap // per-call comparison operands Errno int // call errno (0 if the call was successful) FaultInjected bool }
type Config ¶
type Config struct { // Flags are configuation flags, defined above. Flags uint64 // Timeout is the execution timeout for a single program. Timeout time.Duration // AbortSignal is the signal to send to the executor in error conditions. AbortSignal int // BufferSize is the size of the internal buffer for executor output. BufferSize uint64 }
Config is the configuration for Env.
func DefaultConfig ¶
type Env ¶
func (*Env) Exec ¶
func (env *Env) Exec(opts *ExecOpts, p *prog.Prog) (output []byte, info []CallInfo, failed, hanged bool, err0 error)
Exec starts executor binary to execute program p and returns information about the execution: output: process output info: per-call info failed: true if executor has detected a kernel bug hanged: program hanged and was killed err0: failed to start process, or executor has detected a logical error
type ExecutorFailure ¶
type ExecutorFailure string
ExecutorFailure is returned from MakeEnv or from env.Exec when executor terminates by calling fail function. This is considered a logical error (a failed assert).
func (ExecutorFailure) Error ¶
func (err ExecutorFailure) Error() string
type Gate ¶
type Gate struct {
// contains filtered or unexported fields
}
Gate limits concurrency level and window to the given value. Limitation of concurrency window means that if a very old activity is still running it will not let new activities to start even if concurrency level is low.