| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| | |
|
| |
|
|
| |
Include the link to the subsystem page on the dashboard.
|
| |
|
|
|
| |
The update_report API can be used to re-fill the missing report details
after a crash has already been sent to syzbot.
|
| |
|
|
|
| |
This will help optimize the detection and addition of missing fields to
the existing reports.
|
| |
|
|
|
|
|
| |
Modify job_poll never to return already started jobs.
Introduce a special job_reset API call to clear the "started" flag for
the specified list of managers.
|
| |
|
|
|
| |
If the original email thread is lost, it can be hard to get to the
original bug.
|
| | |
|
| |
|
|
|
|
|
|
|
|
| |
They will be used properly at some later time, for now we'll just keep
shortened guilty paths there.
Once we have the full subsystem support, all these values will just get
overridden by normal names.
Return subsystems in BugReports.
|
| |
|
|
|
| |
Bisection jobs can refer to other crashes/builds, so for the full bug
info we need complete BugReport objects.
|
| |
|
|
|
|
|
|
|
|
| |
Previously we could only report a single crash ID for each reporting
stage. That is enough for email reporting, but it unnecessarily
restricts the interface available to external reporting methods.
Instead of relying just on the Reported field of the Crash entity,
introduce the list of other entities that reference the Crash. It lets
us track the moment when the crash has been released by everyone else.
|
| |
|
|
|
|
|
| |
Introduce the /load_full_bug call that, for a given bug ID, returns
1) Bisection results
2) Similar crashes in other namespaces
3) A subset of most noteworthy crashes.
|
| |
|
|
|
|
|
|
| |
Accept patch testing requests not only via email, but also by a direct
dashboard API request.
Introduce a new /add_test_job API call.
Add tests that verify the expected flow and some side cases.
|
| |
|
|
|
|
|
|
|
|
| |
They are stored and handled in a similar way to build assets.
1) syz-manager uploads assets to the storage and reports download URLs
in the /report_crash request.
2) syz-ci manages crash assets deprecation.
3) dashboard includes crash assets in bug reports.
For now the only type is MountInRepro.
|
| |
|
|
|
| |
To simplify the extraction code, let's make segments non-overlapping
even before execution.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
| |
Reuse the existing patch testing mechanism to periodically re-check
existing reproducers. If a repro no longer works, mark it as such and
don't consider during bug obsoletion testing.
For obsoleted bugs, pass also a string argument specifying the reason
for the obsoletion. This will make email messages more user-friendly and
also let us later estimate the amount of no longer relevant bugs that we
had on the dashboard.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Asset is a file/attachment relevant for debugging a kernel crash or the
syzbot itself.
Dashboard keeps track of the uploaded assets and manages their lifetime.
Some of the assets are attached to the bug reports sent by syzkaller,
some (like html coverage report) are displayed on the web portal.
Two new API requests:
* add_build_assets -- let dashboard remember one more build-related
asset.
* needed_assets -- query the list of assets that are still needed by the
dashboard.
|
| |
|
|
|
| |
At the moment it's only possible to do by emulating http requests, which
looks like an overkill for simple query mocking in unit tests.
|
| |
|
|
|
|
|
| |
Receive the information, whether the crash log contains strace output,
from the syz-manager.
Adjust bug reporting email depending on that flag.
|
| |
|
|
| |
Permit empty hub_key to indicate oauth.
|
| |
|
|
| |
This will be easier to reuse as it is no longer http-specific.
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
| |
This will allow it to make a call to meta-server and abort early when
authentication by bearer token is impossible.
|
| |
|
|
|
|
|
| |
Save suppressed reports into a special single bucked "suppressed report".
This will allow some control and monitoring over frequency and will allow to see samples.
Fixes #1941
|
| |
|
|
| |
Fixes #1956
|
| |
|
|
| |
Update #1575
|
| |
|
|
|
| |
Add "#syz unfix" command that undoes "#syz fix" effects
and resets any existing fixing commits.
|
| |
|
|
|
|
|
|
| |
Return BugReport instead of LoadBugResp from load_bug API request.
LoadBugResp is some limited subset of info in BugReport (mostly),
it's useful to have just one type to describe bug with all needed info.
Update #2144
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Add the following fields to BugReport:
- bug status
- build id
- build time
- syzkaller commit
- crash time
- repro opts
Will be required to export info to KCIDB.
Update #2144
|
| |
|
|
|
|
|
|
|
|
|
|
| |
- Change syz-manager so that it will send machine info the first time a
crash occurs.
- Add a field in entities.Crash to store machine info.
- Add a field in dashapi.BugReport to store machine info.
- Change the HTML template and struct uiCrash to display machine info.
- Add a test to make sure that the link to machine info appears on the
webpage.
Update #466
|
| |
|
|
|
|
|
| |
Create struct Recipients to store a slice structs (RecipientInfo) of
email, default name, and if the user should be added to To or Cc when
sending the email. After this commit Commit::Cc and Crash::Maintainers
will become deprecated.
|
| |
|
|
|
|
|
|
| |
Some terms are normalised on the technical level
but may be oppressive on a societal level.
Replace them with more technically neutral terms.
See the following doc for a longer version:
https://tools.ietf.org/id/draft-knodel-terminology-00.html
|
| |
|
|
|
|
|
| |
Currently only ignores the commit that adds the Raw Gadget interface.
Requested here:
https://groups.google.com/g/syzkaller-bugs/c/sZUeGC3Fh-o/m/t_5cKPrMAQAJ
|
| |
|
|
|
|
|
|
|
| |
For context see:
https://groups.google.com/d/msg/syzkaller/9HxkC_hRP4M/MzFl4laADgAJ
Now if, say, linux-next, is build/boot-broken we can CC maintainers of the tree.
Fixes #1667
|
| |
|
|
| |
Fixes #1698
|
| |
|
|
|
| |
Some backport-only kernels may only be interested in fix bisections.
Allow enabling these separately.
|
| |
|
|
|
|
|
|
|
|
|
| |
They should have been detected by "same binary" logic.
But the problem is that we may use different compilers
for different commits and they switch exactly at release commits.
So we can build the release with a differnet compiler than the
rest of commits and then obviously it won't be "same binary".
Detect release commits separately.
Update #1271
|
| |
|
|
|
|
|
|
| |
Detect bisection to merge commits and to commits that don't affect
kernel binary (comments, other arches, whitespaces, etc).
Such bisections are not reported in emails (but shown on web).
Update #1271
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
* Modify mail_bisect_result.txt to allow for sending fix bisection
results.
* Modify BisectResult to have a Fix field; introduce selectBisect for
use within the template for choosing between BisectCause/BisectFix
fields.
* Modify bisectFromJob() to return BisectResult with Fix field set if
relevant.
* Modify the tests inside bisect_test.go to account for bisect fix
related reporting emails.
* Modify incomingMail() to ignore any emails from syzbot itself.
|
| |
|
|
|
|
|
|
|
| |
Separate kernel and syzkaller build failures.
Fix logic to understand when a build is fixed:
look if kernel/syzkaller commit changes to understand
if it's a new good build or re-upload of an old build.
Fixes #1014
|
| |
|
|
|
|
|
|
|
| |
There is a bit of a mess: dashboard expects the start commit
in build info, but syz-ci sends the resulting cause commit.
Moreover for inconclusive bisection the commit is not filled at all.
Fill start commit in build info on start.
Update #501
|
| |
|
|
|
|
|
|
|
| |
Add "#syz uncc" command as a safety handle.
The command allows sender to unsubscribe from all future communication on the bug.
Linus mentioned possibility of saying "I'm not the right person for this report"
in the context of bug reminders:
https://groups.google.com/d/msg/syzkaller/zYlQ-b-QPHQ/AJzpeObcBAAJ
|
| |
|
|
|
|
|
|
| |
Allow separate sets of managers for patch testing and for bisection.
This makes things more flexible on syz-ci deployment side.
Remove previous hacks for bisection deployment.
Update #501
|
| |
|
|
| |
Update #501
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This adds bulk of support for bisection to dashboard/app and syz-ci:
- APIs to send bisection jobs and accept results
- syz-ci logic to execute bisection jobs
- formatting of emails with results
- showing of results on dashboard
Some difficulties we have to overcome:
- since linux is frequently build/boot broken, lots of bisections are inconclusive,
need to present such results too
- git bisect is poorly suitable for automation, have to resort to output parsing (is output stable?)
- git bisect turns out to fail (exit with non-0 status) when bisection is inconclusive
(multiple potential cause commits)
- older syzkaller revisions can't be built with newer (broken) kernel header, e.g.:
ebtables.h:197:19: error: invalid conversion from ‘void*’ to ‘ebt_entry_target*’
- newer compilers produce more warnings and break old syzkaller builds, e.g.:
kvm.S.h:6:12: error: ‘kvm_asm64_vm86’ defined but not used [-Werror=unused-const-variable=]
- figuring relevant emails to CC from a commit is non-trivial:
besides commit author, there can be some emails in commit tags, or not,
which tags to use is an interesting question (some may include irrelevant emails)
we can also run get_maintainers.pl on the commit, but this can produce too wide
list if commit touches lots of files, it can also produce too small list,
and then we need to resort to blame
- for inconclusive bisection we probably don't need to include emails referenced
in the commits (there can be too many of these commits)
- need to be careful to exclude own syzbot email from commit CC list,
now syzbot emails are referenced in some commits (Reported-by/Tested-by/etc)
(can cause some kind of infinite recursion)
- lots of commits reference stable mailing list,
we should not include it in CC because it's referenced for backports rather then bug reports
- since we add new Bug entity fields which we use in queries,
whole datastore need to be upgrades to add the new field to index
- we must not discard the crash that was used for bisection
(treat it as a reported crash)
- bisection results need 2 forms of reports:
one when we add bisection results to already reported bug
another when we report a bug first time with bisection results
- when reporting a bug with bisection results we need to use the crash
that was used for bisection
- some fraction of bisections will probably fail with various errors
and we will need some mechanism to retry bisection after the root cause is resolved
this is not implemented yet
- linux-next is problematic for 2 reasons:
fix bisection can't possibly run on linux-next as commits are not reachable from HEAD
lots of commits are missing in linux-next (even in linux-next-history)
e.g. we have some c63e9e91a254a52 which is now missing in linux-next/linux-next-history
- older kernels can't be build with fresh gcc/binutils/perl/make/glibc
for now we have to stop at v3.9 (this only requires switching gcc several times along the way)
- kernels past v4.11 do not build with gcc 7 and 8 (undefined reference to `____ilog2_NaN')
- v4.1 and back have only compiler-gcc5.h
- v3.17 and back have only compiler-gcc4.h
- v3.6 and back do not have make olddefconfig
- compat socket calls can't be bisected past "x86/entry/syscalls: Wire up 32-bit
direct socket calls" (v4.10) because of
https://syzkaller.appspot.com/bug?id=b5b150e322d5f48c869bcf1528cdbee08d1421cb
- v2.6.28 and below does not work with modern make:
*** mixed implicit and normal rules: deprecated syntax
- v3.8 build fails:
Can't use 'defined(@array)' (Maybe you should just omit the defined()?) at kernel/timeconst.pl line 373.
kernel/Makefile:134: recipe for target 'kernel/timeconst.h' failed
- make 3.81 works for v2.6.28.
3.81 almost works with current HEAD, you need to run make twice because first run spuriously fails with:
- v2.6.28 with gcc-4.9.4 broken with:
include/linux/kvm.h:240:9: error: duplicate member ‘padding’
- but even defconfig fails:
VDSO arch/x86/vdso/vdso.so.dbg
gcc: error: elf_x86_64: No such file or directory
gcc: error: unrecognized command line option ‘-m’
It seems that we also need old binutils.
- for v3.8 and below we need perl-5.14.4.
Unfortunately this or any manually built perl doesn't work for later kernels:
Can't locate strict.pm in @INC
- kernels starting from 4.14 and older are boot broken:
https://lkml.org/lkml/2018/9/7/648
- kernels older than 4.12 are broken during netdev setup
(fixed by commit 675c8da049fd6556eb2d6cdd745fe812752f07a8)
Update #501
|
| |
|
|
|
|
|
| |
Extend BugReport with few fields that are needed by all reportings anyway.
This allows to not create and fill an almost identical object to pass to template.
Update #501
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Currently dashboard can only report new bugs and add reproducers
to already reported bugs.
This change adds infrastructure for the dashboard to actively act
on existing bugs in different ways. 4 new notifications (actions) added:
- dashboard can auto-upstream bugs from moderation after an embargo period
- dashboard can auto-upstream bugs if reporting criteria changes
(e.g. it reported a bug into moderation because there was no repro,
but then repro appears and the bug is automatically sent upstream)
- dashboard detects when a fixing commit does not appear in any tested trees
for too long and sends a notification about this
- dashboard detects stale bugs (last happened monts ago, no repro, no activity)
and auto-invalidates them
This will also be useful to send pings for old bugs and do other automation.
|