syzkaller: github.com/google/syzkaller/pkg/bisect Index | Files

package bisect

import "github.com/google/syzkaller/pkg/bisect"

Index

Package Files

bisect.go

Constants

const NumTests = 10 // number of tests we do per commit

type Config Uses

type Config struct {
    Trace     io.Writer
    Fix       bool
    BinDir    string
    DebugDir  string
    Kernel    KernelConfig
    Syzkaller SyzkallerConfig
    Repro     ReproConfig
    Manager   mgrconfig.Config
}

type KernelConfig Uses

type KernelConfig struct {
    Repo      string
    Branch    string
    Commit    string
    Cmdline   string
    Sysctl    string
    Config    []byte
    Userspace string
}

type ReproConfig Uses

type ReproConfig struct {
    Opts []byte
    Syz  []byte
    C    []byte
}

type Result Uses

type Result struct {
    Commits    []*vcs.Commit
    Report     *report.Report
    Commit     *vcs.Commit
    NoopChange bool
    IsRelease  bool
}

Result describes bisection result:

- if bisection is conclusive, the single cause/fix commit in Commits
  - for cause bisection report is the crash on the cause commit
  - for fix bisection report is nil
  - Commit is nil
  - NoopChange is set if the commit did not cause any change in the kernel binary
    (bisection result it most likely wrong)
  - Bisected to a release commit
- if bisection is inconclusive, range of potential cause/fix commits in Commits
  - report is nil in such case
  - Commit is nil
- if the crash still happens on the oldest release/HEAD (for cause/fix bisection correspondingly)
  - no commits in Commits
  - the crash report on the oldest release/HEAD;
  - Commit points to the oldest/latest commit where crash happens.

func Run Uses

func Run(cfg *Config) (*Result, error)

Run does the bisection and returns either the Result, or, if the crash is not reproduced on the start commit, an error.

type SyzkallerConfig Uses

type SyzkallerConfig struct {
    Repo         string
    Commit       string
    Descriptions string
}

Package bisect imports 10 packages (graph) and is imported by 2 packages. Updated 2019-12-15. Refresh now. Tools for package owners.