| Commit message (Collapse) | Author | Age | Files | Lines |
| | |
|
| |
|
|
| |
Add calls to Close() from all locations that call Create().
|
| | |
|
| |
|
|
|
|
| |
Switch to flatrpc.ProgInfo.
Note: this disables syz-runtest and syz-verifier.
|
| | |
|
| |
|
|
|
|
| |
Remove things that are only needed for target VM communication:
conditional compression, timeout scaling, traffic stats.
To minimize diffs when we switch target VM communication to flatrpc.
|
| |
|
|
|
| |
Fix checking of Logf, it has string in 0-th arg.
Add checking of t.Errorf/Fatalf.
|
| |
|
|
|
|
| |
All callers of Run always call MonitorExecution right after it.
Combine these 2 methods. This allows to hide some implementation
details and simplify users of vm package.
|
| | |
|
| |
|
|
|
|
|
|
| |
RPC compression take up to 10% of CPU time in profiles,
but it's unlikely to be beneficial for local VM runs
(we are mostly copying memory in this case).
Enable RPC compression based on the VM type
(local VM don't use it, remove machines use it).
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* go.mod, vendor: remove unnecessary dependencies
Commands:
1. go mod tidy
2. go mod vendor
* go.mod, vendor: update cloud.google.com/go
Commands:
1. go get -u cloud.google.com/go
2. go mod tidy
3. go mod vendor
* go.mod, vendor: update cloud.google.com/*
Commands:
1. go get -u cloud.google.com/storage cloud.google.com/logging
2. go mod tidy
3. go mod vendor
* go.mod, .golangci.yml, vendor: update *lint*
Commands:
1. go get -u golang.org/x/tools github.com/golangci/golangci-lint@v1.47.0
2. go mod tidy
3. go mod vendor
4. edit .golangci.yml to suppress new errors (resolved in the same PR later)
* all: fix lint errors
hash.go: copy() recommended by gosimple
parse.go: ent is never nil
verifier.go: signal.Notify() with unbuffered channel is bad. Have no idea why.
* .golangci.yml: adjust godot rules
check-all is deprecated, but still work
if you're hesitating too - I'll remove this commit
|
| |
|
|
|
| |
Closes #3054
Ignore all the consequent failures in the program execution log.
Use only the first mismatch for analysis.
|
| | |
|
| |
|
|
| |
Removed atomic operations.
Added object level mutex.
|
| | |
|
| |
|
|
| |
This reverts commit 42718dd659525414aa0bf2794688ac94a32f7764.
Original PR had a race.
|
| | |
|
| |
|
|
|
|
|
|
|
| |
This commit replaces all `ioutil.TempDir` with `t.TempDir` in tests.
The directory created by `t.TempDir` is automatically removed when the
test and all its subtests complete.
Reference: https://pkg.go.dev/testing#T.TempDir
Signed-off-by: Eng Zer Jun <engzerjun@gmail.com>
|
| |
|
|
|
|
|
|
| |
Reused config parameter "config.vm.count".
Local fuzzing speed test result:
1 vm/pool => 380 programs/minute
2 vm/pool => 1050 programs/minute
4 vm/pool => 1600 programs/minute
8 vm/pool => 800 programs/minute
|
| |
|
|
| |
s/TotalMismatches/TotalCallMismatches/ for readability.
Add ExecErrorProgs to count failures.
|
| | |
|
| |
|
|
|
|
|
|
|
| |
(#2908)
Program verification logic is located in one function now.
VMs fetch programs from priority queues, not from the generator.
VMs operate the tasks, not programs now.
For the crashed VM - return error for every program in the queue
*fixed some road errors
|
| | |
|
| |
|
|
|
|
| |
Dehardcode syscall indexes from the test.
The indexes are not stable and change after descriptions change
in unrelated ways.
|
| |
|
| |
There is no need to use RPC prefix. It is already a part of the element path.
|
| |
|
|
|
| |
Currently we use int to aggregate statistics.
Counters update require the lock() operation.
Lets relax it and move to int64 + atomic.AddInt64().
|
| | |
|
| |
|
|
|
|
|
|
| |
test_utils.go must be parts of tests (used only by tests),
rather than of the binary itself.
Currently it is part of the binary since it does not end with _test.go.
This works with go tool, but confuses bazel+glaze which does not
want to add test_utils.go into the test target.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
The tests currently don't clean up old dir.
Clean up old test dirs.
There is a nice t.TempDir:
https://pkg.go.dev/testing#T.TempDir
but it's only Go 1.15.
Cleanup was added in 1.14:
https://pkg.go.dev/testing#T.Cleanup
And we have exactly 1.14 in tools/old-env/Dockerfile.
|
| |
|
|
|
| |
The current dir is not necessary writable and is generally a bad place for temp files.
Use a temp dir as scratch dir.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
| |
fix the VM resource leakage
some refactoring
|
| |
|
|
|
| |
* syz-verifier: fixes the crash of the app run w/o parameters
* syz-verifier: extend command line params description
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Currently a number of report post-processing activities are implemented as a
decorator over the interface that defines OS-specific implementations.
Following exactly the same interface is too restrictive in this case as adding
extra parameters to the post-processing forces the developer to adjust all
implementations thay may not need these parameters at all.
Untie the wrapper from the Reporter interface. Use a package-private
reporterImpl interface for the OS-specific implementations, while having an
exported Reporter structure. Make sure that Reporter is stored and
passed as a pointer.
|
| |
|
|
|
|
|
| |
When a mismatch is found in the results returned for a program, the program will be rerun on all the kernels to ensure
the mismatch is not flaky (i.e. it didn't occur because of some background activity or external state and will always
be returned when running the program). If the same mismatch occurs in all reruns, syz-verifier creates a report for
the program, otherwise it discards the program as being flaky
|
| | |
|
| |
|
|
|
|
|
| |
The field res from progInfo will store the result from Pool i at index
i. This will make verifying results easier, especially after introducing
reruns, as the result from a Pool will always be found at the same
position.
|
| |
|
|
|
|
|
| |
vmRunners holds what programs have been sent to each Runner. Previously,
entries would only be removed from this map when a VM crashes as the
programs were stored in a slice. Modified vmRunners to hold programs
as a map in order to easily query and delete the entries.
|
| | |
|
| |
|
|
|
|
|
| |
Increment the number of Mismatches in Stats only once when mismatches are found
for a system call, regardless of the number of kernels that returned mismatching
ReturnStates because otherwise the number of mismatches would be
incorrect and nondeterministic for more than two VMs.
|
| | |
|
| | |
|