Dmitry Vyukov
3e16f33c65
vm: suppress "no output" and "lost connection" reports
2018-06-30 14:51:07 +02:00
Dmitry Vyukov
3c690e2e53
pkg/repro: ignore suppressed crashes
...
This looks like the simplest way to deal with suppressed crashes reported out of repro.
Fixes #645
2018-06-30 14:37:59 +02:00
Dmitry Vyukov
44594e6362
pkg/report: suppress fuzzer crashes on fuchsia
2018-06-30 13:59:52 +02:00
Dmitry Vyukov
2960589335
pkg/csource: account for different types of syscalls on fuchsia
2018-06-30 13:40:00 +02:00
Dmitry Vyukov
65c456e595
pkg/csource: don't use pthread_cond_timedwait for fuchsia
...
We removed it in executor, do the same in csource.
2018-06-30 13:32:05 +02:00
Dmitry Vyukov
5012ddc8eb
prog: detect when flags are a bitmask
2018-06-30 13:27:24 +02:00
Dmitry Vyukov
906b9e38f1
pkg/ipc: don't consider hang as failure
2018-06-30 13:21:47 +02:00
Dmitry Vyukov
1d788bb883
pkg/report: better detect hangs on fuchsia
2018-06-30 13:21:17 +02:00
Dmitry Vyukov
f7498af7af
prog: add stronger fallback signal
...
Also mixin resource constructors and some signature
of flags values for successful calls into fallback coverage.
2018-06-29 20:34:43 +02:00
Dmitry Vyukov
0c4b1960d0
pkg/ipc: suppress gometalinter warnings
2018-06-29 18:18:50 +02:00
Dmitry Vyukov
0a971ab1d0
syz-manager: implement fallback coverage report
2018-06-29 18:15:41 +02:00
Dmitry Vyukov
9dd8cf63e0
executor, pkg/ipc: support output over pipes
2018-06-29 16:33:07 +02:00
Dmitry Vyukov
c45c8c2a07
pkg/instance: fix Accept error check
2018-06-29 12:58:02 +02:00
Dmitry Vyukov
5c7ca877eb
pkg/vcs: fix fuchsia sandboxing
2018-06-29 12:11:46 +02:00
Dmitry Vyukov
bdac5e17f1
pkg/build: don't fail without compiler
...
Some OSes don't need a compiler.
Just return an empty string in such case.
2018-06-29 12:03:04 +02:00
Dmitry Vyukov
ca1f32d15a
pkg/ipc: cleanup binary copy
2018-06-29 11:58:22 +02:00
Dmitry Vyukov
ac5f183dc0
pkg/ipc: fix cleanup in test
...
Currently we first send on errs and then close env.
As the result process can exit before env.Close finishes,
which will leave garbage behind.
Close env before sending on errs.
2018-06-29 11:46:16 +02:00
Dmitry Vyukov
346edcb763
executor: fix pid check after fork
2018-06-29 11:45:59 +02:00
Dmitry Vyukov
7b45fa115b
pkg/csource: support fuchsia
...
Lots of assorted heavylifting to support csource on fuchsia.
2018-06-29 10:47:42 +02:00
Dmitry Vyukov
df42529884
pkg/ipc: use absolute path to start subprocess
...
fuchsia mishandles relative paths.
2018-06-29 10:46:25 +02:00
Dmitry Vyukov
68ce63c468
pkg/build: support fuchsia builds
2018-06-28 13:42:07 +02:00
Dmitry Vyukov
a2c1dcb323
pkg/report: implement fuchsia reporter
2018-06-27 19:44:00 +02:00
Dmitry Vyukov
919e77001d
pkg/vcs: add fuchsia support
...
For now only checking out and polling.
2018-06-27 14:56:46 +02:00
Dmitry Vyukov
58e8587f64
pkg/vcs: pave way for multi-vcs support
...
Wrap current git interface in abstract interface.
Provide constructor that create repo interface for the given os/vm.
2018-06-27 13:57:21 +02:00
Dmitry Vyukov
43da5e3a1b
pkg/vcs: move from pkg/git
...
Rename pkg/git to pkg/vcs because we need to support not only git.
2018-06-27 13:07:03 +02:00
Dmitry Vyukov
43e60f7e09
pkg/report: supporess another OOM for gvisor
2018-06-27 09:35:10 +02:00
Dmitry Vyukov
b0294c53d0
syz-fuzzer: partially revert "syz-fuzzer: fix gvisor testing"
...
This breaks patch testing on syz-ci as it can use older version of syz-fuzzer.
2018-06-26 16:42:22 +02:00
Dmitry Vyukov
be3706ff1e
pkg/build: better support for gvisor race build
...
Explicitly pass --features=race.
Expect linux_amd64_static_stripped as a potential output.
2018-06-26 15:36:46 +02:00
Dmitry Vyukov
089f11817e
syz-fuzzer: fix gvisor testing
...
Testing code wasn't ready to dial stdin.
Make it use the same logic rpc package uses
to connecto to host.
2018-06-26 14:12:43 +02:00
Dmitry Vyukov
e726bdf922
syz-manager: make rpc communication finer grained
...
RPC package does excessive caching per connection,
so if a larger object is ever sent in any direction,
rpc connection consumes large amount of memory persistently.
This makes manager consume gigs of memory with large
number of VMs and larger corpus/coverage.
Make all communication done in very limited batches.
2018-06-26 13:59:47 +02:00
Dmitry Vyukov
826b5aabc4
pkg/rpctype: compress rpc traffic
...
Both manager and fuzzer consume huge amount of memory
(lots of gigs for manager) due to excessive caching
in rpc connections. Compress traffic to reduce memory
consumption.
2018-06-26 13:52:36 +02:00
Dmitry Vyukov
3f9c293199
executor: don't crash during tun setup if ipv6 is not enabled
...
Some options that tun initialization sets up are optional.
Don't fail if they are missing in kernel.
2018-06-26 13:47:21 +02:00
Dmitry Vyukov
21e16efbf0
pkg/report: add suppressions for Go race OOMs
2018-06-23 10:13:12 +02:00
Dmitry Vyukov
802897bc33
pkg/instance: say that gvisor can create instances out of thin air
2018-06-23 10:12:35 +02:00
Dmitry Vyukov
665947c70a
pkg/build: support gvisor race binaries
2018-06-23 09:46:28 +02:00
Dmitry Vyukov
8e0b1c8525
pkg/ipc: add fallback signal only if normal signal is not enabled
...
It's possible to get no signal from normal coverage due to dedup,
in that case we don't want to add fallback coverage
because it can lead to corpus bloat.
2018-06-23 08:38:50 +02:00
Dmitry Vyukov
cb93a59bbf
pkg/report: fix gvisor segv reports
2018-06-22 20:01:10 +02:00
Dmitry Vyukov
67ce863533
pkg/build: save kernel config for gvisor
...
gvisor does not use it, but save it verbatim.
This can be useful to keep some additional description of the build.
2018-06-22 19:13:38 +02:00
Dmitry Vyukov
b5323c280f
pkg/report: add more gvisor formats
2018-06-22 17:38:37 +02:00
Dmitry Vyukov
c97f0d7a86
pkg/build: add gvisor support
2018-06-22 16:40:45 +02:00
Dmitry Vyukov
ea804a7120
pkg/build: pave way for multi-OS support
...
Unify kernel and image build, that distinction is really uninteresting.
Define interface that each OS needs to implement.
Add gvisor stub.
2018-06-22 16:40:45 +02:00
Dmitry Vyukov
8c9738f9c7
pkg/build: support bazel in CompilerIdentity
2018-06-22 16:40:45 +02:00
Dmitry Vyukov
94ef62054c
pkg/build: move from pkg/kernel
...
Rename pkg/kernel to pkg/build and prepare for multi-OS support.
2018-06-22 16:40:45 +02:00
Dmitry Vyukov
2a075d57ab
pkg/report: allow to specify suppressions per OS
...
Currently all (linux-specific) suppressions are hardcoded in mgrconfig.
This is very wrong. Move them to pkg/report and allow to specify per OS.
Add gvisor-specific suppressions.
This required a bit of refactoring. Introduce mgrconfig.KernelObj finally.
Make report.NewReporter and vm.Create accept mgrconfig directly
instead of passing it as multiple scattered args.
Remove tools/syz-parse and it always did the same as tools/syz-symbolize.
Simplify global vars in syz-manager/cover.go.
Create reporter eagerly in manager. Use sort.Slice more.
Overall -90 lines removed.
2018-06-22 16:40:45 +02:00
Dmitry Vyukov
c31f96a8c6
executor: rework fallback coverage
...
We have fallback coverage implmentation for freebsd.
1. It's broken after some recent changes.
2. We need it for fuchsia, windows, akaros, linux too.
3. It's painful to work with C code.
Move fallback coverage to ipc package,
fix it and provide for all OSes.
2018-06-22 16:40:45 +02:00
Dmitry Vyukov
14e6c472f5
vm/gvisor: add package
...
gvisor package provides support for gVisor, user-space kernel, testing.
See https://github.com/google/gvisor
2018-06-22 16:40:45 +02:00
Dmitry Vyukov
c71647f2cc
pkg/report: add gvisor support
2018-06-22 16:40:45 +02:00
Dmitry Vyukov
3cf0de82e9
pkg/report: move title sanitization from linux to common code
...
Stripping dynamic data (addresses, numbers) is required for all OSes.
Move this code from linux to common code.
2018-06-22 16:40:45 +02:00
Dmitry Vyukov
9a7d0a5412
pkg/report: pass vm type to NewReporter
...
For the case when VM type affects output.
Will be needed for gvisor. It is kinda linux, but kinda not.
2018-06-22 16:40:45 +02:00
Dmitry Vyukov
87bfb99cfe
vm: pass instance to MonitorExecution
...
It may need it later to try to obtain additional
diagnostic from hanged instances.
2018-06-22 16:40:45 +02:00