| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
The parser in symbolizer was incorrectly handling values of 0x0-0xf.
Fixes #6290
|
| |
|
|
|
|
|
|
| |
1. recover the removed comment
2. unnecessary leading newline
3. unnecessary brackets
4. restore dropped "..."
5. use bytes.Equal instead of conversion to string
|
| |
|
|
| |
./tools/syz-env bin/golangci-lint run ./... --fix
|
| |
|
|
|
|
|
|
|
| |
There are numerous line_entries with a line number of 0 for
__sanitizer_cov_trace_pc.
Currently, if only one program counter (PC) is hit in the function and
the line number is 0 for that PC, the frame is ignored.
To accurately report function coverage, we should include the function
in such cases.
|
| |
|
|
| |
To simplify interface Read*Symbols were moved out from symbolizer.Symbolizer.
|
| | |
|
| | |
|
| |
|
|
|
| |
Fix checking of Logf, it has string in 0-th arg.
Add checking of t.Errorf/Fatalf.
|
| |
|
|
|
|
|
|
| |
Intern/deduplicate file/func strings created during symbolization.
There are lots and lots of duplicates.
In my local run syz-manager heap size jumps from 1.9G to 4.0G
are requesting /cover?jsonl=1 without this change, and from
1.9G to 2.9G with this change.
|
| |
|
|
|
|
|
|
|
| |
Use llvm-addr2line instead of addr2line if it's available.
llvm-addr2line seems to be way faster than llvm-addr2line
and consumes less memory on syzbot's vmlinux.
Also move the detection logic to sys/targets since that's
where we generally do this type of logic. This also allows
to reuse addr2line binary in other packages if needed.
|
| |
|
|
|
|
|
|
| |
When the same crash happens all over again,
we repeatedly symbolize the same PCs.
This is slow and blocks VM loop in the manager.
Cache PCs we already symbolize, we are likely
to symbolize them again.
|
| | |
|
| |
|
|
|
|
|
|
|
| |
The remaining checks (elf.SHF_ALLOC and elf.SHF_EXECINSTR) seem to a
good enough filter for matching symbols.
Additionally, there have already been cases when absolutely valid
functions ended up in SHF_WRITE sections:
https://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git/commit/?id=0fddb79bf283
|
| |
|
|
|
|
|
| |
Function sizes reported by the Linux kernel do not match symbol tables.
The kernel computes size of a symbol based on the start of the next symbol.
We need to do the same to match kernel sizes to be able to find the right
symbol across multiple symbols with the same name.
|
| |
|
|
|
| |
The checks assume that addr2line comes from binutils, but by default
this is not the case on FreeBSD.
|
| | |
|
| |
|
|
| |
Using debug/elf is better on all fronts: faster, simpler, no external deps.
|
| |
|
|
|
| |
As the --help message is localised, this check will fail on systems with
non english locales otherwise.
|
| | |
|
| |
|
|
| |
This reverts commit 69a06ca2b532ff4021a43fdead4e2ac1452a44c0.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
PC returned for dynamic loaded module (DLKM) is not
parsed in coverage page.
So the commit is to use DLKM modules' load address
to restore the PC and show coverage data of DLKM.
As the load address is written in cfg file, so kaslr
needs to be disabled.
And for linux target, load address is getting from
/proc/modules during instance setup.
For either manual or auto address setting case,
name and path are needed in config kernel_modules, where
name is module name on target.
path is module unstripped object path on host.
addr is decimal value of module load address on target.
Example of config:
"kernel_modules": [
{
"name": "nf_nat",
"path": "/usr/src/linux-source/net/netfilter/nf_nat.ko",
"addr": 18446744072637911040
}
]
|
| | |
|
| |
|
|
| |
In preparation to support big-endian architectures.
|
| |
|
|
|
| |
A good one. Lots of fixed comments are contributed by episodic contributors.
So it's good to catch these earlier.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Overall idea of netlink checking.
Currnetly we check netlink policies for common detectable mistakes.
First, we detect what looks like a netlink policy in our descriptions
(these are structs/unions only with nlattr/nlnext/nlnetw fields).
Then we find corresponding symbols (offset/size) in vmlinux using nm.
Then we read elf headers and locate where these symbols are in the rodata section.
Then read in the symbol data, which is an array of nla_policy structs.
These structs allow to easily figure out type/size of attributes.
Finally we compare our descriptions with the kernel policy description.
Update #590
|
| |
|
|
|
|
|
|
|
| |
On OpenBSD, nm(1) does not support the `-S' option.
The order of symbols from nm(1) varies between platforms, therefore rework the
test case to cope with that.
Fixes #723
|
| |
|
|
| |
The test fails on openbsd, and probably everything else other than linux.
|
| |
|
|
|
|
|
| |
The part that we want from gofmt is simplify (-s).
Fix all code that needs fixing.
Update #538
|
| |
|
|
| |
Fix typos, non-canonical code, remove dead code, etc.
|
| |
|
|
|
|
| |
When manager is stopped there are sometimes runaway qemu
processes still running. Set PDEATHSIG for all subprocesses.
We never need child processes outliving parents.
|
| |
|
|
| |
Pointed out by race detector.
|
| |
|